apmate 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2496c46adbd57826ab1cb53f39b2a0bdd96e8a6
4
- data.tar.gz: 07e364aee5bd76bc430cabdeca8561b9fb2774cc
3
+ metadata.gz: f679bfcd9b4a5ba1a3e2e77233579372ccb920cc
4
+ data.tar.gz: dcce6f5b24192a76fabada8295d88bf0a0a0ac87
5
5
  SHA512:
6
- metadata.gz: 43660d40157633cb93dfcb2c2bfe4ec1ff7a1a8c5d2c8bf19ee019c306bcaadc140b9fe742bdf5fbde6d97b3eef921763ad2e86d9995b508a154eb3cad6f1a8c
7
- data.tar.gz: fd8677d72b93413490996c1402a05e5fe815decb50a2fd35f6992d506d1be7b0e146b40c095f7b286cd8c96b968d22ab389392f41b4a43f2dd58081665f8d0d1
6
+ metadata.gz: 861aabdb368c4bc510c65257672bb2bd8aaf37590f2f226259c200e2ca75bd20202fb692cde0fc22bef38b36abfa9b1092f2fba229203689bde11298d8dcf59f
7
+ data.tar.gz: 3c26ca10bece7363629d29fee9e40b69698816e895df5e87e6f5834f30a21392d5a97647d3de2ba2324eaf2ca492e33fa1be19b97dc54e813cd0e0a6ca450afb
data/lib/apmate/cli.rb CHANGED
@@ -9,42 +9,16 @@ require 'pp'
9
9
  require 'uri'
10
10
  require 'yaml'
11
11
 
12
-
13
- class Apmate::Logger
14
- @@logger = nil
15
-
16
- def self.logger
17
- @@logger
18
- end
19
-
20
- def self.logger=(logger)
21
- @@logger = logger
22
- end
23
-
24
- def self.log_level(opts)
25
- if opts[:log]
26
- if opts[:log] == true
27
- @@logger = ::Logger.new(File.join Dir.pwd, 'apmate-cli.log')
28
- else
29
- @@logger = ::Logger.new(File.join Dir.pwd, opts[:log])
30
- end
31
- else
32
- @@logger = ::Logger.new('/dev/null')
33
- end
34
- end
35
-
36
- def self.verbosity(opts)
37
- if opts[:verbose]
38
- @@logger.level = ::Logger::DEBUG
39
- else
40
- @@logger.level = ::Logger::INFO
41
- end
42
- end
43
- end
44
-
45
12
  class Apmate::CLI
46
13
  APMATE_BASE_URL = ENV['APMATE_BASE_URL'] || 'http://localhost'
47
14
  APMATE_PORT = ENV['APMATE_PORT'] || '3000'
15
+ APMATE_URL = "#{APMATE_BASE_URL}:#{APMATE_PORT}"
16
+ ENDPOINTS = {
17
+ get_artifact_environment: '/api/artifacts/environment',
18
+ get_artifact: '/api/artifacts',
19
+ get_artifact_name: '/api/artifacts/name',
20
+ promote_environment: '/api/environments/promote'
21
+ }
48
22
 
49
23
  def self.apply_file(file, opts)
50
24
  Apmate::Logger.logger.info "applying file #{file}"
@@ -69,11 +43,25 @@ class Apmate::CLI
69
43
  end
70
44
  end
71
45
 
72
- def self.apmate_get(artifact_name, environment_name, opts)
46
+ def self.apmate_get_artifact_environment(artifact_name, environment_name, opts)
47
+ params = { :name => artifact_name, :environment_name => environment_name }
48
+ apmate_get(ENDPOINTS[:get_artifact_environment], opts, params)
49
+ end
50
+
51
+ def self.apmate_get_artifact_name(artifact_id, group_id, filename_extension, opts)
52
+ params = { artifact_id: artifact_id, group_id: group_id, filename_extension: filename_extension }
53
+ apmate_get(ENDPOINTS[:get_artifact_name], opts, params)
54
+ end
55
+
56
+ def self.apmate_get_artifact(artifact_name, opts)
57
+ params = {name: artifact_name}
58
+ apmate_get(ENDPOINTS[:get_artifact], opts, params)
59
+ end
60
+
61
+ def self.apmate_get(endpoint, opts, params=nil)
73
62
  Apmate::Logger.logger.debug "Beginning get request."
