mirror of
https://github.com/DictXiong/dotfiles.git
synced 2024-11-24 08:27:03 +08:00
Dev (#8)
* use update.sh to update safely * add unknown command "version". available: update, force-update, reset, cd and replace tabs with spaces * bug fix * bug fix * uninstall will rm update.sh * new force-update * bug fix * remove thefuck just use `pls` * init post-log.py * update uuid filepath * update.sh will post log * dfs log * bug fix * bug fix * use logging * logging format * bug fix * standarlize the config path * bug fix * add ssh key: ltp2
This commit is contained in:
parent
bbeffe3313
commit
c834980b29
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
*.zwc
|
*.zwc
|
||||||
|
update.sh
|
||||||
|
|
|
@ -19,6 +19,8 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFO4k0tJ+Bfu95Uavg/5P3EXMKNcq+bMqaTqzkvRZ7ji
|
||||||
|
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN8g34WHLEix6Qt0J/ClYbZeb9wh+p1IOcZkz/vNbZrv ltp1/windows
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN8g34WHLEix6Qt0J/ClYbZeb9wh+p1IOcZkz/vNbZrv ltp1/windows
|
||||||
|
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBN24pvN1RMN+iSZyHPdyExA1Rvt8pdr3e6ih6iX+KrQ ltp2
|
||||||
|
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGZFTyR+R86fUpZBDkDR9yYzJpmeNsIv2CMHTh6EuEeq pc0/windows
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGZFTyR+R86fUpZBDkDR9yYzJpmeNsIv2CMHTh6EuEeq pc0/windows
|
||||||
|
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID8WHIpwdZl7+HIZfQpwIAhpxT1huI9sd6Ydeokilg5l pc1/windows
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID8WHIpwdZl7+HIZfQpwIAhpxT1huI9sd6Ydeokilg5l pc1/windows
|
||||||
|
|
29
.update.sh
Normal file
29
.update.sh
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export DOTFILES=$( cd "$( dirname "${BASH_SOURCE[0]:-${(%):-%x}}" )" && pwd )
|
||||||
|
# get the specified commit id
|
||||||
|
dfs_commit=$(curl -fsSL https://api.beardic.cn/get-var/dfs-commit-id)
|
||||||
|
if [[ ${#dfs_commit} != 40 ]]; then
|
||||||
|
echo "Error: invalid commit id."
|
||||||
|
python3 "${DOTFILES}/tools/post-log.py" "[ERROR] update.sh: invalid commit id: ${dfs_commit}"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
# fetch origin
|
||||||
|
cd $DOTFILES
|
||||||
|
git fetch
|
||||||
|
if [[ -n "$(git status -s)" ]]; then
|
||||||
|
echo "Error: directory not clean."
|
||||||
|
python3 "${DOTFILES}/tools/post-log.py" "[ERROR] update.sh: directory not clean"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
# update
|
||||||
|
if [[ "$(git rev-parse HEAD)" == "$dfs_commit" ]]; then
|
||||||
|
echo "Nothing to do."
|
||||||
|
python3 "${DOTFILES}/tools/post-log.py" "[INFO] update.sh: Nothing to do"
|
||||||
|
else
|
||||||
|
echo "Checking out to commit $dfs_commit ..."
|
||||||
|
git -c advice.detachedHead=false checkout $dfs_commit
|
||||||
|
cp ./.update.sh ./update.sh
|
||||||
|
chmod +x ./update.sh
|
||||||
|
python3 "${DOTFILES}/tools/post-log.py" "[INFO] update.sh: Checked out to commit $dfs_commit"
|
||||||
|
fi
|
19
.zshrc2
19
.zshrc2
|
@ -49,7 +49,6 @@ antigen_plugins=( \
|
||||||
"fzf" \
|
"fzf" \
|
||||||
"git" \
|
"git" \
|
||||||
"ripgrep" \
|
"ripgrep" \
|
||||||
"thefuck" \
|
|
||||||
"tmux" \
|
"tmux" \
|
||||||
"ufw" \
|
"ufw" \
|
||||||
"z" \
|
"z" \
|
||||||
|
@ -80,18 +79,26 @@ fi
|
||||||
dfs()
|
dfs()
|
||||||
{
|
{
|
||||||
case $1 in
|
case $1 in
|
||||||
update ) (cd "$DOTFILES" && git pull) ;;
|
update ) "$DOTFILES/update.sh" ;;
|
||||||
force-update ) (cd "$DOTFILES" && git fetch --all && git reset --hard origin/main && git pull) ;;
|
force-update ) (
|
||||||
|
cd "$DOTFILES"
|
||||||
|
git fetch --all
|
||||||
|
ref=$(git symbolic-ref --short HEAD 2> /dev/null) || ref=$(git rev-parse --short HEAD 2> /dev/null) || return 0
|
||||||
|
for b in $(git for-each-ref refs/heads --format='%(refname)') ; do git checkout ${b#refs/heads/} ; git pull --ff-only ; done
|
||||||
|
git checkout -c advice.detachedHead=false $ref)
|
||||||
|
;;
|
||||||
|
version ) (cd "$DOTFILES" && git rev-parse HEAD) ;;
|
||||||
reset )
|
reset )
|
||||||
antigen reset 1> /dev/null
|
antigen reset 1> /dev/null
|
||||||
rm -rf $HOME/.antigen
|
rm -rf $HOME/.antigen
|
||||||
$DOTFILES/install.sh -r
|
"$DOTFILES/install.sh" -r
|
||||||
dfs update
|
dfs update
|
||||||
$DOTFILES/install.sh -i
|
"$DOTFILES/install.sh" -i
|
||||||
echo 'Done. Please open a new shell to see the changes.'
|
echo 'Done. Please open a new shell to see the changes.'
|
||||||
;;
|
;;
|
||||||
cd ) cd "$DOTFILES" ;;
|
cd ) cd "$DOTFILES" ;;
|
||||||
* ) echo "unknown command \"$1\". available: update, force-update, reset, cd" ;;
|
log ) "$DOTFILES/tools/post-log.py" "$2" ;;
|
||||||
|
* ) echo "unknown command \"$1\". available: update, force-update, version, reset, cd, log" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
17
install.sh
17
install.sh
|
@ -96,7 +96,7 @@ if [[ ! $dotfile_path == ${home_slashes}* ]]; then
|
||||||
fi
|
fi
|
||||||
dotfile_home_path=${dotfile_path/${home_slashes}/\~}
|
dotfile_home_path=${dotfile_path/${home_slashes}/\~}
|
||||||
dotfile_relative_path=${dotfile_path#${home_slashes}\/}
|
dotfile_relative_path=${dotfile_path#${home_slashes}\/}
|
||||||
crontab_job="0 * * * * cd ${dotfile_path} && env git pull"
|
crontab_job="0 * * * * ${dotfile_path}/update.sh"
|
||||||
|
|
||||||
ask_for_yN()
|
ask_for_yN()
|
||||||
{
|
{
|
||||||
|
@ -209,7 +209,21 @@ install_vim_vundle(){
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
install_update(){
|
||||||
|
fmt_note "installing update.sh ..."
|
||||||
|
cp "${dotfile_path}/.update.sh" "${dotfile_path}/update.sh"
|
||||||
|
chmod +x "${dotfile_path}/update.sh"
|
||||||
|
fmt_note "running update.sh ..."
|
||||||
|
${dotfile_path}/update.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
uninstall_update(){
|
||||||
|
fmt_note "removing update.sh ..."
|
||||||
|
rm "${dotfile_path}/update.sh"
|
||||||
|
}
|
||||||
|
|
||||||
install(){
|
install(){
|
||||||
|
install_update
|
||||||
install_crontab
|
install_crontab
|
||||||
insert_if_not_exist "${HOME}/.zshrc" "source ${dotfile_home_path}/.zshrc2"
|
insert_if_not_exist "${HOME}/.zshrc" "source ${dotfile_home_path}/.zshrc2"
|
||||||
insert_if_not_exist "${HOME}/.tmux.conf" "source-file ${dotfile_home_path}/.tmux.conf2"
|
insert_if_not_exist "${HOME}/.tmux.conf" "source-file ${dotfile_home_path}/.tmux.conf2"
|
||||||
|
@ -225,6 +239,7 @@ install(){
|
||||||
uninstall(){
|
uninstall(){
|
||||||
ask_for_yN "do you really want to uninstall?"
|
ask_for_yN "do you really want to uninstall?"
|
||||||
if [[ $? == 1 ]]; then
|
if [[ $? == 1 ]]; then
|
||||||
|
uninstall_update
|
||||||
uninstall_crontab
|
uninstall_crontab
|
||||||
delete_if_exist "${HOME}/.zshrc" "source ${dotfile_home_path}/.zshrc2"
|
delete_if_exist "${HOME}/.zshrc" "source ${dotfile_home_path}/.zshrc2"
|
||||||
delete_if_exist "${HOME}/.tmux.conf" "source-file ${dotfile_home_path}/.tmux.conf2"
|
delete_if_exist "${HOME}/.tmux.conf" "source-file ${dotfile_home_path}/.tmux.conf2"
|
||||||
|
|
72
tools/post-log.py
Executable file
72
tools/post-log.py
Executable file
|
@ -0,0 +1,72 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import os, uuid, socket, argparse, logging
|
||||||
|
|
||||||
|
namespace = uuid.UUID("cc23b903-1993-44eb-9c90-48bd841eeac3")
|
||||||
|
logging.basicConfig(level=logging.INFO, format="[%(filename)s:%(lineno)d][%(levelname)s] %(message)s")
|
||||||
|
|
||||||
|
try:
|
||||||
|
import requests
|
||||||
|
except ImportError:
|
||||||
|
logging.fatal("Please install requests module")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def get_uuid_raw() -> str:
|
||||||
|
possible_uuid_files = [
|
||||||
|
"/var/lib/dbus/machine-id",
|
||||||
|
"/etc/machine-id",
|
||||||
|
os.path.join(os.path.expanduser('~'), ".config/dotfiles/uuid"),
|
||||||
|
]
|
||||||
|
for i in possible_uuid_files:
|
||||||
|
if os.path.exists(i):
|
||||||
|
with open(i, "r") as f:
|
||||||
|
return f.read().strip()
|
||||||
|
if not os.path.exists(os.path.dirname(possible_uuid_files[-1])):
|
||||||
|
os.makedirs(os.path.dirname(possible_uuid_files[-1]))
|
||||||
|
with open(possible_uuid_files[-1], 'w') as f:
|
||||||
|
ans = str(uuid.uuid4())
|
||||||
|
f.write(ans)
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
def get_uuid() -> str:
|
||||||
|
return str(uuid.uuid5(namespace, get_uuid_raw()))
|
||||||
|
|
||||||
|
|
||||||
|
def get_hostname() -> str:
|
||||||
|
ans = socket.gethostname()
|
||||||
|
if '-' not in ans:
|
||||||
|
ans += "-ibd-ink"
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
def post_log(url:str, hostname:str, uuid:str, content:str):
|
||||||
|
ans = requests.post(url, params={"hostname": hostname, "uuid": uuid}, data=content)
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description="post log to server")
|
||||||
|
parser.add_argument("-u", "--url", help="url to post to", default="https://api.beardic.cn/post-log")
|
||||||
|
parser.add_argument("content")
|
||||||
|
args = parser.parse_args()
|
||||||
|
url = args.url
|
||||||
|
content = args.content
|
||||||
|
hostname = get_hostname()
|
||||||
|
uuid = get_uuid()
|
||||||
|
content=content.strip()
|
||||||
|
if not content:
|
||||||
|
logging.error("empty log content")
|
||||||
|
exit(1)
|
||||||
|
resp = post_log(url, hostname, uuid, content)
|
||||||
|
if resp.status_code == 200:
|
||||||
|
logging.info("200 ok")
|
||||||
|
exit(0)
|
||||||
|
elif resp.status_code == 403:
|
||||||
|
logging.error("403 forbidden")
|
||||||
|
logging.info("you may need to register your hostname and uuid")
|
||||||
|
else:
|
||||||
|
logging.error("unknown error ")
|
||||||
|
logging.error(f"{resp.status_code}: {resp.text}")
|
||||||
|
logging.info(f"hostname: {hostname}, uuid: {uuid}")
|
||||||
|
exit(1)
|
Loading…
Reference in New Issue
Block a user