bld 0.1.4 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/bld +2 -1
- data/bin/build +2 -1
- data/lib/commands.rb +271 -71
- metadata +79 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a83ec4051e6559929aaf5a9bd63b4942e720a38e1646585b45dd92118dd9c64
|
4
|
+
data.tar.gz: 4830cfc9f99c939fe2d6d5cf5cb51d8f1944006d9cd100398def42bb9f2b53f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f46dbef1d40982c49622fae11a1ac9c3122e0e6c976daad1140e1d2c560edafbdd65a0dd9419ba54b03e732502e6235e32158ce6ea574a1e7eb18d073867128
|
7
|
+
data.tar.gz: d731e18fecd9c703d9bc992ffbcaf467d877ad5dd9601f9f42b774cb576268eb67c56b451d02231df21510d1cccb8390fdb990a31da70a21ad4f4fac540588de
|
data/bin/bld
CHANGED
@@ -5,6 +5,7 @@ require 'cli/ui'
|
|
5
5
|
require 'launchy'
|
6
6
|
require 'netrc'
|
7
7
|
require 'httparty'
|
8
|
+
require 'net/ssh'
|
8
9
|
require_relative '../lib/commands'
|
9
10
|
|
10
11
|
ANTIMONY_HOST = "https://app.build.io"
|
@@ -19,7 +20,7 @@ class BuildCLI
|
|
19
20
|
|
20
21
|
def run
|
21
22
|
program :name, 'Build CLI'
|
22
|
-
program :version, '0.1.
|
23
|
+
program :version, '0.1.7'
|
23
24
|
program :description, "Build's Command Line Interface"
|
24
25
|
program :int_block, -> { exit }
|
25
26
|
default_command :help
|
data/bin/build
CHANGED
@@ -5,6 +5,7 @@ require 'cli/ui'
|
|
5
5
|
require 'launchy'
|
6
6
|
require 'netrc'
|
7
7
|
require 'httparty'
|
8
|
+
require 'net/ssh'
|
8
9
|
require_relative '../lib/commands'
|
9
10
|
|
10
11
|
ANTIMONY_HOST = "https://app.build.io"
|
@@ -19,7 +20,7 @@ class BuildCLI
|
|
19
20
|
|
20
21
|
def run
|
21
22
|
program :name, 'Build CLI'
|
22
|
-
program :version, '0.1.
|
23
|
+
program :version, '0.1.7'
|
23
24
|
program :description, "Build's Command Line Interface"
|
24
25
|
program :int_block, -> { exit }
|
25
26
|
default_command :help
|
data/lib/commands.rb
CHANGED
@@ -2,43 +2,242 @@
|
|
2
2
|
class BuildCLICommands
|
3
3
|
def self.index
|
4
4
|
return {
|
5
|
-
"
|
6
|
-
cli_details: { :syntax => "
|
7
|
-
:options => [["-
|
5
|
+
"ps:restart": {
|
6
|
+
cli_details: { :syntax => "build ps:restart -a <app>", :description => "Restart all the processes of an app",
|
7
|
+
:options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
|
8
8
|
cli_perform: Proc.new { |args, options|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
app_name = options.app
|
10
|
+
if app_name.nil? || app_name.strip == ""
|
11
|
+
puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
|
12
|
+
puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required flag app}}"))
|
13
|
+
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
14
|
+
exit(1)
|
15
|
+
end
|
16
|
+
user_netrc = Netrc.read
|
17
|
+
user_token = user_netrc.[]("build.io")&.password
|
18
|
+
if user_token.nil?
|
19
|
+
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
20
|
+
exit(1)
|
21
|
+
end
|
22
|
+
auth = "Bearer #{user_token}"
|
23
|
+
query_params = {}
|
24
|
+
query_params.[]=(:app, app_name)
|
25
|
+
query_string = URI.encode_www_form(query_params)
|
26
|
+
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/ps/restart?#{query_string}",
|
27
|
+
{ headers: { "Authorization" => auth } })
|
28
|
+
if res.code != 200
|
29
|
+
if res.body.[]("error")
|
30
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
31
|
+
exit(1)
|
32
|
+
else
|
33
|
+
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
16
34
|
exit(1)
|
17
35
|
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
36
|
+
end
|
37
|
+
puts(CLI::UI.fmt("{{v}} Restarted all processes for app {{cyan:#{app_name}}}"))
|
38
|
+
},
|
39
|
+
},
|
40
|
+
"config": {
|
41
|
+
cli_details: { :syntax => "build config -a <app>", :description => "Get the config variables for an app",
|
42
|
+
:options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
|
43
|
+
cli_perform: Proc.new { |args, options|
|
44
|
+
app_name = options.app
|
45
|
+
if app_name.nil? || app_name.strip == ""
|
46
|
+
puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
|
47
|
+
puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required flag app}}"))
|
48
|
+
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
49
|
+
exit(1)
|
50
|
+
end
|
51
|
+
user_netrc = Netrc.read
|
52
|
+
user_token = user_netrc.[]("build.io")&.password
|
53
|
+
if user_token.nil?
|
54
|
+
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
55
|
+
exit(1)
|
56
|
+
end
|
57
|
+
auth = "Bearer #{user_token}"
|
58
|
+
query_params = {}
|
59
|
+
query_params.[]=(:app, app_name)
|
60
|
+
query_string = URI.encode_www_form(query_params)
|
61
|
+
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config?#{query_string}",
|
62
|
+
{ headers: { "Authorization" => auth } })
|
63
|
+
if res.code != 200
|
64
|
+
if res.body.[]("error")
|
65
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
66
|
+
else
|
67
|
+
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
22
68
|
end
|
23
|
-
|
24
|
-
|
69
|
+
exit(1)
|
70
|
+
end
|
71
|
+
JSON.parse(res.body).each { |key, value|
|
72
|
+
puts("#{key}=#{value}")
|
73
|
+
}
|
74
|
+
},
|
75
|
+
},
|
76
|
+
"config:get": {
|
77
|
+
cli_details: { :syntax => "build config:get VARIABLE -a <app>", :description => "Get a config variable for an app",
|
78
|
+
:options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
|
79
|
+
cli_perform: Proc.new { |args, options|
|
80
|
+
app_name = options.app
|
81
|
+
if app_name.nil? || app_name.strip == ""
|
82
|
+
puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
|
83
|
+
puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required flag app}}"))
|
84
|
+
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
85
|
+
exit(1)
|
86
|
+
end
|
87
|
+
config_variable = args.[](0)
|
88
|
+
if config_variable.nil? || config_variable.strip == ""
|
89
|
+
puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
|
90
|
+
puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required argument VARIABLE}}"))
|
91
|
+
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
92
|
+
exit(1)
|
93
|
+
end
|
94
|
+
user_netrc = Netrc.read
|
95
|
+
user_token = user_netrc.[]("build.io")&.password
|
96
|
+
if user_token.nil?
|
97
|
+
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
98
|
+
exit(1)
|
99
|
+
end
|
100
|
+
auth = "Bearer #{user_token}"
|
101
|
+
query_params = {}
|
102
|
+
query_params.[]=(:app, app_name)
|
103
|
+
query_params.[]=(:key, config_variable)
|
104
|
+
query_string = URI.encode_www_form(query_params)
|
105
|
+
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config/get?#{query_string}",
|
106
|
+
{ headers: { "Authorization" => auth } })
|
107
|
+
if res.code != 200
|
108
|
+
if res.body.[]("error")
|
109
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
110
|
+
exit(1)
|
111
|
+
else
|
112
|
+
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
113
|
+
exit(1)
|
25
114
|
end
|
26
|
-
|
27
|
-
|
115
|
+
end
|
116
|
+
puts(res.body)
|
117
|
+
},
|
118
|
+
},
|
119
|
+
"config:set": {
|
120
|
+
cli_details: { :syntax => "build config:set VARIABLE=VALUE -a <app>", :description => "Set config variables for an app",
|
121
|
+
:options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
|
122
|
+
cli_perform: Proc.new { |args, options|
|
123
|
+
app_name = options.app
|
124
|
+
if app_name.nil? || app_name.strip == ""
|
125
|
+
puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
|
126
|
+
puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required flag app}}"))
|
127
|
+
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
128
|
+
exit(1)
|
129
|
+
end
|
130
|
+
config_variables = args.map { |arg,|
|
131
|
+
arg.split("=")
|
132
|
+
}.to_h
|
133
|
+
if config_variables.empty?
|
134
|
+
puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
|
135
|
+
puts(CLI::UI.fmt("{{red:›}} {{gray:No config variables provided}}"))
|
136
|
+
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
137
|
+
exit(1)
|
138
|
+
end
|
139
|
+
user_netrc = Netrc.read
|
140
|
+
user_token = user_netrc.[]("build.io")&.password
|
141
|
+
if user_token.nil?
|
142
|
+
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
143
|
+
exit(1)
|
144
|
+
end
|
145
|
+
auth = "Bearer #{user_token}"
|
146
|
+
query_params = {}
|
147
|
+
query_params.[]=(:app, app_name)
|
148
|
+
query_params.[]=(:config, config_variables.to_json)
|
149
|
+
query_string = URI.encode_www_form(query_params)
|
150
|
+
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config/set?#{query_string}",
|
151
|
+
{ headers: { "Authorization" => auth } })
|
152
|
+
if res.code != 200
|
153
|
+
if res.body && res.body.[]("error")
|
154
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
155
|
+
else
|
156
|
+
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
28
157
|
end
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
158
|
+
exit(1)
|
159
|
+
end
|
160
|
+
puts(CLI::UI.fmt("{{green:›}} Config variable(s) set successfully"))
|
161
|
+
},
|
162
|
+
},
|
163
|
+
"config:unset": {
|
164
|
+
cli_details: { :syntax => "build config:unset VARIABLE -a <app>", :description => "Un-Set config variables for an app",
|
165
|
+
:options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
|
166
|
+
cli_perform: Proc.new { |args, options|
|
167
|
+
app_name = options.app
|
168
|
+
if app_name.nil? || app_name.strip == ""
|
169
|
+
puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
|
170
|
+
puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required flag app}}"))
|
171
|
+
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
172
|
+
exit(1)
|
173
|
+
end
|
174
|
+
config_variables = args.compact
|
175
|
+
if config_variables.empty?
|
176
|
+
puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
|
177
|
+
puts(CLI::UI.fmt("{{red:›}} {{gray:No config variables provided}}"))
|
178
|
+
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
179
|
+
exit(1)
|
180
|
+
end
|
181
|
+
user_netrc = Netrc.read
|
182
|
+
user_token = user_netrc.[]("build.io")&.password
|
183
|
+
if user_token.nil?
|
184
|
+
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
185
|
+
exit(1)
|
186
|
+
end
|
187
|
+
auth = "Bearer #{user_token}"
|
188
|
+
query_params = {}
|
189
|
+
query_params.[]=(:app, app_name)
|
190
|
+
query_params.[]=(:config, config_variables)
|
191
|
+
query_string = URI.encode_www_form(query_params)
|
192
|
+
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config/unset?#{query_string}",
|
193
|
+
{ headers: { "Authorization" => auth } })
|
194
|
+
if res.code != 200
|
195
|
+
if res.body && res.body.[]("error")
|
196
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
197
|
+
else
|
198
|
+
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
35
199
|
end
|
36
|
-
|
37
|
-
|
38
|
-
|
200
|
+
exit(1)
|
201
|
+
end
|
202
|
+
puts(CLI::UI.fmt("{{green:›}} Config variable(s) unset successfully"))
|
203
|
+
},
|
204
|
+
},
|
205
|
+
"apps:create": {
|
206
|
+
cli_details: { :syntax => "apps:create [options] -a <app>", :description => "Create a new app",
|
207
|
+
:options => [["-t", "--team=<value>", String, "team to use"], ["-r", "--region=<value>", String, "specify region for the app to run in"], ["-s", "--stack=<value>", String, "the stack to create the app on"], ["-a", "--app=<value>", String, "(required) the name of the app to create"]] },
|
208
|
+
cli_perform: Proc.new { |args, options|
|
209
|
+
user_netrc = Netrc.read
|
210
|
+
user_token = user_netrc.[]("build.io")&.password
|
211
|
+
if user_token.nil?
|
39
212
|
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
40
213
|
exit(1)
|
41
214
|
end
|
215
|
+
auth = "Bearer #{user_token}"
|
216
|
+
app_name = options.app
|
217
|
+
if app_name.nil?
|
218
|
+
puts(CLI::UI.fmt("{{red:›}} Error: no app name specified"))
|
219
|
+
exit(1)
|
220
|
+
end
|
221
|
+
query_params = {}
|
222
|
+
query_params.[]=(:app, app_name)
|
223
|
+
if options.team
|
224
|
+
query_params.[]=(:team, options.team)
|
225
|
+
end
|
226
|
+
if options.region
|
227
|
+
query_params.[]=(:region, options.region)
|
228
|
+
end
|
229
|
+
if options.stack
|
230
|
+
query_params.[]=(:stack, options.stack)
|
231
|
+
end
|
232
|
+
query_string = URI.encode_www_form(query_params)
|
233
|
+
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/apps/create?#{query_string}",
|
234
|
+
{ headers: { "Authorization" => auth } })
|
235
|
+
if res.code != 200
|
236
|
+
puts(CLI::UI.fmt("{{red:›}} Error: not authorized to create app (#{app_name})"))
|
237
|
+
exit(1)
|
238
|
+
end
|
239
|
+
app_name = JSON.parse(res.body).[]("name")
|
240
|
+
puts("https://#{app_name}.#{region}.antimony.io | #{app_name}")
|
42
241
|
},
|
43
242
|
},
|
44
243
|
"login": {
|
@@ -49,9 +248,10 @@ class BuildCLICommands
|
|
49
248
|
exit
|
50
249
|
end
|
51
250
|
(user_token, user_email) = nil
|
251
|
+
client_secret = SecureRandom.uuid
|
252
|
+
oauth_url = "#{ANTIMONY_HOST}/cli_auth/authorize/#{client_secret}"
|
253
|
+
puts(CLI::UI.fmt("Opening browser to {{underline:#{oauth_url}}}"))
|
52
254
|
CLI::UI::Spinner.spin("Waiting for login") { |spinner,|
|
53
|
-
client_secret = SecureRandom.uuid
|
54
|
-
oauth_url = "#{ANTIMONY_HOST}/cli_auth/authorize/#{client_secret}"
|
55
255
|
Launchy.open(oauth_url)
|
56
256
|
poll_interval = 1
|
57
257
|
timeout = (5 * 60)
|
@@ -91,15 +291,13 @@ class BuildCLICommands
|
|
91
291
|
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
92
292
|
exit(1)
|
93
293
|
end
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
user_token = user_netrc.[]("build.io").[](1)
|
98
|
-
auth = "Bearer #{user_token}"
|
99
|
-
rescue
|
294
|
+
user_netrc = Netrc.read
|
295
|
+
user_token = user_netrc.[]("build.io")&.password
|
296
|
+
if user_token.nil?
|
100
297
|
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
101
298
|
exit(1)
|
102
299
|
end
|
300
|
+
auth = "Bearer #{user_token}"
|
103
301
|
query_params = {}
|
104
302
|
if options.num
|
105
303
|
query_params.[]=(:num, options.num)
|
@@ -143,54 +341,56 @@ class BuildCLICommands
|
|
143
341
|
cli_details: { :syntax => "build whoami", :description => "Display the current logged in user",
|
144
342
|
:options => [] },
|
145
343
|
cli_perform: Proc.new { |args, options|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
puts(JSON.parse(res.body).[]("email"))
|
157
|
-
rescue
|
344
|
+
user_netrc = Netrc.read
|
345
|
+
user_token = user_netrc.[]("build.io")&.password
|
346
|
+
if user_token.nil?
|
347
|
+
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
348
|
+
exit(1)
|
349
|
+
end
|
350
|
+
auth = "Bearer #{user_token}"
|
351
|
+
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/whoami",
|
352
|
+
{ headers: { "Authorization" => auth } })
|
353
|
+
if res.code != 200
|
158
354
|
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
159
355
|
exit(1)
|
160
356
|
end
|
357
|
+
puts(JSON.parse(res.body).[]("email"))
|
161
358
|
},
|
162
359
|
},
|
163
360
|
"run": {
|
164
361
|
cli_details: { :syntax => "build run COMMAND -a <app>", :description => "Run a once-off process in an app",
|
165
362
|
:options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
|
166
363
|
cli_perform: Proc.new { |args, options|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
auth = "Bearer #{user_token}"
|
175
|
-
query_params = {}
|
176
|
-
if options.app
|
177
|
-
query_params.[]=(:app, options.app)
|
178
|
-
end
|
179
|
-
query_string = URI.encode_www_form(query_params)
|
180
|
-
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/run?#{query_string}",
|
181
|
-
{ headers: { "Authorization" => auth } })
|
182
|
-
if res.code != 200
|
183
|
-
puts(CLI::UI.fmt("{{red:›}} Error: app not found"))
|
184
|
-
exit(1)
|
185
|
-
end
|
186
|
-
ruby = JSON.parse(res.body).[]("ruby")
|
187
|
-
require("shellwords")
|
188
|
-
command = "/cnb/lifecycle/launcher #{Shellwords.join(args)}"
|
189
|
-
eval(ruby)
|
190
|
-
rescue
|
364
|
+
if args.empty?
|
365
|
+
puts(CLI::UI.fmt("{{red:›}} Error: no command provided"))
|
366
|
+
exit(1)
|
367
|
+
end
|
368
|
+
user_netrc = Netrc.read
|
369
|
+
user_token = user_netrc.[]("build.io")&.password
|
370
|
+
if user_token.nil?
|
191
371
|
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
192
372
|
exit(1)
|
193
373
|
end
|
374
|
+
auth = "Bearer #{user_token}"
|
375
|
+
query_params = {}
|
376
|
+
if options.app
|
377
|
+
query_params.[]=(:app, options.app)
|
378
|
+
end
|
379
|
+
query_string = URI.encode_www_form(query_params)
|
380
|
+
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/run?#{query_string}",
|
381
|
+
{ headers: { "Authorization" => auth } })
|
382
|
+
if res.code != 200
|
383
|
+
if res.body.[]("error")
|
384
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
385
|
+
else
|
386
|
+
puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
|
387
|
+
end
|
388
|
+
exit(1)
|
389
|
+
end
|
390
|
+
ruby = JSON.parse(res.body).[]("ruby")
|
391
|
+
require("shellwords")
|
392
|
+
command = "/cnb/lifecycle/launcher #{Shellwords.join(args)}"
|
393
|
+
eval(ruby)
|
194
394
|
},
|
195
395
|
}
|
196
396
|
}
|
metadata
CHANGED
@@ -1,15 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bld
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- usiegl00
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: abbrev
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: base64
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bigdecimal
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: csv
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
13
69
|
- !ruby/object:Gem::Dependency
|
14
70
|
name: public_suffix
|
15
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -120,6 +176,26 @@ dependencies:
|
|
120
176
|
- - ">="
|
121
177
|
- !ruby/object:Gem::Version
|
122
178
|
version: 2.5.2
|
179
|
+
- !ruby/object:Gem::Dependency
|
180
|
+
name: net-ssh
|
181
|
+
requirement: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: 6.1.0
|
186
|
+
- - "<="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: 7.2.1
|
189
|
+
type: :runtime
|
190
|
+
prerelease: false
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: 6.1.0
|
196
|
+
- - "<="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: 7.2.1
|
123
199
|
description: CLI for build.io
|
124
200
|
email: 50933431+usiegl00@users.noreply.github.com
|
125
201
|
executables:
|
@@ -161,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
237
|
- !ruby/object:Gem::Version
|
162
238
|
version: '0'
|
163
239
|
requirements: []
|
164
|
-
rubygems_version: 3.
|
240
|
+
rubygems_version: 3.5.3
|
165
241
|
signing_key:
|
166
242
|
specification_version: 4
|
167
243
|
summary: build cli
|