bld 0.1.2 → 0.1.6

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/bin/bld +3 -1
  3. data/bin/build +3 -1
  4. data/lib/commands.rb +303 -99
  5. metadata +35 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 45419a892bc44df93ecc3719e4b1faf01623943450e3b3e6f5b52749b95987b6
4
- data.tar.gz: 7a2df108023c2b45008a0c2f378c11e497bef10ecc409a457656ea4b14f2f7ae
3
+ metadata.gz: 23ca92095150f9e2e36d9a2b64946ab21047349387aa7a6eebefc10e7f8227d3
4
+ data.tar.gz: f46aba8b557a61ee3ac3b41c366a1be1ea3c608e82e8cbf5ef8d1851fca7022d
5
5
  SHA512:
6
- metadata.gz: c71f9a0e03655f2451d3c7e6ecf722806bcba0926a918b1f219214c776ffd302fd265981739fe5c86088ad3abe7737dcc75cc7188497e1abca97b809b8224e95
7
- data.tar.gz: 57e0526a93cb3758f8b7ad1f2d29ab4f8bb9c8648f5d3798f41147c20ca62ae422ace18b0b244e3033899a383cc80c1ee4f59aa9ef60e218168f98a1ca80c4ee
6
+ metadata.gz: 5ca6e41446dbceea06b380d9e47b57e5b5b585f3b6a238c8c50d8a24c4bd6b613619771aa13d538cc7fe5c9f0c2cf63024a78a88a5d46f61048b05969fd089b7
7
+ data.tar.gz: d5a535ce8825b02b2d91f4df6fea86f71ccd3f58b285708cd3b21ecff065d8f58be849d973838f208a6cba5f7c79756f3227cfce9cae885acdeb06aad0206856
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,9 +20,10 @@ class BuildCLI
19
20
 
20
21
  def run
21
22
  program :name, 'Build CLI'
22
- program :version, '1.0.0'
23
+ program :version, '0.1.6'
23
24
  program :description, "Build's Command Line Interface"
24
25
  program :int_block, -> { exit }
26
+ default_command :help
25
27
 
26
28
  BuildCLICommands.index.each do |name, entry|
27
29
  command name.to_sym do |c|
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,9 +20,10 @@ class BuildCLI
19
20
 
20
21
  def run
21
22
  program :name, 'Build CLI'
22
- program :version, '1.0.0'
23
+ program :version, '0.1.6'
23
24
  program :description, "Build's Command Line Interface"
24
25
  program :int_block, -> { exit }
26
+ default_command :help
25
27
 
26
28
  BuildCLICommands.index.each do |name, entry|
27
29
  command name.to_sym do |c|
data/lib/commands.rb CHANGED
@@ -2,79 +2,247 @@
2
2
  class BuildCLICommands
3
3
  def self.index