74
- uri = URI("#{Apmate::CLI::APMATE_BASE_URL}:#{Apmate::CLI::APMATE_PORT}/api/artifacts")
63
+ uri = URI("#{Apmate::CLI::APMATE_URL}#{endpoint}")
75
64
  Apmate::Logger.logger.debug "uri: #{uri}"
76
- params = { :name => artifact_name, :environment_name => environment_name }
77
65
  uri.query = URI.encode_www_form(params)
78
66
  response = Net::HTTP.get_response(uri)
79
67
  output = JSON.pretty_generate(JSON.parse(response.body))
@@ -105,7 +93,7 @@ class Apmate::CLI
105
93
  def self.apmate_promote(env_from, env_to, opts)
106
94
  Apmate::Logger.logger.debug "Beginning post request."
107
95
 
108
- uri = URI("#{Apmate::CLI::APMATE_BASE_URL}:#{Apmate::CLI::APMATE_PORT}/api/environments/promote")
96
+ uri = URI("#{Apmate::CLI::APMATE_URL}#{ENDPOINTS[:promote_environment]}")
109
97
  Apmate::Logger.logger.debug "uri: #{uri}"
110
98
 
111
99
  payload = { environment_from: env_from, environment_to: env_to }
@@ -133,117 +121,22 @@ class Apmate::CLI
133
121
  end
134
122
 
135
123
  def run
136
- command = Cri::Command.define do
137
- name 'apmate'
138
- usage 'apmate <command> [<args>]'
139
- summary 'Environment datastore CLI'
140
- description 'Apmate is responsible for managing data in the Apmate environment datastore.'
141
-
142
- flag :h, :help, 'show help for this command' do |value, cmd|
143
- puts cmd.help
144
- exit 0
145
- end
146
- end
147
-
148
- help_command = Cri::Command.define do
149
- name 'help'
150
- usage 'help'
151
- summary 'Prints help screen.'
152
- description 'This command prints the help screen.'
153
-
154
- flag :h, :help, 'show help for this command' do |value, cmd|
155
- puts cmd.help
156
- exit 0
157
- end
158
-
159
- run do |opts, args, cmd|
160
- command.run ['-h']
161
- end
162
- end
163
-
164
- get_command = Cri::Command.define do
165
- name 'get'
166
- usage 'get <artifact_name> <environment_name>'
167
- summary 'Returns the requested object from the datastore.'
168
- description 'Returns the requested object from the datastore.'
169
-
170
- flag :h, :help, 'show help for this command' do |value, cmd|
171
- puts cmd.help
172
- exit 0
173
- end
174
-
175
- run do |opts, args, cmd|
176
- Apmate::Logger.log_level(opts)
177
- Apmate::Logger.verbosity(opts)
178
- Apmate::Logger.logger.debug "opts: #{opts}"
179
- Apmate::Logger.logger.debug "args: #{args}"
180
- Apmate::Logger.logger.debug "cmd: #{cmd.to_s}"
181
- cmd.run(['-h']) unless args.count == 2
182
- Apmate::CLI.apmate_get(args[0], args[1], opts)
183
- end
184
- end
185
-
186
- promote_command = Cri::Command.define do
187
- name 'promote'
188
- usage 'promote <environment_from_name> <environment_to_name>'
189
- summary 'Promotes values from one environment to another environment.'
190
- description 'Promotes values from one environment to another environment.'
191
-
192
- flag :h, :help, 'show help for this command' do |value, cmd|
193
- puts cmd.help
194
- exit 0
195
- end
196
-
197
- run do |opts, args, cmd|
198
- Apmate::Logger.log_level(opts)
199
- Apmate::Logger.verbosity(opts)
200
- Apmate::Logger.logger.debug "opts: #{opts}"
201
- Apmate::Logger.logger.debug "args: #{args}"
202
- Apmate::Logger.logger.debug "cmd: #{cmd.to_s}"
203
- cmd.run(['-h']) unless args.count == 2
204
- Apmate::CLI.apmate_promote(args[0], args[1], opts)
205
- end
124
+ get_command = Command::GET
125
+
126
+ [
127
+ Command::Get::ARTIFACT,
128
+ Command::Get::ARTIFACT_ENVIRONMENT,
129
+ Command::Get::ARTIFACT_NAME
130
+ ].each do |cmd|
131
+ get_command.add_command cmd
206
132
  end
