bld 0.1.7 → 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/bld +1 -1
- data/bin/build +1 -1
- data/lib/commands.rb +114 -25
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78bc9cfc7bc1572671feab14e8fd08abb1ae8a8aa470c0f0a984772758159e88
|
4
|
+
data.tar.gz: e187478177849bc5fa26cd8649527189ed44749204dd62b0330a97a169025cb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d54dfac9875947c80abf80bc7278c14138ae418136839cdc2c051906d132945b4026429abe97a9f779f674dcc18011cbe04e91e8ec467b013073b5de53f13f2
|
7
|
+
data.tar.gz: 7b983df8db6928b1119ab87abb01f56c339c16ff7ac515d51da0fc96ce6b95f009e0194a899f70d497a2b0f9c8860437ee956487f32d4262cb2583017276f0b1
|
data/bin/bld
CHANGED
data/bin/build
CHANGED
data/lib/commands.rb
CHANGED
@@ -2,8 +2,79 @@
|
|
2
2
|
class BuildCLICommands
|
3
3
|
def self.index
|
4
4
|
return {
|
5
|
+
"ps": {
|
6
|
+
cli_details: { :syntax => "build ps -a <app>", :description => "List all the processes of 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/ps?#{query_string}",
|
27
|
+
{ headers: { "Authorization" => auth } })
|
28
|
+
if res.code != 200
|
29
|
+
if res.body && res.body != "" && JSON.parse(res.body)&.key?("error")
|
30
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{JSON.parse(res.body).[]("error")}"))
|
31
|
+
else
|
32
|
+
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
33
|
+
end
|
34
|
+
exit(1)
|
35
|
+
end
|
36
|
+
processes = JSON.parse(res.body).[]("processes")
|
37
|
+
if processes.empty?
|
38
|
+
puts(CLI::UI.fmt("{{green:›}} No processes found for app #{app_name}"))
|
39
|
+
exit(1)
|
40
|
+
end
|
41
|
+
processes.each { |process,|
|
42
|
+
puts(CLI::UI.fmt("{{gray:===}} {{bold:{{green:#{process.[]("type")}}} ({{cyan:#{process.[]("size")}}}): {{white:#{process.[]("display")}}} ({{yellow:#{process.[]("quantity")}}})}}"))
|
43
|
+
process.[]("processes").each { |instance,|
|
44
|
+
started_at = Time.parse(instance.[]("started_at")).localtime
|
45
|
+
status = if instance.[]("status") == "Running"
|
46
|
+
"{{green:up}}"
|
47
|
+
else
|
48
|
+
"{{red:down}}"
|
49
|
+
end
|
50
|
+
days_ago = ((Time.now - started_at) / 86400).to_i
|
51
|
+
hours_ago = ((Time.now - started_at) / 3600).to_i % 24
|
52
|
+
minutes_ago = ((Time.now - started_at) / 60).to_i % 60
|
53
|
+
seconds_ago = (Time.now - started_at).to_i % 60
|
54
|
+
dotiw = ""
|
55
|
+
if days_ago > 0
|
56
|
+
dotiw = "#{days_ago}d "
|
57
|
+
end
|
58
|
+
if hours_ago > 0 || days_ago > 0
|
59
|
+
dotiw += "#{hours_ago}h "
|
60
|
+
end
|
61
|
+
if minutes_ago > 0 || hours_ago > 0 || days_ago > 0
|
62
|
+
dotiw += "#{minutes_ago}m "
|
63
|
+
end
|
64
|
+
if seconds_ago > 0 || minutes_ago > 0 || hours_ago > 0 || days_ago > 0
|
65
|
+
dotiw += "#{seconds_ago}s"
|
66
|
+
end
|
67
|
+
if dotiw == ""
|
68
|
+
dotiw = "0s"
|
69
|
+
end
|
70
|
+
puts(CLI::UI.fmt("{{white:#{process.[]("type")}.#{instance.[]("index")}}}: #{status} {{gray:#{started_at} (~ #{dotiw} ago)}}"))
|
71
|
+
}
|
72
|
+
puts("")
|
73
|
+
}
|
74
|
+
},
|
75
|
+
},
|
5
76
|
"ps:restart": {
|
6
|
-
cli_details: { :syntax => "build ps:restart -a <app>", :description => "Restart all the processes of an app",
|
77
|
+
cli_details: { :syntax => "build ps:restart [PROCESS] -a <app>", :description => "Restart all the processes of an app",
|
7
78
|
:options => [["-a", "--app=<value>", String, "(required) app to run command against"]] },
|
8
79
|
cli_perform: Proc.new { |args, options|
|
9
80
|
app_name = options.app
|
@@ -13,6 +84,13 @@ class BuildCLICommands
|
|
13
84
|
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
14
85
|
exit(1)
|
15
86
|
end
|
87
|
+
if args.length > 1
|
88
|
+
puts(CLI::UI.fmt("{{red:›}} Error: The following error occurred:"))
|
89
|
+
puts(CLI::UI.fmt("{{red:›}} {{gray:Too many arguments provided}}"))
|
90
|
+
puts(CLI::UI.fmt("{{red:›}} See more help with --help"))
|
91
|
+
exit(1)
|
92
|
+
end
|
93
|
+
process = args.first
|
16
94
|
user_netrc = Netrc.read
|
17
95
|
user_token = user_netrc.[]("build.io")&.password
|
18
96
|
if user_token.nil?
|
@@ -22,19 +100,25 @@ class BuildCLICommands
|
|
22
100
|
auth = "Bearer #{user_token}"
|
23
101
|
query_params = {}
|
24
102
|
query_params.[]=(:app, app_name)
|
103
|
+
if process
|
104
|
+
query_params.[]=(:process, process)
|
105
|
+
end
|
25
106
|
query_string = URI.encode_www_form(query_params)
|
26
107
|
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/ps/restart?#{query_string}",
|
27
108
|
{ headers: { "Authorization" => auth } })
|
28
109
|
if res.code != 200
|
29
|
-
if res.body.
|
30
|
-
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
31
|
-
exit(1)
|
110
|
+
if res.body && res.body != "" && JSON.parse(res.body)&.key?("error")
|
111
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{JSON.parse(res.body).[]("error")}"))
|
32
112
|
else
|
33
113
|
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
34
|
-
exit(1)
|
35
114
|
end
|
115
|
+
exit(1)
|
116
|
+
end
|
117
|
+
if process
|
118
|
+
puts(CLI::UI.fmt("{{v}} Restarted process {{cyan:#{process}}} for app {{cyan:#{app_name}}}"))
|
119
|
+
else
|
120
|
+
puts(CLI::UI.fmt("{{v}} Restarted all processes for app {{cyan:#{app_name}}}"))
|
36
121
|
end
|
37
|
-
puts(CLI::UI.fmt("{{v}} Restarted all processes for app {{cyan:#{app_name}}}"))
|
38
122
|
},
|
39
123
|
},
|
40
124
|
"config": {
|
@@ -61,8 +145,8 @@ class BuildCLICommands
|
|
61
145
|
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config?#{query_string}",
|
62
146
|
{ headers: { "Authorization" => auth } })
|
63
147
|
if res.code != 200
|
64
|
-
if res.body.
|
65
|
-
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
148
|
+
if res.body && res.body != "" && JSON.parse(res.body)&.key?("error")
|
149
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{JSON.parse(res.body).[]("error")}"))
|
66
150
|
else
|
67
151
|
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
68
152
|
end
|
@@ -105,13 +189,12 @@ class BuildCLICommands
|
|
105
189
|
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config/get?#{query_string}",
|
106
190
|
{ headers: { "Authorization" => auth } })
|
107
191
|
if res.code != 200
|
108
|
-
if res.body.
|
109
|
-
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
110
|
-
exit(1)
|
192
|
+
if res.body && res.body != "" && JSON.parse(res.body)&.key?("error")
|
193
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{JSON.parse(res.body).[]("error")}"))
|
111
194
|
else
|
112
195
|
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
113
|
-
exit(1)
|
114
196
|
end
|
197
|
+
exit(1)
|
115
198
|
end
|
116
199
|
puts(res.body)
|
117
200
|
},
|
@@ -150,8 +233,8 @@ class BuildCLICommands
|
|
150
233
|
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config/set?#{query_string}",
|
151
234
|
{ headers: { "Authorization" => auth } })
|
152
235
|
if res.code != 200
|
153
|
-
if res.body && res.body.
|
154
|
-
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
236
|
+
if res.body && res.body != "" && JSON.parse(res.body)&.key?("error")
|
237
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{JSON.parse(res.body).[]("error")}"))
|
155
238
|
else
|
156
239
|
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
157
240
|
end
|
@@ -192,8 +275,8 @@ class BuildCLICommands
|
|
192
275
|
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/config/unset?#{query_string}",
|
193
276
|
{ headers: { "Authorization" => auth } })
|
194
277
|
if res.code != 200
|
195
|
-
if res.body && res.body.
|
196
|
-
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
278
|
+
if res.body && res.body != "" && JSON.parse(res.body)&.key?("error")
|
279
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{JSON.parse(res.body).[]("error")}"))
|
197
280
|
else
|
198
281
|
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
199
282
|
end
|
@@ -273,10 +356,14 @@ class BuildCLICommands
|
|
273
356
|
break
|
274
357
|
end
|
275
358
|
}
|
276
|
-
user_netrc = Netrc.read
|
277
|
-
user_netrc.[]=("build.io", ["#{user_email}", "#{user_token}"])
|
278
|
-
user_netrc.save
|
279
359
|
}
|
360
|
+
if user_token.nil? || user_email.nil? || user_token.empty? || user_email.empty?
|
361
|
+
puts(CLI::UI.fmt("{{red:Login failed}}"))
|
362
|
+
exit(1)
|
363
|
+
end
|
364
|
+
user_netrc = Netrc.read
|
365
|
+
user_netrc.[]=("build.io", ["#{user_email}", "#{user_token}"])
|
366
|
+
user_netrc.save
|
280
367
|
puts(CLI::UI.fmt("Logged in as {{green:#{user_email}}}"))
|
281
368
|
},
|
282
369
|
},
|
@@ -318,9 +405,11 @@ class BuildCLICommands
|
|
318
405
|
res = HTTParty.get("#{ANTIMONY_HOST}/api/apps/#{app_name}/logs/log_url?#{query_string}",
|
319
406
|
{ headers: { "Authorization" => auth } })
|
320
407
|
if res.code != 200
|
321
|
-
|
322
|
-
|
323
|
-
|
408
|
+
if res.body && res.body != "" && JSON.parse(res.body)&.key?("error")
|
409
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{JSON.parse(res.body).[]("error")}"))
|
410
|
+
else
|
411
|
+
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
412
|
+
end
|
324
413
|
exit(1)
|
325
414
|
end
|
326
415
|
log_url = res.[]("url")
|
@@ -380,10 +469,10 @@ class BuildCLICommands
|
|
380
469
|
res = HTTParty.get("#{ANTIMONY_HOST}/api/cli/command/run?#{query_string}",
|
381
470
|
{ headers: { "Authorization" => auth } })
|
382
471
|
if res.code != 200
|
383
|
-
if res.body.
|
384
|
-
puts(CLI::UI.fmt("{{red:›}} Error: #{res.body.[]("error")}"))
|
472
|
+
if res.body && res.body != "" && JSON.parse(res.body)&.key?("error")
|
473
|
+
puts(CLI::UI.fmt("{{red:›}} Error: #{JSON.parse(res.body).[]("error")}"))
|
385
474
|
else
|
386
|
-
puts(CLI::UI.fmt("{{red:›}} Error:
|
475
|
+
puts(CLI::UI.fmt("{{red:›}} Error: An unknown error occurred"))
|
387
476
|
end
|
388
477
|
exit(1)
|
389
478
|
end
|
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.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- usiegl00
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: abbrev
|