3
3
SVC_NAME=" {{SvcNameVar}}"
4
4
SVC_DESCRIPTION=" {{SvcDescription}}"
5
5
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
+
6
13
SVC_CMD=$1
7
14
AGENT_ROOT=` pwd`
8
15
9
- PLIST_PATH=${HOME} /Library/LaunchAgents/${SVC_NAME} .plist
16
+ LAUNCH_PATH=" ${HOME} /Library/LaunchAgents"
17
+ PLIST_PATH=" ${LAUNCH_PATH} /${SVC_NAME} .plist"
10
18
TEMPLATE_PATH=./bin/vsts.agent.plist.template
11
19
TEMP_PATH=./bin/vsts.agent.plist.temp
12
20
CONFIG_PATH=.Service
25
33
function install()
26
34
{
27
35
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
+
28
41
if [ -f " ${PLIST_PATH} " ]; then
29
42
failed " error: exists ${PLIST_PATH} "
30
43
fi
31
44
32
- if [ -f " " ]; then
45
+ if [ -f " ${TEMP_PATH} " ]; then
33
46
rm " ${TEMP_PATH} "
34
47
fi
35
48
36
49
log_path=" ${HOME} /Library/Logs/${SVC_NAME} "
37
- echo " creating ${log_path} "
50
+ echo " Creating ${log_path} "
38
51
mkdir -p " ${log_path} "
39
- chown " ${USER} " " ${log_path} "
52
+ chown ${SUDO_UID :- $UID } : ${SUDO_GID} " ${log_path} "
40
53
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"
42
56
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
43
61
cp ./bin/runsvc.sh ./runsvc.sh
62
+ chown ${SUDO_UID:- $UID } :${SUDO_GID} ./runsvc.sh
44
63
chmod 755 ./runsvc.sh
45
64
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"
53
70
}
54
71
55
72
function start()
56
73
{
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} "
58
76
status
59
77
}
60
78
61
79
function stop()
62
80
{
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} "
64
83
status
65
84
}
66
85
67
86
function uninstall()
68
87
{
88
+ echo " uninstalling ${SVC_NAME} "
69
89
stop
70
90
rm " ${PLIST_PATH} "
71
91
if [ -f " ${CONFIG_PATH} " ]; then
@@ -75,6 +95,7 @@ function uninstall()
75
95
76
96
function status()
77
97
{
98
+ echo " status ${SVC_NAME} :"
78
99
if [ -f " ${PLIST_PATH} " ]; then
79
100
echo
80
101
echo " ${PLIST_PATH} "
@@ -86,7 +107,7 @@ function status()
86
107
fi
87
108
88
109
echo
89
- status_out=` launchctl list | grep " ${SVC_NAME} " `
110
+ status_out=` sudo -u " ${SUDO_USER} " launchctl list | grep " ${SVC_NAME} " `
90
111
if [ ! -z " $status_out " ]; then
91
112
echo Started:
92
113
echo $status_out
0 commit comments