envoy-cli 1.0.0rc2 → 1.0.0rc3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +0 -3
- data/lib/envoy.rb +14 -1
- data/lib/envoy/plugin.rb +46 -4
- data/lib/envoy/version.rb +1 -1
- data/lib/inc/mixins.rb +47 -7
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84db9ede07c7b6cbb7c3157af51a7a7c0bde416e
|
4
|
+
data.tar.gz: 87d68a89972eda6528490f9c2892c050fdac1185
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f5f1dcae476d333e5970571cec0989ec89ecd718b49b4f11806f8e9b55a42340060b8f1b42666d27b7c1bdf19ad3b3ae6a6bc0efebe97a712071ad2de75ece4
|
7
|
+
data.tar.gz: e41d62783547a6b6e232a95cc2383fca23243e17a5001ab235e5129e62189b163153ad0001b3d02663deb14cbb4b66c1e3dac04d9c97b0bfe2e5b3a64cb5ee6e
|
data/.rubocop.yml
CHANGED
data/lib/envoy.rb
CHANGED
@@ -21,11 +21,13 @@ module Envoy
|
|
21
21
|
# Authenticates the user by storing their auth_token in ~/.envoy-cfg
|
22
22
|
# @param --local [String] will use localhost:3000 as the API url
|
23
23
|
# @param --endpoint [String] can be used to override the endpoint for this profile
|
24
|
+
# @param --production [Boolean] determine if this should be a production release
|
24
25
|
# @param --profile NAME [String] will save the login information for that profile, in order
|
25
26
|
# to use that info, you must specify the same profile name on other requests
|
26
27
|
|
27
28
|
desc "login", "Login to your account"
|
28
29
|
option :endpoint, type: :string
|
30
|
+
option :production, type: :boolean
|
29
31
|
|
30
32
|
def login
|
31
33
|
# collect login information
|
@@ -54,9 +56,20 @@ module Envoy
|
|
54
56
|
'email' => email,
|
55
57
|
'access_token' => res['access_token']
|
56
58
|
}
|
57
|
-
conf['local'] = true
|
59
|
+
conf['local'] = true if options.local
|
58
60
|
conf['api_path'] = options.endpoint if options.endpoint
|
59
61
|
|
62
|
+
unless options.production || options.local
|
63
|
+
say "In order to build plugins for the sandbox server you must provide a tunnel to your localhost.\n"\
|
64
|
+
"Once releasing your plugin you will need run `envoy plugin:serve` which defaults to localhost:7722\n"\
|
65
|
+
"so if you configure Finch to point my-envoy-plugin.meetfinch.com -> localhost:7722 you would input\n"\
|
66
|
+
"https://my-envoy-plugin.meetfinch.com below. Read more at:\n"\
|
67
|
+
"https://envoy.gitbooks.io/envoy-plugin/content/local_development.html"
|
68
|
+
tunnel_url = prompt.ask "Public Access to Localhost:"
|
69
|
+
conf['sandbox'] = true
|
70
|
+
conf['tunnel_url'] = tunnel_url
|
71
|
+
end
|
72
|
+
|
60
73
|
config.params[profile(options)] = conf
|
61
74
|
|
62
75
|
write_config!
|
data/lib/envoy/plugin.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'net/http/uploadprogress'
|
2
|
+
require 'webrick'
|
3
|
+
|
2
4
|
module Envoy
|
3
5
|
class Plugin < Commands
|
4
6
|
include Mixins
|
@@ -31,7 +33,7 @@ module Envoy
|
|
31
33
|
end
|
32
34
|
|
33
35
|
# ask for release notes unless deploying release to local
|
34
|
-
unless options.local || config[profile]['local']
|
36
|
+
unless options.local || config[profile]['local'] || config[profile]['sandbox']
|
35
37
|
notes = ask "Release Notes:"
|
36
38
|
if notes.empty?
|
37
39
|
error "Please provide at least a couple words about what this release is for."
|
@@ -44,9 +46,9 @@ module Envoy
|
|
44
46
|
type: 'platform-releases',
|
45
47
|
attributes: {
|
46
48
|
manifest: manifest,
|
47
|
-
path: options.local ? Dir.pwd : nil,
|
49
|
+
path: options.local ? (config[profile]['sandbox'] ? config[profile]['tunnel_url'] : Dir.pwd) : nil,
|
48
50
|
notes: notes || '',
|
49
|
-
provider: options.local && 'local' || 'lambda',
|
51
|
+
provider: options.local && (config[profile]['sandbox'] ? 'webhook' : 'local') || 'lambda',
|
50
52
|
version_type: release_type,
|
51
53
|
version_base: base || nil
|
52
54
|
},
|
@@ -130,13 +132,53 @@ module Envoy
|
|
130
132
|
run 'npm i --global-style'
|
131
133
|
end
|
132
134
|
|
135
|
+
desc 'serve', 'Run your plugin localy'
|
136
|
+
option :port, type: :string
|
137
|
+
def serve
|
138
|
+
server = WEBrick::HTTPServer.new Port: options.port || 7722
|
139
|
+
|
140
|
+
say "✔ Running a dev server at #{options.port || 7722}"
|
141
|
+
path = Dir.pwd
|
142
|
+
server.mount_proc '/' do |req, res|
|
143
|
+
debug("ℹ Request Received", req.body.to_s)
|
144
|
+
output = `APP_ROOT_PATH=#{path} #{path}/node_modules/envoy-platform-sdk/bin/invoke local #{req.body} 2>&1`
|
145
|
+
debug("ℹ Response Processed", output)
|
146
|
+
res.body = output
|
147
|
+
end
|
148
|
+
server.start
|
149
|
+
trap 'INT' do server.shutdown end
|
150
|
+
end
|
151
|
+
|
152
|
+
desc 'tail', 'Tail plugin events live'
|
153
|
+
def tail
|
154
|
+
since = nil
|
155
|
+
entries = false
|
156
|
+
loop do
|
157
|
+
res = jsonapi_get('Polling Events', './platform/events', {
|
158
|
+
plugin_id: plugin_uuid,
|
159
|
+
'filter[since]': since
|
160
|
+
})
|
161
|
+
unless res['data'].empty?
|
162
|
+
since = res['data'][0]['attributes']['created-at']
|
163
|
+
end
|
164
|
+
res['data'].reverse.each do |event|
|
165
|
+
if entries
|
166
|
+
puts "\n\n\n\n"
|
167
|
+
end
|
168
|
+
entries = true
|
169
|
+
print_event event
|
170
|
+
end
|
171
|
+
sleep(3)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
133
175
|
desc 'init <dir>', 'Initialize your plugin'
|
134
176
|
option :bootstrap, type: :boolean
|
135
177
|
def init(dir = false)
|
136
178
|
bootstrap = options.bootstrap
|
137
179
|
if dir
|
138
180
|
# @TODO create dir if it doesn't already exist
|
139
|
-
unless Dir.
|
181
|
+
unless Dir.exist? dir
|
140
182
|
Dir.mkdir dir
|
141
183
|
end
|
142
184
|
Dir.chdir dir
|
data/lib/envoy/version.rb
CHANGED
data/lib/inc/mixins.rb
CHANGED
@@ -42,6 +42,40 @@ module Envoy
|
|
42
42
|
post(info, path, { data: body }.to_json, headers)
|
43
43
|
end
|
44
44
|
|
45
|
+
def get!(path, params = {}, headers = {})
|
46
|
+
debug('Start', "GET #{base_url(path)}")
|
47
|
+
debug('Params', CodeRay.scan(JSON.pretty_generate(params.is_a?(Hash) && params || JSON.parse(params)), :json).terminal)
|
48
|
+
res = Unirest.get(base_url(path), parameters: params, headers: headers)
|
49
|
+
debug("End", res.code.to_s)
|
50
|
+
if res.body.instance_of?(Hash)
|
51
|
+
debug("Body", CodeRay.scan(JSON.pretty_generate(res.body), :json).terminal)
|
52
|
+
else
|
53
|
+
debug("Body", res.body.to_s)
|
54
|
+
end
|
55
|
+
res
|
56
|
+
rescue => e
|
57
|
+
# puts e.message
|
58
|
+
error(e.message)
|
59
|
+
exit
|
60
|
+
end
|
61
|
+
|
62
|
+
def get(info, *args)
|
63
|
+
spin("Network: #{info}")
|
64
|
+
res = get!(*args)
|
65
|
+
if res.code.between?(200, 299)
|
66
|
+
spin_success
|
67
|
+
else
|
68
|
+
handle_errors(res)
|
69
|
+
end
|
70
|
+
res.body
|
71
|
+
end
|
72
|
+
|
73
|
+
def jsonapi_get(info, path, params = {}, headers = {})
|
74
|
+
headers[:'Content-Type'] = 'application/json'
|
75
|
+
headers[:Authorization] = "Bearer #{config[profile]['access_token']}"
|
76
|
+
get(info, path, params, headers)
|
77
|
+
end
|
78
|
+
|
45
79
|
def error(msg)
|
46
80
|
if spinner
|
47
81
|
spin_error msg
|
@@ -93,15 +127,21 @@ module Envoy
|
|
93
127
|
local = true
|
94
128
|
end
|
95
129
|
if local
|
96
|
-
if cfg && cfg['
|
130
|
+
if cfg && cfg['sandbox']
|
131
|
+
base = cfg['api_path'] || 'https://sandbox-app.envoy.com'
|
132
|
+
elsif cfg && cfg['api_path_local']
|
97
133
|
base = cfg['api_path_local']
|
98
134
|
else
|
99
135
|
base = 'http://localhost:3000'
|
100
136
|
end
|
101
|
-
elsif ignore_profile && options.
|
102
|
-
base = options.
|
137
|
+
elsif ignore_profile && options.endpoint
|
138
|
+
base = options.endpoint
|
139
|
+
elsif ignore_profile && !options.production
|
140
|
+
base = 'https://sandbox-app.envoy.com'
|
103
141
|
elsif cfg && cfg['api_path']
|
104
142
|
base = cfg['api_path']
|
143
|
+
elsif cfg && cfg['sandbox']
|
144
|
+
base = 'https://sandbox-app.envoy.com'
|
105
145
|
else
|
106
146
|
base = 'https://app.envoy.com'
|
107
147
|
end
|
@@ -176,19 +216,19 @@ module Envoy
|
|
176
216
|
say "Execution Time =>".yellow + " #{data['process-time']}ms"
|
177
217
|
say "\n"
|
178
218
|
say "REQUEST META"
|
179
|
-
req_h = JSON.pretty_generate
|
219
|
+
req_h = JSON.pretty_generate min_json(data['request-meta'] || {})
|
180
220
|
say CodeRay.scan(req_h, :json).terminal(line_numbers: :table)
|
181
221
|
say "\n"
|
182
222
|
say "REQUEST BODY"
|
183
|
-
req_h = JSON.pretty_generate
|
223
|
+
req_h = JSON.pretty_generate min_json(data['request-body'] || {})
|
184
224
|
say CodeRay.scan(req_h, :json).terminal(line_numbers: :table)
|
185
225
|
say "\n"
|
186
226
|
say "REPONSE META"
|
187
|
-
req_h = JSON.pretty_generate
|
227
|
+
req_h = JSON.pretty_generate min_json(data['response-meta'] || {})
|
188
228
|
say CodeRay.scan(req_h, :json).terminal(line_numbers: :table)
|
189
229
|
say "\n"
|
190
230
|
say "RESPONSE BODY"
|
191
|
-
req_h = JSON.pretty_generate
|
231
|
+
req_h = JSON.pretty_generate min_json(data['response-body'] || {})
|
192
232
|
say CodeRay.scan(req_h, :json).terminal(line_numbers: :table)
|
193
233
|
say "\n"
|
194
234
|
say "LOG ENTRIES"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: envoy-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.0rc3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Boskovic
|
@@ -269,9 +269,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
269
269
|
version: 1.3.1
|
270
270
|
requirements: []
|
271
271
|
rubyforge_project:
|
272
|
-
rubygems_version: 2.
|
272
|
+
rubygems_version: 2.5.1
|
273
273
|
signing_key:
|
274
274
|
specification_version: 4
|
275
275
|
summary: Envoy platform command line interface.
|
276
276
|
test_files: []
|
277
|
-
has_rdoc:
|