4
4
  return {
5
+ "config": {
6
+ cli_details: { :syntax => "build config -a <app>", :description => "Get the config variables for an app",
7
+ :options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
8
+ cli_perform: Proc.new { |args, options|
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/config?#{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"))
34
+ exit(1)
35
+ end
36
+ end
37
+ JSON.parse(res.body).each { |key, value|
38
+ puts("#{key}=#{value}")
39
+ }
40
+ },
41
+ },
42
+ "config:get": {
43
+ cli_details: { :syntax => "build config:get VARIABLE -a <app>", :description => "Get a config variable for an app",
44
+ :options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
45
+ cli_perform: Proc.new { |args, options|
46
+ app_name = options.app
47
+ if app_name.nil? || app_name.strip == ""
48
+ puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
49
+ puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required flag app}}"))
50
+ puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
51
+ exit(1)
52
+ end
53
+ config_variable = args.[](0)
54
+ if config_variable.nil? || config_variable.strip == ""
55
+ puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
56
+ puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required argument VARIABLE}}"))
57
+ puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
58
+ exit(1)
59
+ end
60
+ user_netrc = Netrc.read
61
+ user_token = user_netrc.[]("build.io")&.password
62
+ if user_token.nil?
63
+ puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
64
+ exit(1)
65
+ end
66
+ auth = "Bearer #{user_token}"
67
+ query_params = {}
68
+ query_params.[]=(:app, app_name)
69
+ query_params.[]=(:key, config_variable)
70
+ query_string = URI.encode_www_form(query_params)
71
+ res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config/get?#{query_string}",
72
+ { headers: { "Authorization" => auth } })
73
+ if res.code != 200
74
+ if res.body.[]("error")
75
+ puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
76
+ exit(1)
77
+ else
78
+ puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
79
+ exit(1)
80
+ end
81
+ end
82
+ puts(res.body)
83
+ },
84
+ },
85
+ "config:set": {
86
+ cli_details: { :syntax => "build config:set VARIABLE=VALUE -a <app>", :description => "Set config variables for an app",
87
+ :options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
88
+ cli_perform: Proc.new { |args, options|
89
+ app_name = options.app
90
+ if app_name.nil? || app_name.strip == ""
91
+ puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
92
+ puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required flag app}}"))
93
+ puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
94
+ exit(1)
95
+ end
96
+ config_variables = args.map { |arg,|
97
+ arg.split("=")
98
+ }.to_h
99
+ if config_variables.empty?
100
+ puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
101
+ puts(CLI::UI.fmt("{{red:›}} {{gray:No config variables provided}}"))
102
+ puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
103
+ exit(1)
104
+ end
105
+ user_netrc = Netrc.read
106
+ user_token = user_netrc.[]("build.io")&.password
107
+ if user_token.nil?
108
+ puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
109
+ exit(1)
110
+ end
111
+ auth = "Bearer #{user_token}"
112
+ query_params = {}
113
+ query_params.[]=(:app, app_name)
114
+ query_params.[]=(:config, config_variables.to_json)
115
+ query_string = URI.encode_www_form(query_params)
116
+ res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config/set?#{query_string}",
117
+ { headers: { "Authorization" => auth } })
118
+ if res.code != 200
119
+ if res.body && res.body.[]("error")
120
+ puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
121
+ else
122
+ puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
123
+ end
124
+ exit(1)
125
+ end
126
+ puts(CLI::UI.fmt("{{green:›}} Config variable(s) set successfully"))
127
+ },
128
+ },
129
+ "config:unset": {
130
+ cli_details: { :syntax => "build config:unset VARIABLE -a <app>", :description => "Un-Set config variables for an app",
131
+ :options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
132
+ cli_perform: Proc.new { |args, options|
133
+ app_name = options.app
134
+ if app_name.nil? || app_name.strip == ""
135
+ puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
136
+ puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required flag app}}"))
137
+ puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
138
+ exit(1)
139
+ end
140
+ config_variables = args.compact
141
+ if config_variables.empty?
142
+ puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
143
+ puts(CLI::UI.fmt("{{red:›}} {{gray:No config variables provided}}"))
144
+ puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
145
+ exit(1)
146
+ end
147
+ user_netrc = Netrc.read
148
+ user_token = user_netrc.[]("build.io")&.password
149
+ if user_token.nil?
150
+ puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
151
+ exit(1)
152
+ end
153
+ auth = "Bearer #{user_token}"
154
+ query_params = {}
155
+ query_params.[]=(:app, app_name)
156
+ query_params.[]=(:config, config_variables)
157
+ query_string = URI.encode_www_form(query_params)
158
+ res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config/unset?#{query_string}",
159
+ { headers: { "Authorization" => auth } })
160
+ if res.code != 200
161
+ if res.body && res.body.[]("error")
162
+ puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
163
+ else
164
+ puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
165
+ end
166
+ exit(1)
167
+ end
168
+ puts(CLI::UI.fmt("{{green:›}} Config variable(s) unset successfully"))
169
+ },
170
+ },
5
171
  "apps:create": {
6
172
  cli_details: { :syntax => "apps:create [options] -a <app>", :description => "Create a new app",
7
173
  :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"]] },
8
174
  cli_perform: Proc.new { |args, options|
9
- begin
10
- user_netrc = Netrc.read
11
- user_token = user_netrc["build.io"][1]
12
- auth = "Bearer #{user_token}"
13
-
14
- app_name = options.app
15
- if app_name.nil?
16
- puts CLI::UI.fmt "{{red:›}} Error: no app name specified"
17
- exit 1
18
- end
19
-
20
- query_params = {}
21
- query_params[:app] = app_name
22
- query_params[:team] = options.team if options.team
23
- query_params[:region] = options.region if options.region
24
- query_params[:stack] = options.stack if options.stack
25
-
26
- query_string = URI.encode_www_form(query_params)
27
-
28
- res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/apps/create?#{query_string}",
29
- headers: { "Authorization" => auth })
30
- if res.code != 200
31
- puts CLI::UI.fmt "{{red:›}} Error: not authorized to create app (#{app_name})"
32
- exit 1
33
- end
34
- app_name = JSON.parse(res.body)["name"]
35
- puts "https://#{app_name}.#{region}.antimony.io | #{app_name}"
36
- rescue
37
- puts CLI::UI.fmt "{{red:›}} Error: not logged in"
38
- exit 1
175
+ user_netrc = Netrc.read
176
+ user_token = user_netrc.[]("build.io")&.password
177
+ if user_token.nil?
178
+ puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
179
+ exit(1)
180
+ end
181
+ auth = "Bearer #{user_token}"
182
+ app_name = options.app
183
+ if app_name.nil?
184
+ puts(CLI::UI.fmt("{{red:›}} Error: no app name specified"))
185
+ exit(1)
39
186
  end
187
+ query_params = {}
188
+ query_params.[]=(:app, app_name)
189
+ if options.team
190
+ query_params.[]=(:team, options.team)
191
+ end
192
+ if options.region
193
+ query_params.[]=(:region, options.region)
194
+ end
195
+ if options.stack
196
+ query_params.[]=(:stack, options.stack)
197
+ end
198
+ query_string = URI.encode_www_form(query_params)
199
+ res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/apps/create?#{query_string}",
200
+ { headers: { "Authorization" => auth } })
201
+ if res.code != 200
202
+ puts(CLI::UI.fmt("{{red:›}} Error: not authorized to create app (#{app_name})"))
203
+ exit(1)
204
+ end
205
+ app_name = JSON.parse(res.body).[]("name")
206
+ puts("https://#{app_name}.#{region}.antimony.io | #{app_name}")
40
207
  },
