1
0
forked from x/ContextOS
ContextOS/bin/boot.sh
shaoying 55b0c02e25 ops some
Change-Id: I75d31caba4e19130509a6ba80e781f2c8c3bdb7b
2019-03-31 20:29:38 +08:00

74 lines
1.8 KiB
Bash
Executable File

#! /bin/bash
export ctx_dev=${ctx_dev:="-"}
export ctx_root="/usr/local/context"
export ctx_home=~/context
export ctx_bin="bench"
log() {
echo -e $*
}
prepare() {
mkdir -p bin etc usr
mkdir -p var/log var/tmp var/run
}
install() {
[ -n "$1" ] && ctx_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 "ctx_dev: $ctx_dev\nGOOS: $GOOS\nGOARCH: $GOARCH"
ctx_dev=$ctx_dev/code/upgrade
wget -O etc/exit.shy $ctx_dev/exit_shy
wget -O etc/init.shy $ctx_dev/init_shy
wget -O etc/common.shy $ctx_dev/common_shy
wget -O bin/bench.new "$ctx_dev/bench?GOOS=$GOOS&GOARCH=$GOARCH" && chmod u+x bin/bench.new && mv bin/bench.new bin/bench
wget -O bin/boot.sh $ctx_dev/boot_sh && chmod u+x bin/boot.sh
wget -O bin/node.sh $ctx_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
cp -r var/log var/log_$(date +%Y%m%d_%H%M%S)
$ctx_bin "$@" 2>var/log/boot.log && break
log "restarting..." && sleep 3
done
}
dir=$ctx_root
dir=./
[ -d "$1" ] && dir=$1 && shift
[ -d "$dir" ] && cd $dir
[ -f bin/bench ] && ctx_bin=bin/bench
pid=`cat var/run/bench.pid`
log "dev:$ctx_dev\ndir: $dir\nbench: $ctx_bin\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