update
This commit is contained in:
1 parent
bd4c7b8fef
commit
9c6408ef92
1 file changed
+100
Executable
+100
@@ -0,0 +1,100 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
main(){
|
||||
os='';
|
||||
arch='';
|
||||
case $(uname) in
|
||||
Linux)
|
||||
os='linux';
|
||||
case $(uname -m) in
|
||||
i386 | i686) arch='386' ;;
|
||||
x86_64 | amd64) arch='amd64' ;;
|
||||
armv8 | arm64 | aarch64) arch='arm64' ;;
|
||||
*) echo 'unsupported CPU' && exit 1 ;;
|
||||
esac;
|
||||
;;
|
||||
*)
|
||||
echo 'unsupported OS' && exit 1 ;;
|
||||
esac;
|
||||
build_arch=$os_$arch;
|
||||
|
||||
if [ -z "$PROG_PATH" ] || [ -z "$PROG_NAME" ] || [ -z "$REPO" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
echo "Update for $REPO"
|
||||
api_url="https://api.github.com/repos/$REPO/releases/latest"
|
||||
dl_url=$(curl -sSf $api_url | grep $build_arch | grep browser_download_url | cut -d '"' -f 4)
|
||||
|
||||
curr_ver=$($PROG_PATH/$PROG_NAME -v)
|
||||
if (echo $dl_url | grep $curr_ver) >/dev/null 2>&1; then
|
||||
echo "Already latest version!"
|
||||
else
|
||||
tmp_dir="/tmp/$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)"
|
||||
mkdir -p "$tmp_dir"
|
||||
pushd "$tmp_dir" >/dev/null
|
||||
ext=$(echo $dl_url | awk -F'.' '{print $NF}')
|
||||
if (echo $ext | grep -i zip) >/dev/null 2>&1; then
|
||||
curl -Sfo pkg.zip "$dl_url"
|
||||
unzip -o pkg.zip
|
||||
else
|
||||
curl -Sfo pkg.tar.$ext "$dl_url"
|
||||
tar -xvf pkg.tar.$ext
|
||||
fi
|
||||
if [ ! -z "$PKG_DIR" ]; then
|
||||
cd $PKG_DIR
|
||||
fi
|
||||
cp -f "$PROG_NAME" "$PROG_PATH/"
|
||||
|
||||
echo "Update Complete ($curr_ver -> $($PROG_PATH/$PROG_NAME -v))!"
|
||||
popd >/dev/null
|
||||
rm -rf "$tmp_dir"
|
||||
if [ ! -z "$SRV_NAME" ]; then
|
||||
systemctl restart $SRV_NAME
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
usage(){
|
||||
echo "Usage: $0 [OPTIONS]";
|
||||
echo "Options:";
|
||||
echo " -p <PATH> Program path";
|
||||
echo " -n <NAME> Program name";
|
||||
echo " -r <REPO> Github repo";
|
||||
echo " -d <DIR> Dir inside package";
|
||||
echo " -s <SERVICE> Service name";
|
||||
}
|
||||
|
||||
PROG_PATH=
|
||||
PROG_NAME=
|
||||
REPO=
|
||||
PKG_DIR=
|
||||
SRV_NAME=
|
||||
while getopts ":p:n:r:d:s:" OPT; do
|
||||
case $OPT in
|
||||
p)
|
||||
PROG_PATH=$OPTARG;
|
||||
;;
|
||||
n)
|
||||
PROG_NAME=$OPTARG;
|
||||
;;
|
||||
r)
|
||||
REPO=$OPTARG;
|
||||
;;
|
||||
d)
|
||||
PKG_DIR=$OPTARG;
|
||||
;;
|
||||
s)
|
||||
SRV_NAME=$OPTARG;
|
||||
;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument.";
|
||||
exit 1;;
|
||||
?)
|
||||
echo "Invalid Option: -$OPTARG";
|
||||
usage;
|
||||
exit 1;;
|
||||
esac;
|
||||
done;
|
||||
|
||||
main
|
||||
Reference in new issue
Block a user