41
208
  },
42
209
  "login": {
43
210
  cli_details: { :syntax => "build login", :description => "Login to your Build account", :options => [] },
44
211
  cli_perform: Proc.new { |args, options|
45
- input = CLI::UI.any_key('Press any key to open up the browser to login or q to exit')
46
- exit if input.downcase == "q"
47
-
48
- user_token, user_email = nil
49
- CLI::UI::Spinner.spin("Waiting for login") do |spinner|
212
+ input = CLI::UI.any_key("Press any key to open up the browser to login or q to exit")
213
+ if input.downcase == "q"
214
+ exit
215
+ end
216
+ (user_token, user_email) = nil
217
+ CLI::UI::Spinner.spin("Waiting for login") { |spinner,|
50
218
  client_secret = SecureRandom.uuid
51
-
52
219
  oauth_url = "#{ANTIMONY_HOST}/cli_auth/authorize/#{client_secret}"
53
220
  Launchy.open(oauth_url)
54
-
55
221
  poll_interval = 1
56
222
  timeout = (5 * 60)
57
223
  start_time = Time.now
58
- loop do
224
+ loop {
59
225
  response = HTTParty.get("#{ANTIMONY_HOST}/api/cli_auth/resolve/#{client_secret}")
60
- if response.code == 200 && response['code'] == 'unresolved'
226
+ if response.code == 200 && response.[]("code") == "unresolved"
61
227
  sleep(poll_interval)
62
- elsif response.code == 200 && response['code'] == 'resolved'
63
- user_token = response["token"]
64
- user_email = response["email"]
65
- break
66
228
  else
67
- raise "Error: #{response.code}"
229
+ if response.code == 200 && response.[]("code") == "resolved"
230
+ user_token = response.[]("token")
231
+ user_email = response.[]("email")
232
+ break
233
+ else
234
+ raise("Error: #{response.code}")
235
+ end
68
236
  end
69
- break if Time.now - start_time > timeout
70
- end
71
-
237
+ if Time.now - start_time > timeout
238
+ break
239
+ end
240
+ }
72
241
  user_netrc = Netrc.read
73
- user_netrc["build.io"] = "#{user_email}", "#{user_token}"
242
+ user_netrc.[]=("build.io", ["#{user_email}", "#{user_token}"])
74
243
  user_netrc.save
75
- end
76
-
77
- puts CLI::UI.fmt "Logged in as {{green:#{user_email}}}"
244
+ }
245
+ puts(CLI::UI.fmt("Logged in as {{green:#{user_email}}}"))
78
246
  },
79
247
  },
