33SVC_NAME=" {{SvcNameVar}}"
44SVC_DESCRIPTION=" {{SvcDescription}}"
55
6+ user_id=` id -u`
7+
8+ if [ $user_id -ne 0 ]; then
9+ echo " Must run as sudo"
10+ exit 1
11+ fi
12+
613SVC_CMD=$1
714AGENT_ROOT=` pwd`
815
9- PLIST_PATH=${HOME} /Library/LaunchAgents/${SVC_NAME} .plist
16+ LAUNCH_PATH=" ${HOME} /Library/LaunchAgents"
17+ PLIST_PATH=" ${LAUNCH_PATH} /${SVC_NAME} .plist"
1018TEMPLATE_PATH=./bin/vsts.agent.plist.template
1119TEMP_PATH=./bin/vsts.agent.plist.temp
1220CONFIG_PATH=.Service
2533function install()
2634{
2735 echo " Creating launch agent in ${PLIST_PATH} "
36+
37+ if [ ! -d " ${LAUNCH_PATH} " ]; then
38+ failed " ${LAUNCH_PATH} does not exist. OSX system dir expected"
39+ fi
40+
2841 if [ -f " ${PLIST_PATH} " ]; then
2942 failed " error: exists ${PLIST_PATH} "
3043 fi
3144
32- if [ -f " " ]; then
45+ if [ -f " ${TEMP_PATH} " ]; then
3346 rm " ${TEMP_PATH} "
3447 fi
3548
3649 log_path=" ${HOME} /Library/Logs/${SVC_NAME} "
37- echo " creating ${log_path} "
50+ echo " Creating ${log_path} "
3851 mkdir -p " ${log_path} "
39- chown " ${USER} " " ${log_path} "
52+ chown ${SUDO_UID :- $UID } : ${SUDO_GID} " ${log_path} "
4053
41- sed " s/{{User}}/$USER /g; s/{{SvcName}}/$SVC_NAME /g; s@{{AgentRoot}}@${AGENT_ROOT} @g; s@{{UserHome}}@$HOME @g;" " ${TEMPLATE_PATH} " > " ${TEMP_PATH} " || failed " failed to create replacement temp file"
54+ echo Creating ${PLIST_PATH}
55+ sed " s/{{User}}/${SUDO_USER:- $USER } /g; s/{{SvcName}}/$SVC_NAME /g; s@{{AgentRoot}}@${AGENT_ROOT} @g; s@{{UserHome}}@$HOME @g;" " ${TEMPLATE_PATH} " > " ${TEMP_PATH} " || failed " failed to create replacement temp file"
4256 cp " ${TEMP_PATH} " " ${PLIST_PATH} " || " failed to copy plist"
57+ chown ${SUDO_UID:- $UID } :${SUDO_GID} " ${PLIST_PATH} "
58+
59+ # Since we started with sudo, runsvc.sh will be owned by root. Change this to current login user.
60+ echo Creating runsvc.sh
4361 cp ./bin/runsvc.sh ./runsvc.sh
62+ chown ${SUDO_UID:- $UID } :${SUDO_GID} ./runsvc.sh
4463 chmod 755 ./runsvc.sh
4564
46- echo '
47- {
48- "RunAsService": true,
49- "ServiceName": "' ${SVC_NAME} ' ",
50- "ServiceDisplayName": "' ${SVC_DESCRIPTION} ' "
51- }
52- ' > ${CONFIG_PATH}
65+ echo Creating ${CONFIG_PATH}
66+ echo " ${PLIST_PATH} " > ${CONFIG_PATH}
67+ chown ${SUDO_UID:- $UID } :${SUDO_GID} ${CONFIG_PATH}
68+
69+ echo " svc install complete"
5370}
5471
5572function start()
5673{
57- launchctl load -w " ${PLIST_PATH} " || " failed to load ${PLIST_PATH} "
74+ echo " starting ${SVC_NAME} "
75+ sudo -u " ${SUDO_USER} " launchctl load -w " ${PLIST_PATH} " || " failed to load ${PLIST_PATH} "
5876 status
5977}
6078
6179function stop()
6280{
63- launchctl unload " ${PLIST_PATH} " || " failed to unload ${PLIST_PATH} "
81+ echo " stopping ${SVC_NAME} "
82+ sudo -u " ${SUDO_USER} " launchctl unload " ${PLIST_PATH} " || " failed to unload ${PLIST_PATH} "
6483 status
6584}
6685
6786function uninstall()
6887{
88+ echo " uninstalling ${SVC_NAME} "
6989 stop
7090 rm " ${PLIST_PATH} "
7191 if [ -f " ${CONFIG_PATH} " ]; then
@@ -75,6 +95,7 @@ function uninstall()
7595
7696function status()
7797{
98+ echo " status ${SVC_NAME} :"
7899 if [ -f " ${PLIST_PATH} " ]; then
79100 echo
80101 echo " ${PLIST_PATH} "
@@ -86,7 +107,7 @@ function status()
86107 fi
87108
88109 echo
89- status_out=` launchctl list | grep " ${SVC_NAME} " `
110+ status_out=` sudo -u " ${SUDO_USER} " launchctl list | grep " ${SVC_NAME} " `
90111 if [ ! -z " $status_out " ]; then
91112 echo Started:
92113 echo $status_out
0 commit comments