207
133
 
208
- apply_command = Cri::Command.define do
209
- name 'apply'
210
- usage 'apply [options] <arg>'
211
- summary 'Creates or updates objects in the Apmate environment datastore.'
212
- description 'Creates or updates objects in the Apmate environment datastore.'
213
-
214
- flag :h, :help, 'show help for this command' do |value, cmd|
215
- puts cmd.help
216
- exit 0
217
- end
218
- flag :v, :verbose, 'be verbose'
219
- flag :q, :quiet, 'Do not output Apmate reponse.'
220
- required :o, :output, 'Name of file to write operation output.'
221
- optional :l, :log, 'Write to log file if passed. Set a value for a custom location.'
222
-
223
- run do |opts, args, cmd|
224
- Apmate::Logger.log_level(opts)
225
- Apmate::Logger.verbosity(opts)
226
- Apmate::Logger.logger.debug "opts: #{opts}"
227
- Apmate::Logger.logger.debug "args: #{args}"
228
- Apmate::Logger.logger.debug "cmd: #{cmd.to_s}"
229
- cmd.run(['-h']) unless args[0]
230
- if args[0]
231
- if File.directory? args[0]
232
- Apmate::CLI.apply_dir args[0], opts
233
- else
234
- Apmate::CLI.apply_file args[0], opts
235
- end
236
- else
237
- puts cmd.help
238
- exit 0
239
- end
240
- end
241
- end
134
+ command = Command::BASE
242
135
  [
243
- help_command,
244
- apply_command,
136
+ Command::HELP,
137
+ Command::APPLY,
245
138
  get_command,
246
- promote_command
139
+ Command::PROMOTE
247
140
  ].each do |cmd|
248
141
  command.add_command cmd
249
142
  end
