unidad 0.0.1.beta3 → 0.0.1.beta5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 08d1f8141269514c7d44d53b5d768e48849a210d
4
- data.tar.gz: 52d48d7e06b198cc661c510f732c000922c3ef38
3
+ metadata.gz: fe7854657d5f1834fd116b5b1af5b3e56d9e3523
4
+ data.tar.gz: 4f29f8584ed29c726b95e3b3f4a7ee83ef4a55d6
5
5
  SHA512:
6
- metadata.gz: 35b482f34d7b6fa81e28124a256d6552c098692a1097eb55d38f38640cf2a0ad4ad5f4f4b03fd2b93e8050a5e56ff9247f54ecbbffab85e330100da61d75c0dd
7
- data.tar.gz: faf792535c4603546078ac6841d720635c353f98714c50d296c55ae391d7f563e301d6e56e52c521a1b8438c55d5cc44f88ce0dba753b6f8833583a7a329847d
6
+ metadata.gz: b32a5997d99874bcff44707abd28847db63946aad2c54c4e459830c7fb2ce9a9795a41b93774fb28c8a09987c8f5407392b7cd485c98b5d7b030a507f626bf48
7
+ data.tar.gz: d8a2ee95f14ddf42d34a46dedba21b12d96e066f412077d1f7b00762c642a5af2f6d11abf93c6ad180c4c91c2837eb7494386fa3118234a8bdd4f068adfcc8be
data/.rubocop.yml CHANGED
@@ -1,12 +1,12 @@
1
1
  AllCops:
2
- RunRailsCops: false
3
2
  Exclude:
4
3
  - lib/util/match_method_macros.rb
