mirror of
https://github.com/DictXiong/dotfiles.git
synced 2026-05-11 04:26:54 +08:00
* common.sh: export vars in env; zshrc: gdebug
* fix error when locale not exists
* DFS_COLOR
* common.sh: parse args automatically
* ci: test common.sh getopts
* common.sh: argparser supports spaces
* ciot: init
* ciot -> diot; remove sibd, sob and snasp
* rename diot -> riot
* update home0 ssh pubkey; fix ci temperarily
* gdebug will record time
* gdebug supports empty; --dry-run wip
* get.dotfiles.cn
* bug fix (Thu Jan 5 20:53:58 CST 2023)
* fix ci
* fix ci
* install.sh: -d will set -x
* ci: -asl
* getdfs: install for another user using -u <uname>
* try fix when su doesnot exist
* bug fix (Thu Jan 5 22:58:40 CST 2023)
* bug fix (Thu Jan 5 22:59:33 CST 2023)
* introduce SUDOE and so debug
* ask_for_yn now use stdout to return
* getdfs: support multiple users
* install.sh: -x to set dfs config; ci
* fix ci
* bug fix (Fri Jan 6 15:11:24 CST 2023)
* auto-detect DFS_NO_WALL
* bug fix (Fri Jan 6 15:43:25 CST 2023)
* getdfs: ${repo}
* bug fix (Fri Jan 6 16:08:41 CST 2023)
* getdfs: prompt user
Co-authored-by: xiongdian.me <xiongdian.me@bytedance.com>
46 lines
1.5 KiB
Bash
46 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
THIS_DIR=$( cd "$( dirname "${BASH_SOURCE[0]:-${(%):-%x}}" )" && pwd )
|
|
THIS_FILE=$(basename "${BASH_SOURCE}")
|
|
source "$THIS_DIR/tools/common.sh"
|
|
|
|
DFS_UPDATED_RET=${DFS_UPDATED_RET:-0}
|
|
DFS_UPDATE_CHANNEL=${DFS_UPDATE_CHANNEL:-"main"}
|
|
|
|
# fetch origin
|
|
cd $DOTFILES
|
|
git fetch --all --prune
|
|
if [[ -n "$(git status -s)" ]]; then
|
|
fmt_error "directory not clean"
|
|
apost_beacon "dfs.dirty"
|
|
exit
|
|
fi
|
|
|
|
# get the specified commit id
|
|
case $DFS_UPDATE_CHANNEL in
|
|
"main" ) DFS_COMMIT=$(curl -fsSL https://api.beardic.cn/get-var/dfs-commit-id) ;;
|
|
"dev" ) DFS_COMMIT=$(git rev-parse origin/dev 2> /dev/null) || DFS_COMMIT=$(git rev-parse origin/main) ;;
|
|
"latest" ) DFS_COMMIT=$(git for-each-ref --sort=-committerdate refs/heads refs/remotes --format='%(objectname)' | head -n 1) ;;
|
|
* ) fmt_fatal "invalid update channel: $DFS_UPDATE_CHANNEL" ;;
|
|
esac
|
|
if [[ ${#DFS_COMMIT} != 40 ]]; then
|
|
fmt_error "invalid commit id"
|
|
apost_beacon "dfs.invalid-commit"
|
|
apost_log "ERROR" "$THIS_FILE" "invalid commit id: ${DFS_COMMIT}"
|
|
exit
|
|
fi
|
|
|
|
# update
|
|
if [[ "$(git rev-parse HEAD)" == "$DFS_COMMIT" ]]; then
|
|
fmt_info "nothing to do"
|
|
else
|
|
fmt_info "checking out to commit $DFS_COMMIT ..."
|
|
if [[ -z "$DFS_DEV" || "$DFS_DEV" == "0" ]]; then
|
|
post_beacon "dfs.updated"
|
|
git -c advice.detachedHead=false checkout $DFS_COMMIT
|
|
cp ./.update.sh ./update.sh && chmod +x ./update.sh && exit $DFS_UPDATED_RET
|
|
else
|
|
fmt_warning "won't really checkout in dev mode"
|
|
fi
|
|
fi
|