Run MPD_sima on unix socket
[sima-docker.git] / do
1 #!/bin/sh
2
3 # make output verbose
4 #set -o xtrace -o nounset
5
6 ROOT=$(dirname $(readlink -f $0))
7 SCRIPT=$(basename $0)
8
9 _inspect () {
10     # Auto generate help string
11     local help=$(awk '$1 ~ /^[a-z]+_?[a-z]+$/ && $2 == "()" { printf "%s|", $1 }' $0)
12     echo ${help%|}
13 }
14 _test () {
15     local cmds='docker awk'
16     for cmd in $cmds;do
17         type $cmd >/dev/null 2>&1 || { echo "Missing '$cmd' command, please install"; return 1; }
18     done
19 }
20 _test || exit 1
21 ###############################################################################
22
23 ICE_PORT=${ICEPORT:-8001}
24 MPD_PORT=${MPDPORT:-6601}
25 LISTEN=${LISTEN:-127.0.0.1}
26
27 _is_running () {
28     IS_RUNNING=$(docker inspect --format='{{.State.Running}}' sima 2>&1)
29     case $IS_RUNNING in
30         true)
31             return 0
32             ;;
33         false)
34             return 1
35             ;;
36         *)
37             #echo $IS_RUNNING
38             return 2
39             ;;
40     esac
41 }
42
43 build () {
44     # Build image with icecast
45     docker build -t kaliko/sima ${ROOT}/sima
46 }
47
48 log () {
49     _is_running && docker logs -f sima
50 }
51
52 discover () {
53     arg=${1:-false}
54     _is_running || { echo "No running container detected!"; exit 1; }
55     docker port sima | awk '$1 ~ /^8000\/tcp.*/ { printf "# HTTP running on: http://%s\n", $3 }'
56     docker port sima | awk '$1 ~ /^6600\/tcp.*/ { printf "# MPD running : %s\n", $3 }'
57 }
58
59 run () { start; }
60 start () {
61     # Start
62     _is_running
63     case $? in
64         0)
65             echo 'Already running container'
66             ;;
67         1)
68             echo 'Running the current sima container'
69             docker start sima
70             ;;
71         *)
72             test -z "${MUSIC}" && { echo "# Need a music directory to mount, please set MUSIC var:";
73                 echo "MUSIC=~Music ./do start";
74                 exit 1; }
75             echo 'launching a new sima container'
76             local options="-p ${LISTEN}:${ICE_PORT}:8000"
77             options="${options} -p ${LISTEN}:${MPD_PORT}:6600"
78             options="${options} --volume ${MUSIC}:/music:ro"
79             docker run ${options} --detach=true --name sima kaliko/sima
80             ;;
81     esac
82     discover
83 }
84
85 stop () {
86     _is_running && docker stop -t 3 sima
87 }
88
89 if [ $# -eq 0 ]
90 then
91     echo "${ROOT}/${SCRIPT} $(_inspect)"
92     exit
93 fi
94
95 $1