psadmin_plus 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/psa +17 -10
- data/lib/psadmin_plus.rb +165 -23
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5bea0d7536994143d1b28eb77cfa1d4d2d245d1
|
4
|
+
data.tar.gz: d018bfdb4ac02509dc9cf391fe6857190bc91097
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e17768a9ff8ac8352d33b522e691e19a2ad4d1e316156d2d2b2a88e3b47d18278df7233277f948dcf11a5029dcbcdd8cbc98fbedff3240d15fff304266719c21
|
7
|
+
data.tar.gz: a48e5720aa77cdf56adf97f7cc55b5cc03907c62d6c68058ea881f7c0ca1a1fb998ba2b335fbd94e90aa9175ff9965564222786c3f8cd8f5fbee6cf1b661ff02
|
data/bin/psa
CHANGED
@@ -4,9 +4,10 @@ require 'psadmin_plus'
|
|
4
4
|
#require_relative '../lib/psadmin_plus.rb'
|
5
5
|
|
6
6
|
# options
|
7
|
-
opts_c
|
8
|
-
opts_t
|
9
|
-
opts_d
|
7
|
+
opts_c = ARGV.shift || "help"
|
8
|
+
opts_t = ARGV.shift || "all"
|
9
|
+
opts_d = ARGV.shift || "all"
|
10
|
+
opt_cfg = ARGV.shift
|
10
11
|
|
11
12
|
commands = opts_c.split(',')
|
12
13
|
types = opts_t.split(',')
|
@@ -15,6 +16,8 @@ domains = opts_d.split(',')
|
|
15
16
|
if types.include? "all" then types = ['app','prcs','web'] end
|
16
17
|
if domains.include? "all" then all_domains = true end
|
17
18
|
|
19
|
+
|
20
|
+
|
18
21
|
# setup environment
|
19
22
|
PS_PSA_CONF = ENV['PS_PSA_CONF'] || "#{ENV['HOME']}/.psa.conf"
|
20
23
|
if File.exists?(PS_PSA_CONF) then
|
@@ -29,13 +32,17 @@ if File.exists?(PS_PSA_CONF) then
|
|
29
32
|
end
|
30
33
|
|
31
34
|
# constants
|
32
|
-
OS_CONST
|
33
|
-
PS_RUNTIME_USER
|
34
|
-
PS_POOL_MGMT
|
35
|
-
PS_HEALTH_FILE
|
36
|
-
PS_HEALTH_TIME
|
37
|
-
|
38
|
-
|
35
|
+
OS_CONST = os
|
36
|
+
PS_RUNTIME_USER = ENV['PS_RUNTIME_USER'] || "psadm2"
|
37
|
+
PS_POOL_MGMT = ENV['PS_POOL_MGMT'] || "on"
|
38
|
+
PS_HEALTH_FILE = ENV['PS_HEALTH_FILE'] || "health.html"
|
39
|
+
PS_HEALTH_TIME = ENV['PS_HEALTH_TIME'] || "60"
|
40
|
+
PS_HEALTH_TEXT = ENV['PS_HEALTH_TEXT'] || "true"
|
41
|
+
PS_PSA_SUDO = ENV['PS_PSA_SUDO'] || "on"
|
42
|
+
PS_PSADMIN_PATH = "#{OS_CONST}" == "linux" ? "#{env('PS_HOME')}/bin" : "cmd /c #{env('PS_HOME')}/appserv"
|
43
|
+
PS_WIN_SERVICES = ENV['PS_WIN_SERVICES'] || "false"
|
44
|
+
PS_MULTI_HOME = ENV['PS_MULTI_HOME'] || "false"
|
45
|
+
PS_PSA_DEBUG = ENV['PS_PSA_DEBUG'] || "false"
|
39
46
|
|
40
47
|
# validation
|
41
48
|
# check runtime user
|
data/lib/psadmin_plus.rb
CHANGED
@@ -50,24 +50,49 @@ def do_is_runtime_user_win
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def env(var)
|
53
|
-
result = "#{OS_CONST}" == "linux" ? "${#{var}}" : "
|
53
|
+
result = "#{OS_CONST}" == "linux" ? "${#{var}}" : "%#{var}%"
|
54
54
|
end
|
55
55
|
|
56
|
-
def do_cmd(cmd, print = true)
|
56
|
+
def do_cmd(cmd, print = true, powershell = true)
|
57
57
|
case "#{OS_CONST}"
|
58
58
|
when "linux"
|
59
59
|
if do_is_runtime_user_nix
|
60
|
+
case "#{PS_PSA_DEBUG}"
|
61
|
+
when true
|
62
|
+
p "Command: #{cmd}"
|
63
|
+
end
|
60
64
|
out = `#{cmd}`
|
61
65
|
else
|
62
66
|
if "#{PS_PSA_SUDO}" == "on"
|
67
|
+
case "#{PS_PSA_DEBUG}"
|
68
|
+
when true
|
69
|
+
p "Command: sudo su - #{PS_RUNTIME_USER} -c '#{cmd}'"
|
70
|
+
end
|
63
71
|
out = `sudo su - #{PS_RUNTIME_USER} -c '#{cmd}'`
|
64
72
|
else
|
65
73
|
print "#{PS_RUNTIME_USER} "
|
74
|
+
case "#{PS_PSA_DEBUG}"
|
75
|
+
when true
|
76
|
+
p "Command: su - #{PS_RUNTIME_USER} -c '#{cmd}'"
|
77
|
+
end
|
66
78
|
out = `su - #{PS_RUNTIME_USER} -c '#{cmd}'`
|
67
79
|
end
|
68
80
|
end
|
69
81
|
when "windows"
|
70
|
-
|
82
|
+
case powershell
|
83
|
+
when true
|
84
|
+
case "#{PS_PSA_DEBUG}"
|
85
|
+
when true
|
86
|
+
p "Command: powershell -NoProfile -Command \"#{cmd}\""
|
87
|
+
end
|
88
|
+
out = `powershell -NoProfile -Command "#{cmd}"`
|
89
|
+
else
|
90
|
+
case "#{PS_PSA_DEBUG}"
|
91
|
+
when true
|
92
|
+
p "Command: #{cmd}"
|
93
|
+
end
|
94
|
+
out = `#{cmd}`
|
95
|
+
end
|
71
96
|
else
|
72
97
|
out = "Invalid OS"
|
73
98
|
end
|
@@ -80,32 +105,62 @@ def do_cmd_banner(c,t,d)
|
|
80
105
|
end
|
81
106
|
|
82
107
|
def find_apps_nix
|
83
|
-
|
108
|
+
case "#{PS_MULTI_HOME}"
|
109
|
+
when "false"
|
110
|
+
apps = do_cmd("find #{env('PS_CFG_HOME')}/appserv/*/psappsrv.ubx",false).split(/\n+/)
|
111
|
+
else
|
112
|
+
apps = do_cmd("find #{PS_MULTI_HOME}/*/appserv/*/psappsrv.ubx",false).split(/\n+/)
|
113
|
+
end
|
84
114
|
apps.map! {|app| app.split("/")[-2]}
|
85
115
|
end
|
86
116
|
|
87
117
|
def find_prcss_nix
|
88
|
-
|
118
|
+
case "#{PS_MULTI_HOME}"
|
119
|
+
when "false"
|
120
|
+
prcss = do_cmd("find #{env('PS_CFG_HOME')}/appserv/prcs/*/psprcsrv.ubx",false).split(/\n+/)
|
121
|
+
else
|
122
|
+
prcss = do_cmd("find #{PS_MULTI_HOME}/*/appserv/prcs/*/psprcsrv.ubx",false).split(/\n+/)
|
123
|
+
end
|
89
124
|
prcss.map! {|prcs| prcs.split("/")[-2]}
|
90
125
|
end
|
91
126
|
|
92
127
|
def find_webs_nix
|
93
|
-
|
128
|
+
case "#{PS_MULTI_HOME}"
|
129
|
+
when "false"
|
130
|
+
webs = do_cmd("find #{env('PS_CFG_HOME')}/webserv/*/piaconfig -maxdepth 0",false).split(/\n+/)
|
131
|
+
else
|
132
|
+
webs = do_cmd("find #{PS_MULTI_HOME}/*/webserv/*/piaconfig -maxdepth 0",false).split(/\n+/)
|
133
|
+
end
|
94
134
|
webs.map! {|web| web.split("/")[-2]}
|
95
135
|
end
|
96
136
|
|
97
137
|
def find_apps_win
|
98
|
-
|
138
|
+
case "#{PS_MULTI_HOME}"
|
139
|
+
when "false"
|
140
|
+
apps = do_cmd("(get-childitem #{env('PS_CFG_HOME')}/appserv/*/psappsrv.ubx | Format-Table -property FullName -HideTableHeaders | Out-String).Trim()",false).split(/\n+/)
|
141
|
+
else
|
142
|
+
apps = do_cmd("(get-childitem #{PS_MULTI_HOME}/*/appserv/*/psappsrv.ubx | Format-Table -property FullName -HideTableHeaders | Out-String).Trim()",false).split(/\n+/)
|
143
|
+
end
|
99
144
|
apps.map! {|app| app.split('\\')[-2]}
|
100
145
|
end
|
101
146
|
|
102
147
|
def find_prcss_win
|
103
|
-
|
148
|
+
case "#{PS_MULTI_HOME}"
|
149
|
+
when "false"
|
150
|
+
prcss = do_cmd("(get-childitem #{env('PS_CFG_HOME')}/appserv/prcs/*/psprcsrv.ubx | Format-Table -property FullName -HideTableHeaders | Out-String).Trim()",false).split(/\n+/)
|
151
|
+
else
|
152
|
+
prcss = do_cmd("(get-childitem #{PS_MULTI_HOME}/*/appserv/prcs/*/psprcsrv.ubx | Format-Table -property FullName -HideTableHeaders | Out-String).Trim()",false).split(/\n+/)
|
153
|
+
end
|
104
154
|
prcss.map! {|prcs| prcs.split("\\")[-2]}
|
105
155
|
end
|
106
156
|
|
107
157
|
def find_webs_win
|
108
|
-
|
158
|
+
case "#{PS_MULTI_HOME}"
|
159
|
+
when "false"
|
160
|
+
webs = do_cmd("(get-childitem #{env('PS_CFG_HOME')}/webserv/*/piaconfig | Format-Table -property FullName -HideTableHeaders | Out-String).Trim()",false).split(/\n+/)
|
161
|
+
else
|
162
|
+
webs = do_cmd("(get-childitem #{PS_MULTI_HOME}/*/webserv/*/piaconfig | Format-Table -property FullName -HideTableHeaders | Out-String).Trim()",false).split(/\n+/)
|
163
|
+
end
|
109
164
|
webs.map! {|web| web.split("\\")[-2]}
|
110
165
|
end
|
111
166
|
|
@@ -133,13 +188,19 @@ def do_list
|
|
133
188
|
puts "---"
|
134
189
|
print "hostname: " ; do_cmd('hostname')
|
135
190
|
print "ps-home: " ; do_cmd('echo ' + env('PS_HOME'))
|
136
|
-
|
191
|
+
if PS_MULTI_HOME == "false"
|
192
|
+
print "ps-cfg-home: " ; do_cmd('echo ' + env('PS_CFG_HOME'))
|
193
|
+
end
|
137
194
|
puts ""
|
138
195
|
puts "PS_RUNTIME_USER: #{PS_RUNTIME_USER}"
|
139
196
|
puts "PS_PSA_SUDO: #{PS_PSA_SUDO}"
|
140
197
|
puts "PS_POOL_MGMT: #{PS_POOL_MGMT}"
|
141
198
|
puts "PS_HEALTH_FILE: #{PS_HEALTH_FILE}"
|
142
199
|
puts "PS_HEALTH_TIME: #{PS_HEALTH_TIME}"
|
200
|
+
puts "PS_HEALTH_TEXT: #{PS_HEALTH_TEXT}"
|
201
|
+
puts "PS_WIN_SERVICES: #{PS_WIN_SERVICES}"
|
202
|
+
puts "PS_MULT_HOME: #{PS_MULTI_HOME}"
|
203
|
+
puts "PS_PSA_DEBUG: #{PS_PSA_DEBUG}"
|
143
204
|
puts ""
|
144
205
|
puts "app:"
|
145
206
|
find_apps.each do |a|
|
@@ -159,11 +220,19 @@ def do_list
|
|
159
220
|
end
|
160
221
|
|
161
222
|
def do_summary
|
223
|
+
if "#{PS_MULTI_HOME}" != "false"
|
224
|
+
ENV['PS_CFG_HOME'] = "#{PS_MULTI_HOME}/#{domain}"
|
225
|
+
end
|
226
|
+
|
162
227
|
do_cmd("#{PS_PSADMIN_PATH}/psadmin -envsummary")
|
163
228
|
#do_status("web","all")
|
164
229
|
end
|
165
230
|
|
166
231
|
def do_status(type, domain)
|
232
|
+
if "#{PS_MULTI_HOME}" != "false"
|
233
|
+
ENV['PS_CFG_HOME'] = "#{PS_MULTI_HOME}/#{domain}"
|
234
|
+
end
|
235
|
+
|
167
236
|
case type
|
168
237
|
when "app"
|
169
238
|
do_cmd("#{PS_PSADMIN_PATH}/psadmin -c sstatus -d #{domain}")
|
@@ -180,31 +249,83 @@ def do_status(type, domain)
|
|
180
249
|
end
|
181
250
|
|
182
251
|
def do_start(type, domain)
|
252
|
+
if "#{PS_MULTI_HOME}" != "false"
|
253
|
+
ENV['PS_CFG_HOME'] = "#{PS_MULTI_HOME}/#{domain}"
|
254
|
+
end
|
255
|
+
|
256
|
+
web_service_name = ENV['WEB_SERVICE_NAME'] || "Psft*Pia*#{domain}*"
|
257
|
+
app_service_name = ENV['APP_SERVICE_NAME'] || "Psft*App*#{domain}*"
|
258
|
+
prcs_service_name = ENV['PRCS_SERVICE_NAME'] || "Psft*Prcs*#{domain}*"
|
259
|
+
|
183
260
|
case type
|
184
261
|
when "app"
|
185
|
-
|
262
|
+
case "#{PS_WIN_SERVICES}"
|
263
|
+
when "true"
|
264
|
+
do_cmd("start-service #{app_service_name}")
|
265
|
+
else
|
266
|
+
do_cmd("#{PS_PSADMIN_PATH}/psadmin -c boot -d #{domain}")
|
267
|
+
end
|
186
268
|
when "prcs"
|
187
|
-
|
269
|
+
case "#{PS_WIN_SERVICES}"
|
270
|
+
when "true"
|
271
|
+
do_cmd("start-service #{prcs_service_name}")
|
272
|
+
else
|
273
|
+
do_cmd("#{PS_PSADMIN_PATH}/psadmin -p start -d #{domain}")
|
274
|
+
end
|
188
275
|
when "web"
|
189
|
-
|
276
|
+
case "#{OS_CONST}"
|
277
|
+
when "linux"
|
278
|
+
do_cmd("#{PS_PSADMIN_PATH}/psadmin -w start -d #{domain}")
|
279
|
+
when "windows"
|
280
|
+
case "#{PS_WIN_SERVICES}"
|
281
|
+
when "true"
|
282
|
+
do_cmd("start-service #{web_service_name}")
|
283
|
+
else
|
284
|
+
do_cmd("#{PS_PSADMIN_PATH}/psadmin -w start -d #{domain}", true, false)
|
285
|
+
end
|
286
|
+
end
|
287
|
+
do_pooladd(type,domain)
|
190
288
|
else
|
191
289
|
puts "Invalid type, see psa help"
|
192
290
|
end
|
193
291
|
end
|
194
292
|
|
195
293
|
def do_stop(type, domain)
|
294
|
+
if "#{PS_MULTI_HOME}" != "false"
|
295
|
+
ENV['PS_CFG_HOME'] = "#{PS_MULTI_HOME}/#{domain}"
|
296
|
+
end
|
297
|
+
|
298
|
+
web_service_name = ENV['WEB_SERVICE_NAME'] || "Psft*Pia*#{domain}*"
|
299
|
+
app_service_name = ENV['APP_SERVICE_NAME'] || "Psft*App*#{domain}*"
|
300
|
+
prcs_service_name = ENV['PRCS_SERVICE_NAME'] || "Psft*Prcs*#{domain}*"
|
301
|
+
|
196
302
|
case type
|
197
303
|
when "app"
|
198
|
-
|
304
|
+
case "#{PS_WIN_SERVICES}"
|
305
|
+
when "true"
|
306
|
+
do_cmd("stop-service #{app_service_name}")
|
307
|
+
else
|
308
|
+
do_cmd("#{PS_PSADMIN_PATH}/psadmin -c shutdown -d #{domain}")
|
309
|
+
end
|
199
310
|
when "prcs"
|
200
|
-
|
311
|
+
case "#{PS_WIN_SERVICES}"
|
312
|
+
when "true"
|
313
|
+
do_cmd("stop-service #{prcs_service_name}")
|
314
|
+
else
|
315
|
+
do_cmd("#{PS_PSADMIN_PATH}/psadmin -p stop -d #{domain}")
|
316
|
+
end
|
201
317
|
when "web"
|
318
|
+
do_poolrm(type,domain)
|
202
319
|
case "#{OS_CONST}"
|
203
320
|
when "linux"
|
204
321
|
do_cmd("${PS_CFG_HOME?}/webserv/#{domain}/bin/stopPIA.sh")
|
205
322
|
when "windows"
|
206
|
-
|
207
|
-
|
323
|
+
case "#{PS_WIN_SERVICES}"
|
324
|
+
when "true"
|
325
|
+
do_cmd("stop-service #{web_service_name}")
|
326
|
+
else
|
327
|
+
do_cmd("#{PS_PSADMIN_PATH}/psadmin -w shutdown -d #{domain}", true, false)
|
328
|
+
end
|
208
329
|
end
|
209
330
|
else
|
210
331
|
puts "Invalid type, see psa help"
|
@@ -212,19 +333,32 @@ def do_stop(type, domain)
|
|
212
333
|
end
|
213
334
|
|
214
335
|
def do_kill(type, domain)
|
336
|
+
if "#{PS_MULTI_HOME}" != "false"
|
337
|
+
ENV['PS_CFG_HOME'] = "#{PS_MULTI_HOME}/#{domain}"
|
338
|
+
end
|
339
|
+
|
215
340
|
case type
|
216
341
|
when "app"
|
217
342
|
do_cmd("#{PS_PSADMIN_PATH}/psadmin -c shutdown! -d #{domain}")
|
218
343
|
when "prcs"
|
219
344
|
do_cmd("#{PS_PSADMIN_PATH}/psadmin -p kill -d #{domain}")
|
220
345
|
when "web"
|
221
|
-
|
346
|
+
case "#{OS_CONST}"
|
347
|
+
when "windows"
|
348
|
+
do_cmd("(gwmi win32_process | where {$_.Name -eq 'Java.exe'} | where {$_.CommandLine -match '#{domain}'}).ProcessId -ErrorAction SilentlyContinue | % { stop-process $_ -force } -ErrorAction SilentlyContinue")
|
349
|
+
when "linux"
|
350
|
+
return #kill n/a
|
351
|
+
end
|
222
352
|
else
|
223
353
|
puts "Invalid type, see psa help"
|
224
354
|
end
|
225
355
|
end
|
226
356
|
|
227
357
|
def do_configure(type, domain)
|
358
|
+
if "#{PS_MULTI_HOME}" != "false"
|
359
|
+
ENV['PS_CFG_HOME'] = "#{PS_MULTI_HOME}/#{domain}"
|
360
|
+
end
|
361
|
+
|
228
362
|
case type
|
229
363
|
when "app"
|
230
364
|
do_cmd("#{PS_PSADMIN_PATH}/psadmin -c configure -d #{domain}")
|
@@ -238,6 +372,10 @@ def do_configure(type, domain)
|
|
238
372
|
end
|
239
373
|
|
240
374
|
def do_purge(type, domain)
|
375
|
+
if "#{PS_MULTI_HOME}" != "false"
|
376
|
+
ENV['PS_CFG_HOME'] = "#{PS_MULTI_HOME}/#{domain}"
|
377
|
+
end
|
378
|
+
|
241
379
|
case type
|
242
380
|
when "app"
|
243
381
|
do_cmd("#{PS_PSADMIN_PATH}/psadmin -c purge -d #{domain}")
|
@@ -249,7 +387,7 @@ def do_purge(type, domain)
|
|
249
387
|
do_cmd("rm -rf ${PS_CFG_HOME?}/webserv/#{domain}/applications/peoplesoft/PORTAL*/*/cache*/")
|
250
388
|
puts "web cache purged"
|
251
389
|
when "windows"
|
252
|
-
do_cmd("Remove-Item $(Get-ChildItem ${env:PS_CFG_HOME}/webserv/#{domain}/applications/peoplesoft/PORTAL*/*/cache*/ | ?{ $_.PSIsContainer}) -recurse -force".gsub('/','\\'))
|
390
|
+
do_cmd("Remove-Item $(Get-ChildItem ${env:PS_CFG_HOME}/webserv/#{domain}/applications/peoplesoft/PORTAL*/*/cache*/ | ?{ $_.PSIsContainer}) -recurse -force -ErrorAction SilentlyContinue".gsub('/','\\'))
|
253
391
|
end
|
254
392
|
else
|
255
393
|
puts "Invalid type, see psa help"
|
@@ -257,6 +395,10 @@ def do_purge(type, domain)
|
|
257
395
|
end
|
258
396
|
|
259
397
|
def do_flush(type, domain)
|
398
|
+
if "#{PS_MULTI_HOME}" != "false"
|
399
|
+
ENV['PS_CFG_HOME'] = "#{PS_MULTI_HOME}/#{domain}"
|
400
|
+
end
|
401
|
+
|
260
402
|
case type
|
261
403
|
when "app"
|
262
404
|
do_cmd("#{PS_PSADMIN_PATH}/psadmin -c cleanipc -d #{domain}")
|
@@ -284,9 +426,9 @@ end
|
|
284
426
|
|
285
427
|
def do_pooladd(type, domain)
|
286
428
|
if PS_POOL_MGMT == "on" then
|
287
|
-
# Change
|
429
|
+
# Change PS_HEALTH_TEXT and PS_HEALTH_FILE variables to match your system
|
288
430
|
puts "Adding web domain to load balanced pool..."
|
289
|
-
do_cmd("echo '
|
431
|
+
do_cmd("echo '#{PS_HEALTH_TEXT}' > #{env('PS_CFG_HOME')}/webserv/#{domain}/applications/peoplesoft/PORTAL.war/#{PS_HEALTH_FILE}")
|
290
432
|
sleep(PS_HEALTH_TIME.to_i)
|
291
433
|
puts "...domain added to pool."
|
292
434
|
puts ""
|
@@ -297,13 +439,13 @@ end
|
|
297
439
|
|
298
440
|
def do_poolrm(type,domain)
|
299
441
|
if PS_POOL_MGMT == "on" then
|
300
|
-
# Change
|
442
|
+
# Change PS_HEALTH_TEXT and PS_HEALTH_FILE variables to match your system
|
301
443
|
puts "Removing domain from load balanced pool..."
|
302
444
|
case "#{OS_CONST}"
|
303
445
|
when "linux"
|
304
446
|
do_cmd("rm -f #{env('PS_CFG_HOME')}/webserv/#{domain}/applications/peoplesoft/PORTAL.war/#{PS_HEALTH_FILE}")
|
305
447
|
when "windows"
|
306
|
-
do_cmd("remove-item -force #{env('PS_CFG_HOME')}/webserv/#{domain}/applications/peoplesoft/PORTAL.war/#{PS_HEALTH_FILE}")
|
448
|
+
do_cmd("remove-item -force #{env('PS_CFG_HOME')}/webserv/#{domain}/applications/peoplesoft/PORTAL.war/#{PS_HEALTH_FILE} -ErrorAction SilentlyContinue")
|
307
449
|
else
|
308
450
|
puts " badOS - #{OS_CONST}"
|
309
451
|
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: psadmin_plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Benson
|
8
|
+
- Dan Iverson
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2018-08-10 00:00:00.000000000 Z
|
12
13
|
dependencies: []
|
13
14
|
description: A psadmin helper tool
|
14
15
|
email: kyle@psadmin.io
|
@@ -17,8 +18,8 @@ executables:
|
|
17
18
|
extensions: []
|
18
19
|
extra_rdoc_files: []
|
19
20
|
files:
|
20
|
-
- lib/psadmin_plus.rb
|
21
21
|
- bin/psa
|
22
|
+
- lib/psadmin_plus.rb
|
22
23
|
homepage: https://github.com/psadmin-io/psadmin-plus
|
23
24
|
licenses:
|
24
25
|
- MIT
|
@@ -29,17 +30,17 @@ require_paths:
|
|
29
30
|
- lib
|
30
31
|
required_ruby_version: !ruby/object:Gem::Requirement
|
31
32
|
requirements:
|
32
|
-
- -
|
33
|
+
- - ">="
|
33
34
|
- !ruby/object:Gem::Version
|
34
35
|
version: '0'
|
35
36
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
37
|
requirements:
|
37
|
-
- -
|
38
|
+
- - ">="
|
38
39
|
- !ruby/object:Gem::Version
|
39
40
|
version: '0'
|
40
41
|
requirements: []
|
41
42
|
rubyforge_project:
|
42
|
-
rubygems_version: 2.
|
43
|
+
rubygems_version: 2.6.12
|
43
44
|
signing_key:
|
44
45
|
specification_version: 4
|
45
46
|
summary: psadmin plus
|