5
4
  - spec/test_app/**
6
5
  - bin/**
6
+ DisplayCopNames: true
7
7
 
8
8
  LineLength:
9
- Max: 150
9
+ Max: 175
10
10
 
11
11
  ClassLength:
12
12
  CountComments: false # count full line comments?
@@ -14,7 +14,7 @@ ClassLength:
14
14
 
15
15
  MethodLength:
16
16
  CountComments: false # count full line comments?
17
- Max: 10
17
+ Max: 20
18
18
 
19
19
  HashSyntax:
20
20
  EnforcedStyle: hash_rockets
@@ -22,9 +22,6 @@ HashSyntax:
22
22
  Documentation:
23
23
  Enabled: false
24
24
 
25
- DefaultScope:
26
- Enabled: false
27
-
28
25
  CollectionMethods:
29
26
  PreferredMethods:
30
27
  map: 'collect'
@@ -37,4 +34,19 @@ Output:
37
34
  Enabled: false
38
35
 
39
36
  HasAndBelongsToMany:
40
- Enabled: false
37
+ Enabled: false
38
+
39
+ Style/ClassAndModuleChildren:
40
+ Enabled: false
41
+
42
+ Style/RegexpLiteral:
43
+ EnforcedStyle: percent_r
44
+
45
+ Style/SpaceInsideStringInterpolation:
46
+ Enabled: false
47
+
48
+ Style/SymbolProc:
49
+ Enabled: false
50
+
51
+ Metrics/AbcSize:
52
+ Max: 17
data/Guardfile CHANGED
@@ -1,12 +1,12 @@
1
1
  guard 'rspec', :cmd => 'bundle exec rspec --colour', :all_on_start => false, :all_after_pass => false do
2
2
  watch('spec/spec_helper.rb') { 'spec' }
3
- watch(/^spec\/.+_spec\.rb/)
4
- watch(/^app\/(.+)\.rb/) { |m| "spec/app/#{m[1]}_spec.rb" }
5
- watch(/^lib\/(.+)\.rb/) { |m| "spec/lib/#{m[1]}_spec.rb" }
3
+ watch(%r{^spec\/.+_spec\.rb})
4
+ watch(%r{^app\/(.+)\.rb}) { |m| "spec/app/#{m[1]}_spec.rb" }
5
+ watch(%r{^lib\/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
6
6
  end
7
7
 
8
- guard :rubocop do
9
- watch(/.+\.gemspec$/)
10
- watch(/.+\.rb$/)
11
- watch(/(?:.+\/)?\.rubocop\.yml$/) { |m| File.dirname(m[0]) }
8
+ guard :rubocop, :all_on_start => false do
9
+ watch(%r{.+\.gemspec$})
10
+ watch(%r{.+\.rb$})
11
+ watch(%r{(?:.+\/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
12
12
  end
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # Unidad
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/unidad`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ A thin wrapper and notifications layer around common command-line utilities.
6
4
 
7
5
  ## Installation
8
6
 
@@ -22,14 +20,19 @@ Or install it yourself as:
22
20
 
23
21
  ## Usage
24
22
 
25
- TODO: Write usage instructions here
23
+ The following commands are available when you install Unidad.
24
+
25
+ ```
26
+ unidad deploy [ENVIRONMENT] # Deploy your application to the specified environment.
27
+ unidad galaxy [REQUIREMENTS_FILE] # Install Ansible dependencies via Galaxy.
28
+ unidad playbook [HOSTS_FILE] [PLAYBOOK] # Run an Ansible playbook.
29
+ unidad s3_website compile_jar # Compile the .jar file required for deployment. Compilation only happens if a .jar does not exist yet.
30
+ ```
26
31
 
27
32
  ## Development
28
33
 
29
34
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
30
35
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
-
33
36
  ## Contributing
34
37
 
35
38
  1. Fork it ( https://github.com/[my-github-username]/unidad/fork )
@@ -2,13 +2,15 @@ module Unidad
2
2
  module Cli
3
3
  module Ansible
4
4
  class Galaxy < Unidad::Cli::Ansible::Base
5
+ namespace :galaxy
6
+
5
7
  argument :requirements_file, :desc => 'The YAML file containing requirements to install',
6
8
  :type => :string,
7
9
  :required => true
8
10
 
9
11
  def run_galaxy
10
12
  Unidad::CommandBuilder.all(:galaxy, :requirements_file => ansible_path.join(requirements_file)).each do |command|
11
- say_status :run, command
13
+ run command
12
14
  end
13
15
  end
14
16
  end
@@ -2,6 +2,8 @@ module Unidad
2
2
  module Cli
3
3
  module Ansible
4
4
  class Playbook < Unidad::Cli::Ansible::Base
5
+ namespace :playbook
6
+
5
7
  argument :hosts_file, :desc => 'The hosts file to use when running the playbook',
6
8
  :type => :string,
7
9
  :required => true
@@ -6,7 +6,7 @@ module Unidad
6
6
  # The banner for this class. You can customize it if you are invoking the
7
7
  # thor class by another ways which is not the Thor::Runner.
8
8
  def self.banner
9
- "#{basename} #{name.split('::').last.downcase} #{arguments.collect(&:usage).compact.join(' ')}"
9
+ "#{basename} #{namespace} #{arguments.collect(&:usage).compact.join(' ')}"
10
10
  end
11
11
  end
12
12
  end
@@ -6,6 +6,7 @@ Dotenv.load
6
6
 
7
7
  require 'unidad/cli/namespaced_group'
8
8
  require 'unidad/cli/deploy'
9
+ require 'unidad/cli/s3_website'
9
10
  require 'unidad/cli/ansible/base'
10
11
  require 'unidad/cli/ansible/playbook'
11
12
  require 'unidad/cli/ansible/galaxy'
@@ -14,6 +15,7 @@ module Unidad
14
15
  module Cli
15
16
  class Root < Thor
16
17
  register Unidad::Cli::Deploy, 'deploy', 'deploy [ENVIRONMENT]', 'Deploy your application to the specified environment.'
18
+ register Unidad::Cli::S3Website, 's3_website', 's3_website [COMMAND]', 'Execute a task related to your s3_website deployed site.'
17
19
  register Unidad::Cli::Ansible::Playbook, 'playbook', 'playbook [HOSTS_FILE] [PLAYBOOK]', 'Run an Ansible playbook.'
18
20
  register Unidad::Cli::Ansible::Galaxy, 'galaxy', 'galaxy [REQUIREMENTS_FILE]', 'Install Ansible dependencies via Galaxy.'
19
21
  end
@@ -0,0 +1,15 @@
1
+ module Unidad
2
+ module Cli
3
+ class S3Website < Thor
4
+ include Thor::Actions
5
+
6
+ desc 'compile_jar', 'Compile the .jar file required for deployment. Compilation only happens if a .jar does not exist yet.'
7
+ def compile_jar
8
+ gem_directory = `bundle show s3_website`.strip
9
+ inside(gem_directory) do
10
+ run('[ -f ./target/scala-2.11/s3_website.jar ] || ./sbt assembly')
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ module Unidad
2
+ class Error < StandardError
3
+ end
4
+ class OverrideInSubclassError < Error
5
+ end
6
+ end
@@ -1,5 +1,4 @@
1
1
  require 'net/http'
2
- require 'multi_json'
3
2
 
4
3
  module Unidad
5
4
  class Messenger
@@ -8,8 +7,8 @@ module Unidad
8
7
  attr_reader :command
9
8
  attr_accessor :callback, :options
10
9
 
11
- match_method(/\A(.*)=/) do |name, *args|
12
- option = name.to_s.gsub('=', '').to_sym
10
+ match_method(%r{\A(.*)=}) do |name, *args|
11
+ option = name.to_s.delete('=').to_sym
13
12
  options[option] = args[0]
14
13
  end
15
14
 
@@ -20,7 +19,7 @@ module Unidad
20
19
 
21
20
  def on(callback)
22
21
  self.callback = callback
23
- deliver_message
22
+ Unidad.messenger_adapter.call(message, message_options)
24
23
  end
25
24
 
26
25
  protected
@@ -29,24 +28,6 @@ module Unidad
29
28
  Unidad.config[command].messages
30
29
  end
31
30
 
32
- def deliver_message
33
- uri = URI(ENV['SLACK_WEBHOOK_URL'])
34
- Net::HTTP.post_form(uri, build_params)
35
- rescue => e
36
- puts 'There was an error notifying Slack. Please check that SLACK_WEBHOOK_URL is set in your environment.'
37
- puts e.inspect
38
- end
39
-
40
- def build_params
41
- payload = {
42
- :username => message_options['slack_username'],
43
- :icon_url => message_options['slack_icon'],
44
- :text => message
45
- }
46
-
47
- { 'payload' => MultiJson.dump(payload) }
48
- end
49
-
50
31
  def message
51
32
  config[callback] % message_options
52
33
  end
@@ -0,0 +1,20 @@
1
+ module Unidad
2
+ module MessengerAdapters
3
+ class Base
4
+ attr_accessor :message, :options
5
+
6
+ def self.call(message, options = {})
7
+ new(message, options).call
8
+ end
9
+
10
+ def initialize(message, options = {})
11
+ @message = message
12
+ @options = options
13
+ end
14
+
15
+ def call
16
+ raise Unidad::OverrideInSubclassError
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ require 'net/http'
2
+ require 'json'
3
+
4
+ module Unidad
5
+ module MessengerAdapters
6
+ class Slack < Base
7
+ def call
8
+ uri = URI(ENV['SLACK_WEBHOOK_URL'])
9
+ Net::HTTP.post_form(uri, build_params)
10
+ rescue => e
11
+ puts 'There was an error notifying Slack. Please check that SLACK_WEBHOOK_URL is set in your environment.'
12
+ puts e.inspect
13
+ end
14
+
15
+ protected
16
+
17
+ def build_params
18
+ payload = {
19
+ :username => options['slack_username'],
20
+ :icon_url => options['slack_icon'],
21
+ :text => message
22
+ }
23
+
24
+ { 'payload' => JSON.generate(payload) }
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module Unidad
2
- VERSION = '0.0.1.beta3'
2
+ VERSION = '0.0.1.beta5'.freeze
3
3
  end
data/lib/unidad.rb CHANGED
@@ -4,7 +4,10 @@ require 'hashie'
4
4
 
5
5
  require 'util/match_method_macros'
6
6
  require 'unidad/version'
7
+ require 'unidad/errors'
7
8
  require 'unidad/command_builder'
9
+ require 'unidad/messenger_adapters/base'
10
+ require 'unidad/messenger_adapters/slack'
8
11
  require 'unidad/messenger'
9
12
  require 'unidad/cli'
10
13
 
@@ -20,4 +23,8 @@ module Unidad
20
23
  def self.config
21
24
  Hashie::Mash.new(YAML.load(ERB.new(File.new(config_path).read).result)).unidad
22
25
  end
26
+
27
+ def self.messenger_adapter
28
+ Kernel.const_get("Unidad::MessengerAdapters::#{(config.messenger_adapter || 'Slack')}")
29
+ end
23
30
  end
data/unidad.gemspec CHANGED
@@ -14,22 +14,20 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'https://github.com/crushlovely/unidad'
15
15
  spec.license = 'MIT'
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(/^(test|spec|features)\//) }
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)\/}) }
18
18
  spec.bindir = 'bin'
19
19
  spec.executables = ['unidad']
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_dependency 'thor', '~> 0.18'
23
- spec.add_dependency 'dotenv', '~> 1.0'
24
- spec.add_dependency 'multi_json', '>= 1.7'
25
- spec.add_dependency 'hashie', '>= 2.0'
22
+ spec.add_dependency 'thor', '~> 0.19'
23
+ spec.add_dependency 'dotenv', '~> 2.1'
24
+ spec.add_dependency 'hashie', '~> 3.4'
26
25
  spec.add_development_dependency 'bundler', '~> 1.9'
27
26
  spec.add_development_dependency 'rake', '~> 10.0'
28
- spec.add_development_dependency 'pry', '~> 0.9'
29
- spec.add_development_dependency('rspec')
30
- spec.add_development_dependency('rubocop')
31
- spec.add_development_dependency('guard')
32
- spec.add_development_dependency('guard-rspec')
33
- spec.add_development_dependency('guard-rubocop')
34
- spec.add_development_dependency('codeclimate-test-reporter')
27
+ spec.add_development_dependency 'rspec', '~> 3.0'
28
+ spec.add_development_dependency 'rubocop', '~> 0.1'
29
+ spec.add_development_dependency 'guard', '~> 2.0'
30
+ spec.add_development_dependency 'guard-rspec', '~> 4.0'
31
+ spec.add_development_dependency 'guard-rubocop', '~> 1.0'
32
+ spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.1'
35
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.beta3
4
+ version: 0.0.1.beta5
5
5
  platform: ruby
6
6
  authors:
7
7
  - PJ Kelly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-05 00:00:00.000000000 Z
11
+ date: 2016-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -16,56 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.18'
19
+ version: '0.19'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.18'
26
+ version: '0.19'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dotenv
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
33
+ version: '2.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.0'
41
- - !ruby/object:Gem::Dependency
42
- name: multi_json
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '1.7'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '1.7'
40
+ version: '2.1'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: hashie
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ">="
45
+ - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '2.0'
47
+ version: '3.4'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ">="
52
+ - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '2.0'
54
+ version: '3.4'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: bundler
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -95,103 +81,89 @@ dependencies:
95
81
  - !ruby/object:Gem::Version
96
82
  version: '10.0'
97
83
  - !ruby/object:Gem::Dependency
98
- name: pry
84
+ name: rspec
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: '0.9'
89
+ version: '3.0'
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: '0.9'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
96
+ version: '3.0'
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: rubocop
127
99
  requirement: !ruby/object:Gem::Requirement
128
100
  requirements:
129
- - - ">="
101
+ - - "~>"
130
102
  - !ruby/object:Gem::Version
131
- version: '0'
103
+ version: '0.1'
132
104
  type: :development
133
105
  prerelease: false
134
106
  version_requirements: !ruby/object:Gem::Requirement
135
107
  requirements:
136
- - - ">="
108
+ - - "~>"
137
109
  - !ruby/object:Gem::Version
138
- version: '0'
110
+ version: '0.1'
139
111
  - !ruby/object:Gem::Dependency
140
112
  name: guard
141
113
  requirement: !ruby/object:Gem::Requirement
142
114
  requirements:
143
- - - ">="
115
+ - - "~>"
144
116
  - !ruby/object:Gem::Version
145
- version: '0'
117
+ version: '2.0'
146
118
  type: :development
147
119
  prerelease: false
148
120
  version_requirements: !ruby/object:Gem::Requirement
149
121
  requirements:
150
- - - ">="
122
+ - - "~>"
151
123
  - !ruby/object:Gem::Version
152
- version: '0'
124
+ version: '2.0'
153
125
  - !ruby/object:Gem::Dependency
154
126
  name: guard-rspec
155
127
  requirement: !ruby/object:Gem::Requirement
156
128
  requirements:
157
- - - ">="
129
+ - - "~>"
158
130
  - !ruby/object:Gem::Version
159
- version: '0'
131
+ version: '4.0'
160
132
  type: :development
161
133
  prerelease: false
162
134
  version_requirements: !ruby/object:Gem::Requirement
163
135
  requirements:
164
- - - ">="
136
+ - - "~>"
165
137
  - !ruby/object:Gem::Version
166
- version: '0'
138
+ version: '4.0'
167
139
  - !ruby/object:Gem::Dependency
168
140
  name: guard-rubocop
169
141
  requirement: !ruby/object:Gem::Requirement
170
142
  requirements:
171
- - - ">="
143
+ - - "~>"
172
144
  - !ruby/object:Gem::Version
173
- version: '0'
145
+ version: '1.0'
174
146
  type: :development
175
147
  prerelease: false
176
148
  version_requirements: !ruby/object:Gem::Requirement
177
149
  requirements:
178
- - - ">="
150
+ - - "~>"
179
151
  - !ruby/object:Gem::Version
180
- version: '0'
152
+ version: '1.0'
181
153
  - !ruby/object:Gem::Dependency
182
154
  name: codeclimate-test-reporter
183
155
  requirement: !ruby/object:Gem::Requirement
184
156
  requirements:
185
- - - ">="
157
+ - - "~>"
186
158
  - !ruby/object:Gem::Version
187
- version: '0'
159
+ version: '0.1'
188
160
  type: :development
189
161
  prerelease: false
190
162
  version_requirements: !ruby/object:Gem::Requirement
191
163
  requirements:
192
- - - ">="
164
+ - - "~>"
193
165
  - !ruby/object:Gem::Version
194
- version: '0'
166
+ version: '0.1'
195
167
  description: A thin wrapper and notification layer around your deployment workflows.
196
168
  email:
197
169
  - pj@crushlovely.com
@@ -221,8 +193,12 @@ files:
221
193
  - lib/unidad/cli/deploy.rb
222
194
  - lib/unidad/cli/namespaced_group.rb
223
195
  - lib/unidad/cli/root.rb
196
+ - lib/unidad/cli/s3_website.rb
224
197
  - lib/unidad/command_builder.rb
198
+ - lib/unidad/errors.rb
225
199
  - lib/unidad/messenger.rb
200
+ - lib/unidad/messenger_adapters/base.rb
201
+ - lib/unidad/messenger_adapters/slack.rb
226
202
  - lib/unidad/version.rb
227
203
  - lib/util/match_method_macros.rb
228
204
  - unidad.gemspec
@@ -246,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
246
222
  version: 1.3.1
247
223
  requirements: []
248
224
  rubyforge_project:
249
- rubygems_version: 2.4.5
225
+ rubygems_version: 2.4.5.1
250
226
  signing_key:
251
227
  specification_version: 4
252
228
  summary: A thin wrapper and notification layer around your deployment workflows.