envoy-cli 1.0.0rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.rspec +2 -0
- data/.rubocop.yml +95 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/bin/envoy +12 -0
- data/bin/envoy.bak +485 -0
- data/bootstrap/base/.envoyrc +1 -0
- data/bootstrap/base/.jshintrc +91 -0
- data/bootstrap/base/.nvmrc +1 -0
- data/bootstrap/base/config/.gitkeep +0 -0
- data/bootstrap/base/docs/.gitkeep +0 -0
- data/bootstrap/base/gulpfile.js +0 -0
- data/bootstrap/base/i18n/.gitkeep +0 -0
- data/bootstrap/base/index.js +5 -0
- data/bootstrap/base/lib/.gitkeep +0 -0
- data/bootstrap/base/routes/.gitkeep +0 -0
- data/bootstrap/base/views/.gitkeep +0 -0
- data/bootstrap/base/workers/.gitkeep +0 -0
- data/bootstrap/events/generic.json +6 -0
- data/bootstrap/events/host_notification.json +27 -0
- data/bootstrap/events/route.json +6 -0
- data/bootstrap/events/sms_host_notification.json +158 -0
- data/bootstrap/templates/docs/about.md.erb +3 -0
- data/bootstrap/templates/gitignore.erb +8 -0
- data/bootstrap/templates/index.js.erb +5 -0
- data/bootstrap/templates/license.md.erb +1 -0
- data/bootstrap/templates/npmignore.erb +0 -0
- data/bootstrap/templates/package.json +24 -0
- data/bootstrap/templates/readme.md.erb +9 -0
- data/bootstrap/templates/routes/callback.js.erb +10 -0
- data/bootstrap/templates/routes/html.js.erb +9 -0
- data/bootstrap/templates/routes/json.js.erb +9 -0
- data/bootstrap/templates/routes/other.js.erb +9 -0
- data/bootstrap/templates/views/hello.html.erb +91 -0
- data/bootstrap/templates/views/starter.html.erb +10 -0
- data/bootstrap/templates/worker.js.erb +10 -0
- data/envoy-cli.gemspec +29 -0
- data/lib/envoy.rb +70 -0
- data/lib/envoy/version.rb +3 -0
- data/lib/inc/commands.rb +74 -0
- data/lib/inc/generator.rb +159 -0
- data/lib/inc/mixins.rb +347 -0
- data/lib/inc/runner.rb +21 -0
- data/lib/tasks/plugin.rb +181 -0
- data/lib/tasks/routes.rb +39 -0
- data/lib/tasks/test.rb +68 -0
- data/lib/tasks/workers.rb +39 -0
- data/readme.md +0 -0
- metadata +276 -0
data/lib/inc/runner.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'inc/commands'
|
2
|
+
class Runner < Commands
|
3
|
+
def help(ometh = nil, subcommand = false)
|
4
|
+
if ometh && !respond_to?(ometh)
|
5
|
+
meth = self.class.basenamespace + ometh
|
6
|
+
klass, command = Thor::Util.find_class_and_command_by_namespace(meth)
|
7
|
+
self.class.handle_no_command_error(command, false) if klass.nil?
|
8
|
+
klass.start(["-h", command].compact, shell: shell)
|
9
|
+
else
|
10
|
+
super
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def method_missing(meth, *args)
|
15
|
+
meth = meth.to_s.insert(0, self.class.basenamespace)
|
16
|
+
klass, command = Thor::Util.find_class_and_command_by_namespace(meth)
|
17
|
+
self.class.handle_no_command_error(command, false) if klass.nil?
|
18
|
+
args.unshift(command) if command
|
19
|
+
klass.start(args, shell: shell)
|
20
|
+
end
|
21
|
+
end
|
data/lib/tasks/plugin.rb
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
require 'net/http/uploadprogress'
|
2
|
+
module Envoy
|
3
|
+
class Plugin < Commands
|
4
|
+
include Mixins
|
5
|
+
include Envoy::Generator
|
6
|
+
|
7
|
+
# Packages and releases a version of a plugin
|
8
|
+
# @param release_type [String] One of minor, major, or patch
|
9
|
+
# @param base [Integer] Base version for minor or patch release
|
10
|
+
# @option local [Boolean] will use localhost:3000 as the API url
|
11
|
+
# @option profile [String] use the url and auth token saved for this profile
|
12
|
+
# @option retry [Boolean] do not recompile code, use last package
|
13
|
+
|
14
|
+
desc 'release <type> [base]', 'Release your plugin'
|
15
|
+
option :retry, type: :boolean
|
16
|
+
|
17
|
+
def release(release_type = nil, base = nil)
|
18
|
+
# Ask for request type if not provided
|
19
|
+
unless release_type && %w(patch minor major).include?(release_type)
|
20
|
+
release_type = prompt.select("What type of release is this?") do |menu|
|
21
|
+
menu.default 3
|
22
|
+
menu.choice 'Major version (breaking changes)', 'major'
|
23
|
+
menu.choice 'Minor version (non-breakng feature updates)', 'minor'
|
24
|
+
menu.choice 'Patch (bugfixes, refactoring, optimizations)', 'patch'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# get the version base for minor and patch types
|
29
|
+
if base.nil? && release_type != 'major'
|
30
|
+
base = prompt.ask("What is the base version for this release?", in: '0-900')
|
31
|
+
end
|
32
|
+
|
33
|
+
# ask for release notes unless deploying release to local
|
34
|
+
unless options.local || config[profile]['local']
|
35
|
+
notes = ask "Release Notes:"
|
36
|
+
if notes.empty?
|
37
|
+
error "Please provide at least a couple words about what this release is for."
|
38
|
+
exit
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# request deploy permissions amd signed s3 url if necessary
|
43
|
+
res = jsonapi_post('Requesting deploy permissions', './platform/releases', {
|
44
|
+
type: 'platform-releases',
|
45
|
+
attributes: {
|
46
|
+
manifest: manifest,
|
47
|
+
path: options.local ? Dir.pwd : nil,
|
48
|
+
notes: notes || '',
|
49
|
+
provider: options.local && 'local' || 'lambda',
|
50
|
+
version_type: release_type,
|
51
|
+
version_base: base || nil
|
52
|
+
},
|
53
|
+
relationships: {
|
54
|
+
plugin: {
|
55
|
+
data: {
|
56
|
+
type: 'platform-plugins',
|
57
|
+
id: plugin_uuid
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
})
|
62
|
+
|
63
|
+
# zip and upload the package to s3 if not local
|
64
|
+
unless options.local
|
65
|
+
# allow for re-using the previous package if there was a network issue
|
66
|
+
if options.retry
|
67
|
+
say 'Using previously packaged plugin...'
|
68
|
+
else
|
69
|
+
spin 'Packing your plugin'
|
70
|
+
`grunt lambda_package`
|
71
|
+
spin_success
|
72
|
+
end
|
73
|
+
|
74
|
+
# find the upload file
|
75
|
+
# @todo this needs love
|
76
|
+
file = Dir.glob("#{Dir.pwd}/dist/*_latest.zip").first
|
77
|
+
|
78
|
+
# extract the upload url (signed S3 URL)
|
79
|
+
uri = URI.parse(res['data']['attributes']['upload-to'])
|
80
|
+
|
81
|
+
# grab our zip file for uploading
|
82
|
+
File.open(file, 'rb') do |io|
|
83
|
+
bar = TTY::ProgressBar.new(
|
84
|
+
"Uploading package - :current_byte (:percent) [:bar] :total_byte (:eta remaining) ",
|
85
|
+
total: io.size)
|
86
|
+
|
87
|
+
# build an upload request
|
88
|
+
request = Net::HTTP::Put.new(uri.request_uri)
|
89
|
+
request.content_length = io.size
|
90
|
+
request.body_stream = io
|
91
|
+
|
92
|
+
# Setup a progress monitor
|
93
|
+
Net::HTTP::UploadProgress.new(request) do |progress|
|
94
|
+
bar.current = progress.upload_size
|
95
|
+
end
|
96
|
+
|
97
|
+
# create a new http client and push this bad boy to the internetz
|
98
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
99
|
+
http.use_ssl = true
|
100
|
+
http.request(request)
|
101
|
+
bar.finish
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# let the server know we've uploaded the zip folder (or just complete directly if on local)
|
106
|
+
jsonapi_post('Completing release', "./platform/releases/#{res['data']['id']}/complete")
|
107
|
+
|
108
|
+
# @todo this url does not always work, figure out something better here
|
109
|
+
say 'Check out your new plugin at ' \
|
110
|
+
"\e[4m" + base_url("/platform/#{res['data']['attributes']['plugin-key']}/welcome") + "\e[0m"
|
111
|
+
end
|
112
|
+
|
113
|
+
desc 'bootstrap <dir>', 'Bootstrap your plugin'
|
114
|
+
def bootstrap(dir = false)
|
115
|
+
# seldestination_root = dir || Dir.pwd
|
116
|
+
@name = "Whatever Dude"
|
117
|
+
@key = "whatever-dude"
|
118
|
+
@version = "0.0.1"
|
119
|
+
@description = "Super basic description"
|
120
|
+
setup_directories
|
121
|
+
setup_config
|
122
|
+
setup_docs
|
123
|
+
setup_i18n
|
124
|
+
setup_npm
|
125
|
+
setup_readme
|
126
|
+
setup_tests
|
127
|
+
setup_license
|
128
|
+
setup_dotfiles
|
129
|
+
setup_route 'hello', type: 'html', view: 'hello'
|
130
|
+
run 'npm i --global-style'
|
131
|
+
end
|
132
|
+
|
133
|
+
desc 'init <dir>', 'Initialize your plugin'
|
134
|
+
option :bootstrap, type: :boolean
|
135
|
+
def init(dir = false)
|
136
|
+
bootstrap = options.bootstrap
|
137
|
+
if dir
|
138
|
+
# @TODO create dir if it doesn't already exist
|
139
|
+
Dir.chdir dir
|
140
|
+
end
|
141
|
+
|
142
|
+
if file_exist?('config/default.json') || file_exist?("config/#{profile.downcase}.json")
|
143
|
+
prompt.yes?("It looks you've already created a plugin here. Would you like to register it?") || exit
|
144
|
+
else
|
145
|
+
prompt.yes?("Are you sure you want to initialize a new plugin at #{Dir.pwd}?") || exit
|
146
|
+
bootstrap = true
|
147
|
+
end
|
148
|
+
|
149
|
+
@name = prompt.ask 'Plugin Name: ', require: true
|
150
|
+
@key = prompt.ask 'Unique Key (lowercase [a-z0-9] only): ', require: true
|
151
|
+
|
152
|
+
res = jsonapi_post('Creating plugin', './platform/plugins', {
|
153
|
+
type: 'platform-plugins',
|
154
|
+
attributes: { name: @name, key: @key }
|
155
|
+
})
|
156
|
+
|
157
|
+
if bootstrap
|
158
|
+
local_config.add "ENVOY_PROFILE", profile
|
159
|
+
@version = res.dig('data', 'attributes', 'version')
|
160
|
+
@description = ""
|
161
|
+
setup_directories
|
162
|
+
setup_config
|
163
|
+
setup_docs
|
164
|
+
setup_i18n
|
165
|
+
setup_npm
|
166
|
+
setup_readme
|
167
|
+
setup_tests
|
168
|
+
setup_license
|
169
|
+
setup_dotfiles
|
170
|
+
setup_route 'hello', type: 'html', view: 'hello'
|
171
|
+
run 'npm i --global-style'
|
172
|
+
end
|
173
|
+
|
174
|
+
local_config.add "ENVOY_#{profile.upcase}_PLUGIN_UUID", res['data']['id'], true
|
175
|
+
write_local_config!
|
176
|
+
|
177
|
+
say "✔ Your plugin is ready for development."
|
178
|
+
say "ℹ Run `npm install --global-style` before continuing." if options.bootstrap
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
data/lib/tasks/routes.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'launchy'
|
2
|
+
module Envoy
|
3
|
+
class Routes < Commands
|
4
|
+
include Mixins
|
5
|
+
include Envoy::Generator
|
6
|
+
|
7
|
+
desc 'add <name>', 'Add a route to your plugin'
|
8
|
+
def add(name)
|
9
|
+
setup_route name
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'remove <name>', 'Add a route to your plugin'
|
13
|
+
def remove(name)
|
14
|
+
teardown_route name
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'fake <name>', 'Add a route to your plugin'
|
18
|
+
def fake(name)
|
19
|
+
fake_data = read_data self.class.source_root + '/events/route.json'
|
20
|
+
fake_data['request_meta']['route'] = name
|
21
|
+
|
22
|
+
say_status 'request', indent_lines(pretty_json(min_json(fake_data))).lstrip, :magenta
|
23
|
+
output = `node_modules/.bin/invoke local #{fake_data.to_json.to_json}`
|
24
|
+
output = output.split('------%%------')
|
25
|
+
puts output
|
26
|
+
json = JSON.parse output[1]
|
27
|
+
if json.dig('payload', 'body', 'html')
|
28
|
+
tmpfile = ".tmp/response-#{Time.now.to_i}.html"
|
29
|
+
create_file tmpfile do
|
30
|
+
json.dig('payload', 'body', 'html')
|
31
|
+
end
|
32
|
+
Launchy.open(destination_root + '/' + tmpfile)
|
33
|
+
json
|
34
|
+
end
|
35
|
+
say_status 'stdout', indent_lines(output[0]).lstrip, :magenta
|
36
|
+
say_status 'response', indent_lines(pretty_json(min_json(json))).lstrip, :magenta
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/tasks/test.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'tty-prompt'
|
2
|
+
require 'tty-spinner'
|
3
|
+
require 'tty-progressbar'
|
4
|
+
|
5
|
+
module Envoy
|
6
|
+
class Test < Commands
|
7
|
+
|
8
|
+
include Thor::Actions
|
9
|
+
include Mixins
|
10
|
+
|
11
|
+
desc 'prompt', 'Test various prompt options'
|
12
|
+
def prompt
|
13
|
+
prompt = TTY::Prompt.new
|
14
|
+
puts prompt.yes?('Do you like Ruby?')
|
15
|
+
puts prompt.select("Choose your destiny?", %w(Scorpion Kano Jax))
|
16
|
+
choices = %w(vodka beer wine whisky bourbon)
|
17
|
+
puts prompt.multi_select("Select drinks?", choices)
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
desc 'spinner', 'Test the spinner'
|
22
|
+
def spinner
|
23
|
+
spinner = TTY::Spinner.new(":spinner Loading ...", format: :triangle, interval: 10)
|
24
|
+
spinner.start
|
25
|
+
sleep(2)
|
26
|
+
|
27
|
+
spinner.error('Failed')
|
28
|
+
# spinner.success('Done!')
|
29
|
+
end
|
30
|
+
|
31
|
+
desc 'status', 'say status'
|
32
|
+
def status
|
33
|
+
say_status('Warning','You are so silly.'.on_red,:yellow)
|
34
|
+
# print_in_columns(['what','does','this','do'])
|
35
|
+
# print_in_columns(['it','does','this','too'])
|
36
|
+
print_wrapped(%Q(Enim non aliquip labore adipisicing deserunt commodo velit incididunt irure non minim. Sunt anim do amet veniam id adipisicing sint et voluptate voluptate quis reprehenderit. Esse elit consectetur ea enim cillum commodo aliquip exercitation elit officia. Do minim dolor in cupidatat eu deserunt nostrud aliqua non sit exercitation. Cupidatat occaecat nostrud labore dolore quis dolore laborum magna nisi. Ex ullamco esse id voluptate quis excepteur mollit aliqua esse aliquip ipsum.),indent:14)
|
37
|
+
end
|
38
|
+
|
39
|
+
desc 'progress', 'Test the progress bar'
|
40
|
+
def progress
|
41
|
+
bar = TTY::ProgressBar.new("downloading [:bar] :elapsed :percent", total: 30)
|
42
|
+
30.times do
|
43
|
+
sleep(0.1)
|
44
|
+
bar.advance(1)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.source_root
|
49
|
+
File.dirname(__FILE__)
|
50
|
+
end
|
51
|
+
|
52
|
+
desc 'bootstrap', 'Test bootstrapping'
|
53
|
+
def bootstrap
|
54
|
+
create_file "sandbox/test.txt"
|
55
|
+
end
|
56
|
+
|
57
|
+
desc 'testindent', 'Test bootstrapping'
|
58
|
+
def testindent
|
59
|
+
say_status :hmm, 'yeah'
|
60
|
+
indent(7) do
|
61
|
+
say 'hooo yeah'
|
62
|
+
puts 'hey yeah'
|
63
|
+
end
|
64
|
+
# say 'hooo yeah'
|
65
|
+
# create_file "sandbox/test.txt"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'launchy'
|
2
|
+
module Envoy
|
3
|
+
class Workers < Commands
|
4
|
+
include Mixins
|
5
|
+
include Envoy::Generator
|
6
|
+
|
7
|
+
desc 'add <name>', 'Add a worker to your plugin'
|
8
|
+
def add(name)
|
9
|
+
setup_worker name
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'remove <name>', 'Remove a worker from your plugin'
|
13
|
+
def remove(name)
|
14
|
+
teardown_worker name
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'fake <name>', 'Fake a worker event to your plugin'
|
18
|
+
def fake(name)
|
19
|
+
return error 'Not yet implemented'
|
20
|
+
fake_data = read_data self.class.source_root + '/events/worker.json'
|
21
|
+
fake_data['request_meta']['route'] = name
|
22
|
+
|
23
|
+
say_status 'request', indent_lines(pretty_json(min_json(fake_data))).lstrip, :magenta
|
24
|
+
output = `node_modules/.bin/invoke local #{fake_data.to_json.to_json}`
|
25
|
+
output = output.split('------%%------')
|
26
|
+
json = JSON.parse output[1]
|
27
|
+
if json.dig('payload', 'body', 'html')
|
28
|
+
tmpfile = ".tmp/response-#{Time.now.to_i}.html"
|
29
|
+
create_file tmpfile do
|
30
|
+
json.dig('payload', 'body', 'html')
|
31
|
+
end
|
32
|
+
Launchy.open(destination_root + '/' + tmpfile)
|
33
|
+
json
|
34
|
+
end
|
35
|
+
say_status 'stdout', indent_lines(output[0]).lstrip, :magenta
|
36
|
+
say_status 'response', indent_lines(pretty_json(min_json(json))).lstrip, :magenta
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/readme.md
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,276 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: envoy-cli
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0rc1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- David Boskovic
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-03-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.19'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.19.1
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.19'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.19.1
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: terminal-table
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.5'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 1.5.2
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '1.5'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 1.5.2
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: colorize
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0.7'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.7.7
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.7'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 0.7.7
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: unirest
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '1.1'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.1.2
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.1'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 1.1.2
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: parseconfig
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '1.0'
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.0.8
|
103
|
+
type: :runtime
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1.0'
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 1.0.8
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: coderay
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '1.1'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 1.1.1
|
123
|
+
type: :runtime
|
124
|
+
prerelease: false
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '1.1'
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 1.1.1
|
133
|
+
- !ruby/object:Gem::Dependency
|
134
|
+
name: launchy
|
135
|
+
requirement: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '2.4'
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 2.4.3
|
143
|
+
type: :runtime
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - "~>"
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '2.4'
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 2.4.3
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: tty
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.5'
|
160
|
+
- - ">="
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: 0.5.0
|
163
|
+
type: :runtime
|
164
|
+
prerelease: false
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - "~>"
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0.5'
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: 0.5.0
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: net-http-uploadprogress
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '2.0'
|
180
|
+
- - ">="
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: 2.0.0
|
183
|
+
type: :runtime
|
184
|
+
prerelease: false
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
requirements:
|
187
|
+
- - "~>"
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '2.0'
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: 2.0.0
|
193
|
+
description: The Envoy command line interface handles almost all the heavy lifting
|
194
|
+
for you during development of platform plugins.
|
195
|
+
email:
|
196
|
+
- david@envoy.com
|
197
|
+
executables:
|
198
|
+
- envoy
|
199
|
+
extensions: []
|
200
|
+
extra_rdoc_files: []
|
201
|
+
files:
|
202
|
+
- ".gitignore"
|
203
|
+
- ".rspec"
|
204
|
+
- ".rubocop.yml"
|
205
|
+
- ".ruby-version"
|
206
|
+
- Gemfile
|
207
|
+
- bin/envoy
|
208
|
+
- bin/envoy.bak
|
209
|
+
- bootstrap/base/.envoyrc
|
210
|
+
- bootstrap/base/.jshintrc
|
211
|
+
- bootstrap/base/.nvmrc
|
212
|
+
- bootstrap/base/config/.gitkeep
|
213
|
+
- bootstrap/base/docs/.gitkeep
|
214
|
+
- bootstrap/base/gulpfile.js
|
215
|
+
- bootstrap/base/i18n/.gitkeep
|
216
|
+
- bootstrap/base/index.js
|
217
|
+
- bootstrap/base/lib/.gitkeep
|
218
|
+
- bootstrap/base/routes/.gitkeep
|
219
|
+
- bootstrap/base/views/.gitkeep
|
220
|
+
- bootstrap/base/workers/.gitkeep
|
221
|
+
- bootstrap/events/generic.json
|
222
|
+
- bootstrap/events/host_notification.json
|
223
|
+
- bootstrap/events/route.json
|
224
|
+
- bootstrap/events/sms_host_notification.json
|
225
|
+
- bootstrap/templates/docs/about.md.erb
|
226
|
+
- bootstrap/templates/gitignore.erb
|
227
|
+
- bootstrap/templates/index.js.erb
|
228
|
+
- bootstrap/templates/license.md.erb
|
229
|
+
- bootstrap/templates/npmignore.erb
|
230
|
+
- bootstrap/templates/package.json
|
231
|
+
- bootstrap/templates/readme.md.erb
|
232
|
+
- bootstrap/templates/routes/callback.js.erb
|
233
|
+
- bootstrap/templates/routes/html.js.erb
|
234
|
+
- bootstrap/templates/routes/json.js.erb
|
235
|
+
- bootstrap/templates/routes/other.js.erb
|
236
|
+
- bootstrap/templates/views/hello.html.erb
|
237
|
+
- bootstrap/templates/views/starter.html.erb
|
238
|
+
- bootstrap/templates/worker.js.erb
|
239
|
+
- envoy-cli.gemspec
|
240
|
+
- lib/envoy.rb
|
241
|
+
- lib/envoy/version.rb
|
242
|
+
- lib/inc/commands.rb
|
243
|
+
- lib/inc/generator.rb
|
244
|
+
- lib/inc/mixins.rb
|
245
|
+
- lib/inc/runner.rb
|
246
|
+
- lib/tasks/plugin.rb
|
247
|
+
- lib/tasks/routes.rb
|
248
|
+
- lib/tasks/test.rb
|
249
|
+
- lib/tasks/workers.rb
|
250
|
+
- readme.md
|
251
|
+
homepage: http://rubygemspec.org/gems/envoy-cli
|
252
|
+
licenses:
|
253
|
+
- MIT
|
254
|
+
metadata: {}
|
255
|
+
post_install_message:
|
256
|
+
rdoc_options: []
|
257
|
+
require_paths:
|
258
|
+
- lib
|
259
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
260
|
+
requirements:
|
261
|
+
- - ">="
|
262
|
+
- !ruby/object:Gem::Version
|
263
|
+
version: '0'
|
264
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
265
|
+
requirements:
|
266
|
+
- - ">"
|
267
|
+
- !ruby/object:Gem::Version
|
268
|
+
version: 1.3.1
|
269
|
+
requirements: []
|
270
|
+
rubyforge_project:
|
271
|
+
rubygems_version: 2.6.4
|
272
|
+
signing_key:
|
273
|
+
specification_version: 4
|
274
|
+
summary: Envoy platform command line interface.
|
275
|
+
test_files: []
|
276
|
+
has_rdoc:
|