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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/psa +17 -10
  3. data/lib/psadmin_plus.rb +165 -23
  4. metadata +7 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 08053857b9d46dfc80c308ea92265216f267c7da
4
- data.tar.gz: 81df426b700e5bb882bf93f7fd7979fdaa22d03d
3
+ metadata.gz: c5bea0d7536994143d1b28eb77cfa1d4d2d245d1
4
+ data.tar.gz: d018bfdb4ac02509dc9cf391fe6857190bc91097
5
5
  SHA512:
6
- metadata.gz: 87bec5891e6a3bb8952ba9485a24c3ef8ccf05746117ab98b242dcd829a546d6e6bf448ca0f11b6e41d95fd37b7919a306e77e0bc029137ae45e45ab083f42ee
7
- data.tar.gz: 9efbe7b0ccdb11fbca9fc24be60a6bc8d59fd0e1653c06b0f3395b654a039769ce24edf12bf8ad005a404e75e2229489de1aa0cc2f385dc9bcbfeb1a4e47f25b
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 = ARGV.shift || "help"
8
- opts_t = ARGV.shift || "all"
9
- opts_d = ARGV.shift || "all"
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 = os
33
- PS_RUNTIME_USER = ENV['PS_RUNTIME_USER'] || "psadm2"
34
- PS_POOL_MGMT = ENV['PS_POOL_MGMT'] || "on"
35
- PS_HEALTH_FILE = ENV['PS_HEALTH_FILE'] || "health.html"
36
- PS_HEALTH_TIME = ENV['PS_HEALTH_TIME'] || "60"
37
- PS_PSA_SUDO = ENV['PS_PSA_SUDO'] || "on"
38
- PS_PSADMIN_PATH = "#{OS_CONST}" == "linux" ? "#{env('PS_HOME')}/bin" : "cmd /c #{env('PS_HOME')}/appserv"
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}}" : "$env:#{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
- out = `powershell -NoProfile -Command "#{cmd}"`
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
- apps = do_cmd("find #{env('PS_CFG_HOME')}/appserv/*/psappsrv.ubx",false).split(/\n+/)
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
- prcss = do_cmd("find #{env('PS_CFG_HOME')}/appserv/prcs/*/psprcsrv.ubx",false).split(/\n+/)
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
- webs = do_cmd("find #{env('PS_CFG_HOME')}/webserv/*/piaconfig -maxdepth 0",false).split(/\n+/)
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
- apps = do_cmd("(get-childitem #{env('PS_CFG_HOME')}/appserv/*/psappsrv.ubx | Format-Table -property FullName -HideTableHeaders | Out-String).Trim()",false).split(/\n+/)
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
- prcss = do_cmd("(get-childitem #{env('PS_CFG_HOME')}/appserv/prcs/*/psprcsrv.ubx | Format-Table -property FullName -HideTableHeaders | Out-String).Trim()",false).split(/\n+/)
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
- webs = do_cmd("(get-childitem #{env('PS_CFG_HOME')}/webserv/*/piaconfig | Format-Table -property FullName -HideTableHeaders | Out-String).Trim()",false).split(/\n+/)
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
- print "ps-cfg-home: " ; do_cmd('echo ' + env('PS_CFG_HOME'))
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
- do_cmd("#{PS_PSADMIN_PATH}/psadmin -c boot -d #{domain}")
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
- do_cmd("#{PS_PSADMIN_PATH}/psadmin -p start -d #{domain}")
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
- do_cmd("#{PS_PSADMIN_PATH}/psadmin -w start -d #{domain}")
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
- do_cmd("#{PS_PSADMIN_PATH}/psadmin -c shutdown -d #{domain}")
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
- do_cmd("#{PS_PSADMIN_PATH}/psadmin -p stop -d #{domain}")
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
- # do_cmd("#{PS_PSADMIN_PATH}/psadmin -w shutdown! -d #{domain}".gsub('/','\\'))
207
- do_cmd("cmd /c ${env:PS_CFG_HOME}/webserv/#{domain}/bin/stopPIA.cmd".gsub('/','\\'))
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
- return # web kill n/a
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 this function to match your pool member addtion process
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 'true' > #{env('PS_CFG_HOME')}/webserv/#{domain}/applications/peoplesoft/PORTAL.war/#{PS_HEALTH_FILE}")
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 this function to match your pool member removal process
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.6
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: 2017-02-12 00:00:00.000000000 Z
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.0.14
43
+ rubygems_version: 2.6.12
43
44
  signing_key:
44
45
  specification_version: 4
45
46
  summary: psadmin plus