@@ -0,0 +1,32 @@
1
+ module Apmate::CLI::Command
2
+ APPLY = Cri::Command.define do
3
+ name 'apply'
4
+ usage 'apply [options] <path>'
5
+ summary 'Creates or updates objects in the Apmate environment datastore.'
6
+ description 'Creates or updates objects in the Apmate environment datastore.'
7
+
8
+ flag :h, :help, 'show help for this command' do |value, cmd|
9
+ puts cmd.help
10
+ exit 0
11
+ end
12
+
13
+ run do |opts, args, cmd|
14
+ Apmate::Logger.log_level(opts)
15
+ Apmate::Logger.verbosity(opts)
16
+ Apmate::Logger.logger.debug "opts: #{opts}"
17
+ Apmate::Logger.logger.debug "args: #{args}"
18
+ Apmate::Logger.logger.debug "cmd: #{cmd.to_s}"
19
+ cmd.run(['-h']) unless args[0]
20
+ if args[0]
21
+ if File.directory? args[0]
22
+ Apmate::CLI.apply_dir args[0], opts
23
+ else
24
+ Apmate::CLI.apply_file args[0], opts
25
+ end
26
+ else
27
+ puts cmd.help
28
+ exit 0
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,18 @@
1
+ module Apmate::CLI::Command
2
+ BASE = Cri::Command.define do
3
+ name 'apmate'
4
+ usage 'apmate <command> [<args>]'
5
+ summary 'Environment datastore CLI'
6
+ description 'Apmate is responsible for managing data in the Apmate environment datastore.'
7
+
8
+ flag :h, :help, 'show help for this command' do |value, cmd|
9
+ puts cmd.help
10
+ exit 0
11
+ end
12
+
13
+ flag :v, :verbose, 'be verbose'
14
+ flag :q, :quiet, 'Do not output Apmate reponse.'
15
+ required :o, :output, 'Name of file to write operation output.'
16
+ optional :l, :log, 'Write to log file if passed. Set a value for a custom location.'
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ module Apmate::CLI::Command::Get
2
+ ARTIFACT = Cri::Command.define do
3
+ name 'artifact'
4
+ usage 'artifact <artifact_name>'
5
+ summary 'Returns the requested artifact object from the datastore.'
6
+ description 'Returns the requested artifact object from the datastore.'
7
+
8
+ run do |opts, args, cmd|
9
+ Apmate::Logger.log_level(opts)
10
+ Apmate::Logger.verbosity(opts)
11
+ Apmate::Logger.logger.debug "opts: #{opts}"
12
+ Apmate::Logger.logger.debug "args: #{args}"
13
+ Apmate::Logger.logger.debug "cmd: #{cmd.to_s}"
14
+ if args.count == 1
15
+ Apmate::CLI.apmate_get_artifact(args[0], opts)
16
+ else
17
+ cmd.run(['-h'])
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Apmate::CLI::Command::Get
2
+ ARTIFACT_ENVIRONMENT = Cri::Command.define do
3
+ name 'artifact_environment'
4
+ usage 'artifact_environment <artifact_name> <environment_name>'
5
+ summary 'Returns the requested artifact with it\'s environment data from the datastore.'
6
+ description 'Returns the requested artifact with it\'s environment data from the datastore.'
7
+
8
+ run do |opts, args, cmd|
9
+ Apmate::Logger.log_level(opts)
10
+ Apmate::Logger.verbosity(opts)
11
+ Apmate::Logger.logger.debug "opts: #{opts}"
12
+ Apmate::Logger.logger.debug "args: #{args}"
13
+ Apmate::Logger.logger.debug "cmd: #{cmd.to_s}"
14
+ if args.count == 2
15
+ Apmate::CLI.apmate_get_artifact_environment(args[0], args[1], opts)
16
+ else
17
+ cmd.run(['-h'])
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Apmate::CLI::Command::Get
2
+ ARTIFACT_NAME = Cri::Command.define do
3
+ name 'artifact_name'
4
+ usage 'artifact_name <artifact_id> <group_id> <filename_extension>'
5
+ summary 'Returns the requested artifact object name from the datastore.'
6
+ description 'Returns the requested artifact object name from the datastore.'
7
+
8
+ run do |opts, args, cmd|
9
+ Apmate::Logger.log_level(opts)
10
+ Apmate::Logger.verbosity(opts)
11
+ Apmate::Logger.logger.debug "opts: #{opts}"
12
+ Apmate::Logger.logger.debug "args: #{args}"
13
+ Apmate::Logger.logger.debug "cmd: #{cmd.to_s}"
14
+ if args.count == 3
15
+ Apmate::CLI.apmate_get_artifact_name(args[0], args[1], args[2], opts)
16
+ else
17
+ cmd.run(['-h'])
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,8 @@
1
+ module Apmate::CLI::Command
2
+ GET = Cri::Command.define do
3
+ name 'get'
4
+ usage "get <command> [<args>]\n\nCommands: artifact, artifact_environment, artifact_name"
5
+ summary 'Returns the requested object or data from the datastore.'
6
+ description 'Returns the requested object or data from the datastore.'
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ module Apmate::CLI::Command
2
+ HELP = Cri::Command.define do
3
+ name 'help'
4
+ usage 'help'
5
+ summary 'Prints help screen.'
6
+ description 'This command prints the help screen.'
7
+
8
+ flag :h, :help, 'show help for this command' do |value, cmd|
9
+ puts cmd.help
10
+ exit 0
11
+ end
12
+
13
+ run do |opts, args, cmd|
14
+ command.run ['-h']
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ module Apmate::CLI::Command
2
+ PROMOTE = Cri::Command.define do
3
+ name 'promote'
4
+ usage 'promote <environment_from> <environment_to>'
5
+ summary 'Promotes values from one environment to another environment.'
6
+ description 'Promotes values from one environment to another environment.'
7
+
8
+ flag :h, :help, 'show help for this command' do |value, cmd|
9
+ puts cmd.help
10
+ exit 0
11
+ end
12
+
13
+ run do |opts, args, cmd|
14
+ Apmate::Logger.log_level(opts)
15
+ Apmate::Logger.verbosity(opts)
16
+ Apmate::Logger.logger.debug "opts: #{opts}"
17
+ Apmate::Logger.logger.debug "args: #{args}"
18
+ Apmate::Logger.logger.debug "cmd: #{cmd.to_s}"
19
+ cmd.run(['-h']) unless args.count == 2
20
+ Apmate::CLI.apmate_promote(args[0], args[1], opts)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,31 @@
1
+ class Apmate::Logger
2
+ @@logger = nil
3
+
4
+ def self.logger
5
+ @@logger
6
+ end
7
+
8
+ def self.logger=(logger)
9
+ @@logger = logger
10
+ end
11
+
12
+ def self.log_level(opts)
13
+ if opts[:log]
14
+ if opts[:log] == true
15
+ @@logger = ::Logger.new(File.join Dir.pwd, 'apmate-cli.log')
16
+ else
17
+ @@logger = ::Logger.new(File.join Dir.pwd, opts[:log])
18
+ end
19
+ else
20
+ @@logger = ::Logger.new('/dev/null')
21
+ end
22
+ end
23
+
24
+ def self.verbosity(opts)
25
+ if opts[:verbose]
26
+ @@logger.level = ::Logger::DEBUG
27
+ else
28
+ @@logger.level = ::Logger::INFO
29
+ end
30
+ end
31
+ end
@@ -1,3 +1,3 @@
1
1
  module Apmate
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/apmate.rb CHANGED
@@ -1,2 +1,12 @@
1
1
  require "apmate/version"