80
248
  "logs": {
@@ -83,48 +251,54 @@ class BuildCLICommands
83
251
  cli_perform: Proc.new { |args, options|
84
252
  app_name = options.app
85
253
  if app_name.nil? || app_name.strip == ""
86
- puts CLI::UI.fmt "{{red:›}} Error: The following error occurred:"
87
- puts CLI::UI.fmt "{{red:›}} {{gray:Missing required flag app}}"
88
- puts CLI::UI.fmt "{{red:›}} See more help with --help"
89
- exit 1
254
+ puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
255
+ puts(CLI::UI.fmt("{{red:›}} {{gray:Missing required flag app}}"))
256
+ puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
257
+ exit(1)
90
258
  end
91
-
92
- begin
93
- user_netrc = Netrc.read
94
- user_token = user_netrc["build.io"][1]
95
- auth = "Bearer #{user_token}"
96
- rescue
97
- puts CLI::UI.fmt "{{red:›}} Error: not logged in"
98
- exit 1
259
+ user_netrc = Netrc.read
260
+ user_token = user_netrc.[]("build.io")&.password
261
+ if user_token.nil?
262
+ puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
263
+ exit(1)
99
264
  end
100
-
265
+ auth = "Bearer #{user_token}"
101
266
  query_params = {}
102
- query_params[:num] = options.num if options.num
103
- query_params[:process] = options.process if options.process
104
- query_params[:source] = options.source if options.source
105
- query_params[:tail] = options.trace if options.trace
106
- query_params[:tail] = options.tail if options.tail
107
-
267
+ if options.num
268
+ query_params.[]=(:num, options.num)
269
+ end
270
+ if options.process
271
+ query_params.[]=(:process, options.process)
272
+ end
273
+ if options.source
274
+ query_params.[]=(:source, options.source)
275
+ end
276
+ if options.trace
277
+ query_params.[]=(:tail, options.trace)
278
+ end
279
+ if options.tail
280
+ query_params.[]=(:tail, options.tail)
281
+ end
108
282
  query_string = URI.encode_www_form(query_params)
109
-
110
283
  res = HTTParty.get("#{ANTIMONY_HOST}/api/apps/#{app_name}/logs/log_url?#{query_string}",
111
- headers: { "Authorization" => auth })
284
+ { headers: { "Authorization" => auth } })
112
285
  if res.code != 200
113
- puts CLI::UI.fmt "{{red:›}} Error: Couldn't find that app."
114
- puts CLI::UI.fmt "{{red:›}}"
115
- puts CLI::UI.fmt "{{red:›}} Error ID: not_found"
116
- exit 1
117
- end
118
- log_url = res["url"]
119
-
120
- res = HTTParty.get(log_url, timeout: 1_000_000) do |fragment|
121
- puts fragment unless fragment.empty?
286
+ puts(CLI::UI.fmt("{{red:›}} Error: Couldn't find that app."))
287
+ puts(CLI::UI.fmt("{{red:›}}"))
288
+ puts(CLI::UI.fmt("{{red:›}} Error ID: not_found"))
289
+ exit(1)
122
290
  end
291
+ log_url = res.[]("url")
292
+ res = HTTParty.get(log_url, { timeout: 1000000 }) { |fragment,|
293
+ unless fragment.empty?
294
+ puts(fragment)
295
+ end
296
+ }
123
297
  if res.code != 200
124
- puts CLI::UI.fmt "{{red:›}} Error: Connection to logs failed."
125
- puts CLI::UI.fmt "{{red:›}}"
126
- puts CLI::UI.fmt "{{red:›}} Error ID: connection_failed"
127
- exit 1
298
+ puts(CLI::UI.fmt("{{red:›}} Error: Connection to logs failed."))
299
+ puts(CLI::UI.fmt("{{red:›}}"))
300
+ puts(CLI::UI.fmt("{{red:›}} Error ID: connection_failed"))
301
+ exit(1)
128
302
  end
129
303
  },
