1
0
forked from x/ContextOS
ContextOS/bin/boot.sh
2019-02-02 21:05:03 +08:00

72 lines
1.6 KiB
Bash
Executable File

#! /bin/bash
export dev="https://shylinux.com"
export box_root="/usr/local/context"
export box_home="~/context"
bench="bench"
log() {
echo -e $*
}
prepare() {
mkdir -p bin etc usr
mkdir -p var/log var/tmp var/run
}
install() {
[ -n "$1" ] && dev=$1 && shift
case `uname -s` in
"Darwin") GOOS=darwin GOARCH=amd64;;
*) GOOS=linux GOARCH=386;;
esac
case `uname -m` in
"x86_64") GOARCH=amd64;;
"armv7l") GOARCH=arm;;
esac
log "dev: $dev\nGOOS: $GOOS\nGOARCH: $GOARCH"
dev=$dev/code/upgrade
wget -O etc/exit.shy $dev/exit_shy
wget -O etc/init.shy $dev/init_shy
wget -O etc/common.shy $dev/common_shy
wget -O bin/bench "$dev/bench?GOOS=$GOOS&GOARCH=$GOARCH" && chmod u+x bin/bench
wget -O bin/boot.sh $dev/boot_sh && chmod u+x bin/boot.sh
wget -O bin/node.sh $dev/node_sh && chmod u+x bin/node.sh
}
state() {
md=md5sum && [ `uname -s` = "Darwin" ] && md=md5
for file in bin/node.sh bin/boot.sh bin/bench etc/init.shy etc/common.shy etc/exit.shy; do
echo `$md $file`
done
}
action() {
log "kill" $1 && kill -$1 $pid
}
main() {
while true; do
$bench "$@" 2>var/log/boot.log && break
log "restarting..." && sleep 3
done
}
dir=$box_root
[ -d "$1" ] && dir=$1 && shift
[ -d "$dir" ] && cd $dir
[ -f bin/bench ] && bench=bin/bench
pid=`cat var/run/bench.pid`
log "dir: $dir\nbench: $bench\npid: $pid"
case $1 in
install) shift; prepare && install "$@";;
start|"") shift; prepare && main "$@";;
state) state;;
stop) action QUIT;;
restart) action USR1;;
upgrade) action USR2;;
esac