2
+ require 'apmate/logger/logger'
2
3
  require "apmate/cli"
4
+
5
+ require 'apmate/commands/base'
6
+ require 'apmate/commands/help'
7
+ require 'apmate/commands/get'
8
+ require 'apmate/commands/get/artifact'
9
+ require 'apmate/commands/get/artifact_environment'
10
+ require 'apmate/commands/get/artifact_name'
11
+ require 'apmate/commands/apply'
12
+ require 'apmate/commands/promote'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apmate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Baldridge
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-27 00:00:00.000000000 Z
11
+ date: 2018-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cri
@@ -77,6 +77,15 @@ files:
77
77
  - exe/apmate
78
78
  - lib/apmate.rb
79
79
  - lib/apmate/cli.rb
80
+ - lib/apmate/commands/apply.rb
81
+ - lib/apmate/commands/base.rb
82
+ - lib/apmate/commands/get.rb
83
+ - lib/apmate/commands/get/artifact.rb
84
+ - lib/apmate/commands/get/artifact_environment.rb
85
+ - lib/apmate/commands/get/artifact_name.rb
86
+ - lib/apmate/commands/help.rb
87
+ - lib/apmate/commands/promote.rb
88
+ - lib/apmate/logger/logger.rb
80
89
  - lib/apmate/version.rb
81
90
  homepage:
82
91
  licenses: []