@@ -28,8 +28,9 @@ def running
28
28
end
29
29
30
30
# Check if formula has been found.
31
- def check ( target )
32
- odie ( "Formula(e) missing, please provide a formula name or use --all" ) unless target
31
+ def check ( targets )
32
+ raise UsageError , "Formula(e) missing, please provide a formula name or use --all" if targets . empty?
33
+
33
34
true
34
35
end
35
36
@@ -74,62 +75,43 @@ def remove_unused_service_files
74
75
cleaned
75
76
end
76
77
77
- # Stop if loaded, then start or run again.
78
- def restart ( target , service_file = nil , verbose : false )
79
- Array ( target ) . each do |service |
80
- was_run = service . loaded? && !service . service_file_present?
81
-
82
- stop ( service ) if service . loaded?
83
-
84
- if was_run
85
- run ( service )
86
- else
87
- start ( service , service_file , verbose : verbose )
88
- end
89
- end
90
- end
91
-
92
78
# Run a service as defined in the formula. This does not clean the service file like `start` does.
93
- def run ( target , verbose : false )
94
- if target . is_a? ( Service )
95
- if target . pid?
96
- puts "Service `#{ target . name } ` already running, use `#{ bin } restart #{ target . name } ` to restart."
97
- return
98
- elsif root?
99
- puts "Service `#{ target . name } ` cannot be run (but can be started) as root."
100
- return
79
+ def run ( targets , verbose : false )
80
+ targets . each do | service |
81
+ if service . pid?
82
+ puts "Service `#{ service . name } ` already running, use `#{ bin } restart #{ service . name } ` to restart."
83
+ next
84
+ elsif System . root?
85
+ puts "Service `#{ service . name } ` cannot be run (but can be started) as root."
86
+ next
101
87
end
102
- end
103
88
104
- Array ( target ) . each do |service |
105
89
service_load ( service , enable : false )
106
90
end
107
91
end
108
92
109
93
# Start a service.
110
- def start ( target , service_file = nil , verbose : false )
94
+ def start ( targets , service_file = nil , verbose : false )
111
95
if service_file . present?
112
96
file = Pathname . new service_file
113
97
raise UsageError , "Provided service file does not exist" unless file . exist?
114
98
end
115
99
116
- if target . is_a? ( Service )
117
- if target . pid?
118
- puts "Service `#{ target . name } ` already started, use `#{ bin } restart #{ target . name } ` to restart."
119
- return
100
+ targets . reject ( & :pid? ) . each do | service |
101
+ if service . pid?
102
+ puts "Service `#{ service . name } ` already started, use `#{ bin } restart #{ service . name } ` to restart."
103
+ next
120
104
end
121
105
122
- odie "Formula `#{ target . name } ` is not installed." unless target . installed?
106
+ odie "Formula `#{ service . name } ` is not installed." unless service . installed?
123
107
124
- file ||= if target . service_file . exist? || System . systemctl? || target . formula . plist . blank?
108
+ file ||= if service . service_file . exist? || System . systemctl? || service . formula . plist . blank?
125
109
nil
126
- elsif target . formula . opt_prefix . exist? && ( keg = Keg . for target . formula . opt_prefix ) && keg . plist_installed?
127
- service_file = Dir [ "#{ keg } /*#{ target . service_file . extname } " ] . first
110
+ elsif service . formula . opt_prefix . exist? && ( keg = Keg . for service . formula . opt_prefix ) && keg . plist_installed?
111
+ service_file = Dir [ "#{ keg } /*#{ service . service_file . extname } " ] . first
128
112
Pathname . new service_file if service_file . present?
129
113
end
130
- end
131
114
132
- Array ( target ) . reject ( &:pid? ) . each do |service |
133
115
install_service_file ( service , file )
134
116
135
117
if file . blank? && verbose
@@ -146,20 +128,21 @@ def start(target, service_file = nil, verbose: false)
146
128
end
147
129
148
130
# Stop a service, or kill it if no service file is available.
149
- def stop ( target , verbose : false )
150
- if target . is_a? ( Service ) && !target . loaded?
151
- rm target . dest if target . dest . exist? # get rid of installed service file anyway, dude
152
- if target . service_file_present?
153
- odie <<~EOS
154
- Service `#{ target . name } ` is started as `#{ target . owner } `. Try:
155
- #{ "sudo " unless ServicesCli . root? } #{ bin } stop #{ target . name }
156
- EOS
157
- else
158
- odie "Service `#{ target . name } ` is not started."
131
+ def stop ( targets , verbose : false )
132
+ targets . each do |service |
133
+ unless service . loaded?
134
+ rm service . dest if service . dest . exist? # get rid of installed service file anyway, dude
135
+ if service . service_file_present?
136
+ odie <<~EOS
137
+ Service `#{ service . name } ` is started as `#{ service . owner } `. Try:
138
+ #{ "sudo " unless ServicesCli . root? } #{ bin } stop #{ service . name }
139
+ EOS
140
+ else
141
+ opoo "Service `#{ service . name } ` is not started."
142
+ end
143
+ next
159
144
end
160
- end
161
145
162
- Array ( target ) . select ( &:loaded? ) . each do |service |
163
146
puts "Stopping `#{ service . name } `... (might take a while)"
164
147
if System . systemctl?
165
148
quiet_system System . systemctl , System . systemctl_scope , "stop" , service . service_name
0 commit comments