130
304
  },
@@ -132,22 +306,52 @@ class BuildCLICommands
132
306
  cli_details: { :syntax => "build whoami", :description => "Display the current logged in user",
133
307
  :options => [] },
134
308
  cli_perform: Proc.new { |args, options|
135
- begin
136
- user_netrc = Netrc.read
137
- user_token = user_netrc["build.io"][1]
138
- auth = "Bearer #{user_token}"
139
-
140
- res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/whoami",
141
- headers: { "Authorization" => auth })
142
- if res.code != 200
143
- puts CLI::UI.fmt "{{red:›}} Error: not logged in"
144
- exit 1
309
+ user_netrc = Netrc.read
310
+ user_token = user_netrc.[]("build.io")&.password
311
+ if user_token.nil?
312
+ puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
313
+ exit(1)
314
+ end
315
+ auth = "Bearer #{user_token}"
316
+ res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/whoami",
317
+ { headers: { "Authorization" => auth } })
318
+ if res.code != 200
319
+ puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
320
+ exit(1)
321
+ end
322
+ puts(JSON.parse(res.body).[]("email"))
323
+ },
324
+ },
325
+ "run": {
326
+ cli_details: { :syntax => "build run COMMAND -a <app>", :description => "Run a once-off process in an app",
327
+ :options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
328
+ cli_perform: Proc.new { |args, options|
329
+ if args.empty?
330
+ puts(CLI::UI.fmt("{{red:›}} Error: no command provided"))
331
+ exit(1)
332
+ end
333
+ user_netrc = Netrc.read
334
+ user_token = user_netrc.[]("build.io").[](1)
335
+ auth = "Bearer #{user_token}"
336
+ query_params = {}
337
+ if options.app
338
+ query_params.[]=(:app, options.app)
339
+ end
340
+ query_string = URI.encode_www_form(query_params)
341
+ res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/run?#{query_string}",
342
+ { headers: { "Authorization" => auth } })
343
+ if res.code != 200
344
+ if res.body.[]("error")
345
+ puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
346
+ else
347
+ puts(CLI::UI.fmt("{{red:›}} Error: not logged in"))
145
348
  end
146
- puts JSON.parse(res.body)["email"]
147
- rescue
148
- puts CLI::UI.fmt "{{red:›}} Error: not logged in"
149
- exit 1
349
+ exit(1)
150
350
  end
351
+ ruby = JSON.parse(res.body).[]("ruby")
352
+ require("shellwords")
353
+ command = "/cnb/lifecycle/launcher #{Shellwords.join(args)}"
354
+ eval(ruby)
151
355
  },
152
356
  }
153
357
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bld
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - usiegl00
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-27 00:00:00.000000000 Z
11
+ date: 2024-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: public_suffix
@@ -120,6 +120,26 @@ dependencies:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
122
  version: 2.5.2
123
+ - !ruby/object:Gem::Dependency
124
+ name: net-ssh
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '6.1'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 6.1.0
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '6.1'
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 6.1.0
123
143
  description: CLI for build.io
124
144
  email: 50933431+usiegl00@users.noreply.github.com
125
145
  executables:
@@ -135,7 +155,18 @@ homepage: https://build.io
135
155
  licenses:
136
156
  - ''
137
157
  metadata: {}
138
- post_install_message:
158
+ post_install_message: |2+
159
+
160
+
161
+
162
+ ██████╗ ██╗ ██╗██╗██╗ ██████╗
163
+ ██╔══██╗██║ ██║██║██║ ██╔══██╗
164
+ ██████╔╝██║ ██║██║██║ ██║ ██║
165
+ ██╔══██╗██║ ██║██║██║ ██║ ██║
166
+ ██████╔╝╚██████╔╝██║███████╗██████╔╝
167
+ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═════╝
168
+ Use `build login` to get started.
169
+
139
170
  rdoc_options: []
140
171
  require_paths:
141
172
  - lib
@@ -155,3 +186,4 @@ signing_key:
155
186
  specification_version: 4
156
187
  summary: build cli
157
188
  test_files: []
189
+ ...