borg-rb 0.0.5 → 0.1.0

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTU2Mzc2MGFjZTM4Nzg3M2FhNGM5NTQwMjNhMTkwNTI2MGMxM2VlOA==
4
+ YjQ4NTU4YjI0N2JiZDRlZjdlYTAwOTY5NDU3MGQxOGM3YjE2OGNjNA==
5
5
  data.tar.gz: !binary |-
6
- NTk4NGZjNzEyOWJhZGM2MDUyYzMxOWRhMGNiODZiODFhZGY0NDdlYw==
6
+ MmYzNTQ1N2FkYjViYzNlZjAyM2Q2ODY5MzYyNzI0OTk5NWFjMWI5Mg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- Y2Q1MzlmMmIwNjFlZDYzZDQwYjZjYTdmYWNkMTFhMGM3OWY3YWE5MTFhY2Rh
10
- ZDQ3MDZmNTlmZjNhYjE5OWMwODcxNDJmOGRmNGJmMDJmYjEzMDMxMjMxYzZi
11
- MWRhMzdjZGMzNzhhMmYzYWY0ZTljYWViYTEzODBmYjBiNTQzODA=
9
+ NGJjOWIwNWE3ZGJlM2NiMTM5MTE2N2QxYzgyNTAxZTQ5MGRmZTc5ZjVkMWYz
10
+ MGY0NjE4NmE0MTM2MDAyZTYyN2Y2MjZkYjEwZWVkODE2N2M4Yjk2YzA5NTli
11
+ NzAxNjJkMGQzY2RkOWYxYmIwODc4YTQwNmJjNmRiMzU4NGUwMjE=
12
12
  data.tar.gz: !binary |-
13
- MDE3ZjBmYTVmNTFmYTY0ZTZjMzJkNzIxOTJlNjQ5NTU1YjMyNjRiNzJlMGU1
14
- YzQ2M2FhN2IyZjgyOWZiMGViM2RmMzQ2ZGNlZDBmMGE3YjMwMGI3ZDM3ZTQz
15
- NzQxOTExZmUyNmFmNzRjZjhiNWU2OWI1ZTQ2N2I5OTM0MzJhZWY=
13
+ MDcxNmIxMTE4ODBiNDYyYzQ2YTQ3YTI4MmJmMzY1YjJkZDE5MzZmZmFiNDg2
14
+ ZDU3YTkzN2FmNzZkODY2YjQxZmY4OTJhOWU5ODIwYjM0NTcyMTI2YTQyMDYw
15
+ ZTQwOGU5MGIxNjc3YTE4ZDdiYTZmNTczMzNjNjYxMjEwMDM1MmQ=
data/CHANGELOG.md CHANGED
@@ -1,14 +1,4 @@
1
1
  ## HEAD
2
2
 
3
- ## 0.0.5 / 3-27-2013
4
- * Allow stage definitions with empty blocks
5
- * Allow access to `application` and `stage` in an application configuration by creating a capistrano variable for them (0.0.4)
6
- * Change load borg-rb to a require (0.0.3)
7
- * Fix load problem in Capfile in generated skeleton (0.0.2)
8
-
9
-
10
-
11
- ## 0.0.1 / 3-21-2013
12
-
13
- * Created initial project skeleton: application config, multi-stage app config
14
- * Created initial plugin skeleton for adding recipes
3
+ ## 0.1.0 / 4-1-2013
4
+ Initial Release
data/bin/borg CHANGED
@@ -1,18 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
-
3
- require 'capistrano/cli'
4
- require 'borg/cli/applications'
5
- require 'borg/cli/assimilator'
6
- require 'borg/configuration/applications'
7
- require 'borg/configuration/stages'
8
- require 'borg/configuration/assimilator'
9
- require 'erb'
10
-
11
- require 'borg/errors'
12
- require 'borg/server/base'
13
- require 'borg/servers/base'
14
-
15
- # Ensure ruby 1.9.X
16
- raise "Ruby 1.9.X required" unless RUBY_VERSION =~ /^1\.9\.\d$/ || RUBY_VERSION =~ /^2\.0\.\d$/
17
-
18
- Capistrano::CLI.execute
2
+ require 'borg'
3
+ Borg::CLI.execute
data/borg.gemspec CHANGED
@@ -4,26 +4,27 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'borg/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "borg-rb"
7
+ s.name = 'borg-rb'
8
8
  s.version = Borg::VERSION
9
- s.authors = ["Identified"]
10
- s.email = ["phil@identified.com", "tejas@identified.com"]
9
+ s.authors = %w(Identified)
10
+ s.email = %w(phil@identified.com tejas@identified.com)
11
11
  s.description = %q{Ruby-based software provisioning and deployment framework}
12
12
  s.summary = %q{Ruby-based software provisioning and deployment framework}
13
- s.homepage = "https://github.com/B0RG/borg"
14
- s.license = "MIT"
13
+ s.homepage = 'https://github.com/B0RG/borg'
14
+ s.license = 'MIT'
15
15
 
16
16
  s.files = `git ls-files`.split($/)
17
17
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
- s.require_paths = ["lib"]
19
+ s.require_paths = %w(lib)
20
20
 
21
- s.add_dependency "capistrano", "~> 2.14.2"
22
- s.add_dependency "capistrano_colors"
23
- s.add_dependency "colored"
24
- s.add_dependency "term-ansicolor"
21
+ s.required_ruby_version = '>= 1.9.2'
25
22
 
26
- s.add_development_dependency "rspec"
27
- s.add_development_dependency "childprocess"
23
+ s.add_dependency 'capistrano', '~> 2.14.2'
24
+ s.add_dependency 'capistrano_colors'
25
+ s.add_dependency 'colored'
26
+ s.add_dependency 'term-ansicolor'
28
27
 
28
+ s.add_development_dependency 'rspec'
29
+ s.add_development_dependency 'childprocess'
29
30
  end
@@ -1,5 +1,4 @@
1
- _cset :borg_performance_reports, true
2
- if borg_performance_reports
1
+ if fetch(:borg_performance_reports, true)
3
2
  # source: https://github.com/PagerDuty/pd-cap-recipes/blob/master/lib/pd-cap-recipes/tasks/performance.rb
4
3
  start_times = {}
5
4
  end_times = {}
@@ -24,19 +23,19 @@ if borg_performance_reports
24
23
  logger.info s
25
24
  end
26
25
 
27
- l " Performance Report"
28
- l "=========================================================="
26
+ l ' Performance Report'
27
+ l '=========================================================='
29
28
  indent = 0
30
29
  (order + [nil]).each_cons(2) do |payload1, payload2|
31
30
  action, task = payload1
32
31
  if action == :start
33
- l "#{".." * indent}#{task.fully_qualified_name}" unless task == payload2.last
32
+ l "#{'..' * indent}#{task.fully_qualified_name}" unless task == payload2.last
34
33
  indent += 1
35
34
  else
36
35
  indent -= 1
37
- l "#{".." * indent}#{task.fully_qualified_name} #{(end_times[task] - start_times[task]).to_i}s"
36
+ l "#{'..' * indent}#{task.fully_qualified_name} #{(end_times[task] - start_times[task]).to_i}s"
38
37
  end
39
38
  end
40
- l "=========================================================="
39
+ l '=========================================================='
41
40
  end
42
41
  end
@@ -8,5 +8,5 @@ module ::Capistrano
8
8
  end
9
9
  end
10
10
 
11
- desc "Resets all dynamic capistrano roles."
11
+ desc 'Resets all dynamic capistrano roles.'
12
12
  task(:reset_roles) { roles.each {|k,v| v.reset!} }
@@ -1,8 +1,6 @@
1
- _cset :borg_sigint_triggers_exit, true
2
-
3
- if borg_sigint_triggers_exit
1
+ if fetch(:borg_sigint_triggers_exit, true)
4
2
  __cap = Capistrano::Configuration.instance
5
- ::Signal.trap "SIGINT" do
3
+ ::Signal.trap 'SIGINT' do
6
4
  __cap.trigger :exit
7
5
  exit 1
8
6
  end
data/lib/borg-rb.rb CHANGED
@@ -1,10 +1,3 @@
1
- # source capistrano/deploy.rb
2
- Capistrano::Configuration.instance(:must_exist).load do
3
- def _cset(name, *args, &block)
4
- unless exists?(name)
5
- set(name, *args, &block)
6
- end
7
- end
8
-
9
- assimilate "borg-rb"
1
+ Borg::Configuration.instance(:must_exist).load do
2
+ assimilate 'borg-rb'
10
3
  end
data/lib/borg.rb ADDED
@@ -0,0 +1,15 @@
1
+ # Ensure ruby 1.9.X
2
+ raise 'Ruby 1.9.x or 2.0.x required' unless RUBY_VERSION =~ /^1\.9\.\d$/ || RUBY_VERSION =~ /^2\.0\.\d$/
3
+
4
+ # Colors
5
+ require 'capistrano_colors'
6
+ require 'colored'
7
+ require 'term/ansicolor'
8
+
9
+ require 'borg/cli'
10
+ require 'borg/configuration'
11
+ require 'borg/errors'
12
+ require 'borg/server/base'
13
+ require 'borg/servers/base'
14
+
15
+ require 'erb'
data/lib/borg/cli.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'capistrano/cli'
2
+ require 'borg/cli/applications'
3
+ require 'borg/cli/assimilator'
4
+ require 'borg/configuration'
5
+ require 'borg/errors'
6
+
7
+ module Borg
8
+ class CLI < Capistrano::CLI
9
+ # override method in Capistrano::CLI::Execute
10
+ def instantiate_configuration(options = {}) #:nodoc:
11
+ Borg::Configuration.new(options)
12
+ end
13
+
14
+ # override method in Capistrano::CLI::Execute
15
+ def handle_error(error) #:nodoc:
16
+ case error
17
+ when Net::SSH::AuthenticationFailed
18
+ abort "authentication failed for `#{error.message}'"
19
+ when Borg::BaseError
20
+ abort(error.message)
21
+ else raise error
22
+ end
23
+ end
24
+
25
+ # Mix-in our own behavior
26
+ include Applications, Assimilator
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module Borg
2
- module CLI
2
+ class CLI < Capistrano::CLI
3
3
  module Applications
4
4
  def self.included(base) #:nodoc:
5
5
  base.send :alias_method, :execute_requested_actions_without_applications, :execute_requested_actions
@@ -26,7 +26,7 @@ module Borg
26
26
 
27
27
  def load_applications(config)
28
28
  unless @apps_loaded
29
- Dir["./cap/applications/**/*.rb"].each { |file| config.load(file) }
29
+ Dir['./cap/applications/**/*.rb'].each { |file| config.load(file) }
30
30
  @apps_loaded = true
31
31
  end
32
32
  end
@@ -35,7 +35,7 @@ module Borg
35
35
  options[:applications] = []
36
36
  found_non_application = false
37
37
  options[:actions] = Array(options[:actions]).keep_if do |action|
38
- app, stg = action.split(":").map(&:to_sym)
38
+ app, stg = action.split(':').map(&:to_sym)
39
39
  ret = if config.applications[app] and config.applications[app].stages[stg]
40
40
  options[:applications] << config.applications[app].stages[stg]
41
41
  false
@@ -50,12 +50,10 @@ module Borg
50
50
  found_non_application = true
51
51
  true
52
52
  end
53
- raise ArgumentError, "Can not have non application configs between application configs" if !ret and found_non_application
53
+ raise ArgumentError, 'Can not have non application configs between application configs' if !ret and found_non_application
54
54
  ret
55
55
  end
56
56
  end
57
57
  end
58
58
  end
59
59
  end
60
-
61
- Capistrano::CLI.send(:include, Borg::CLI::Applications)
@@ -1,5 +1,5 @@
1
1
  module Borg
2
- module CLI
2
+ class CLI < Capistrano::CLI
3
3
  module Assimilator
4
4
  def self.included(base) #:nodoc:
5
5
  base.send :alias_method, :execute_requested_actions_without_assimilator, :execute_requested_actions
@@ -13,5 +13,3 @@ module Borg
13
13
  end
14
14
  end
15
15
  end
16
-
17
- Capistrano::CLI.send :include, Borg::CLI::Assimilator
@@ -0,0 +1,17 @@
1
+ require 'capistrano/configuration'
2
+ require 'borg/configuration/applications'
3
+ require 'borg/configuration/assimilator'
4
+ require 'borg/configuration/stages'
5
+
6
+ module Borg
7
+ class Configuration < Capistrano::Configuration
8
+ # Mix-in our own behavior
9
+ include Applications, Assimilator, Stages
10
+
11
+ # source: capistrano/recipes/deploy.rb
12
+ def _cset(name, *args, &block)
13
+ set(name, *args, &block) unless exists?(name)
14
+ end
15
+
16
+ end
17
+ end
@@ -1,7 +1,6 @@
1
1
  module Borg
2
- module Configuration
2
+ class Configuration < Capistrano::Configuration
3
3
  module Applications
4
-
5
4
  def self.included(base) #:nodoc:
6
5
  base.send :alias_method, :initialize_without_applications, :initialize
7
6
  base.send :alias_method, :initialize, :initialize_with_applications
@@ -14,7 +13,7 @@ module Borg
14
13
  end
15
14
  private :initialize_with_applications
16
15
 
17
- def application (name, &block)
16
+ def application(name, &block)
18
17
  name = name.to_sym
19
18
  namespace name do
20
19
  desc "Load Application #{name} (All Stages if any)"
@@ -31,14 +30,14 @@ module Borg
31
30
  attr_accessor :stages
32
31
  attr_reader :name
33
32
 
34
- def initialize name, namespace
33
+ def initialize(name, namespace)
35
34
  @execution_blocks = []
36
35
  @name = name
37
36
  @namespace = namespace
38
37
  @stages = {}
39
38
  end
40
39
 
41
- def load_into config
40
+ def load_into(config)
42
41
  if config.respond_to?(:application)
43
42
  # Undefine the stage method now that the app:stage config is created
44
43
  config_metaclass = class << config; self; end
@@ -47,11 +46,9 @@ module Borg
47
46
  # Create a capistrano variable for stage
48
47
  config.instance_exec(@name, &(lambda { |name| set :application, name }))
49
48
  end
50
- @execution_blocks.each {|blk| config.load &blk}
49
+ @execution_blocks.each { |blk| config.load &blk }
51
50
  end
52
51
  end
53
52
  end
54
53
  end
55
54
  end
56
-
57
- Capistrano::Configuration.send :include, Borg::Configuration::Applications
@@ -1,21 +1,20 @@
1
1
  module Borg
2
- module Configuration
2
+ class Configuration < Capistrano::Configuration
3
3
  module Assimilator
4
- def assimilate gem_name
4
+ def assimilate(borg_plugin, plugin_path = nil)
5
5
  @to_assimilate ||= {}
6
- @to_assimilate[gem_name] = Gem::Specification.find_by_name(gem_name).gem_dir
6
+ @to_assimilate[borg_plugin] = plugin_path || Gem::Specification.find_by_name(borg_plugin).gem_dir
7
7
  end
8
8
 
9
9
  def assimilate!
10
10
  @to_assimilate ||= {}
11
- @to_assimilate.each do |gem_name, gem_home|
12
- Dir["#{gem_home}/cap/initializers/**/*.rb"].each do |file|
11
+ @to_assimilate.each do |borg_plugin, plugin_path|
12
+ Dir["#{plugin_path}/cap/initializers/**/*.rb"].each do |file|
13
13
  load file
14
14
  end
15
- @load_paths << "#{gem_home}/cap"
15
+ @load_paths << "#{plugin_path}/cap"
16
16
  end
17
17
  end
18
18
  end
19
19
  end
20
20
  end
21
- Capistrano::Configuration.send :include, Borg::Configuration::Assimilator
@@ -1,5 +1,5 @@
1
1
  module Borg
2
- module Configuration
2
+ class Configuration < Capistrano::Configuration
3
3
  module Stages
4
4
  def stage(app, name, &block)
5
5
  app = app.to_sym
@@ -48,5 +48,3 @@ module Borg
48
48
  end
49
49
  end
50
50
  end
51
-
52
- Capistrano::Configuration.send(:include, Borg::Configuration::Stages)
data/lib/borg/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Borg
2
- VERSION = '0.0.5'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -1,14 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "borgify plugin" do
4
- include_context "acceptance"
3
+ describe 'borgify plugin' do
4
+ include_context 'acceptance'
5
5
 
6
6
  before do
7
- assert_execute("borgify", "plugin")
7
+ assert_execute('borgify', 'plugin')
8
8
  @workdir = environment.workdir_path
9
9
  end
10
10
 
11
- it "creates the right files and directories" do
11
+ it 'creates the right files and directories' do
12
12
  # the gemspec
13
13
  directory_name = File.basename(@workdir = environment.workdir_path)
14
14
  gemspec = @workdir = environment.workdir_path.join("#{directory_name}.gemspec")
@@ -1,34 +1,34 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "borgify" do
4
- include_context "acceptance"
3
+ describe 'borgify' do
4
+ include_context 'acceptance'
5
5
 
6
6
  before do
7
- assert_execute("borgify")
7
+ assert_execute('borgify')
8
8
  @workdir = environment.workdir_path
9
9
  end
10
10
 
11
- it "creates the right files and directories" do
11
+ it 'creates the right files and directories' do
12
12
  # Gemfile
13
- gemfile = @workdir.join("Gemfile")
13
+ gemfile = @workdir.join('Gemfile')
14
14
  expect(gemfile.file?).to be_true
15
15
  gemfile_contents = gemfile.read
16
16
  expect(gemfile_contents).to match(/^source "https:\/\/rubygems.org"$/)
17
17
  expect(gemfile_contents).to match(/borg-rb/)
18
18
 
19
19
  # Capfile
20
- capfile = @workdir.join("Capfile")
20
+ capfile = @workdir.join('Capfile')
21
21
  expect(capfile.file?).to be_true
22
22
 
23
23
  # lib directory
24
- capfile = @workdir.join("lib")
24
+ capfile = @workdir.join('lib')
25
25
  expect(capfile.directory?).to be_true
26
26
 
27
27
  # cap directory with the subdirectories: applications, initializers, recipes
28
- cap_dir = @workdir.join("cap")
28
+ cap_dir = @workdir.join('cap')
29
29
  expect(cap_dir.directory?).to be_true
30
- expect(cap_dir.join("applications").directory?).to be_true
31
- expect(cap_dir.join("initializers").directory?).to be_true
32
- expect(cap_dir.join("recipes").directory?).to be_true
30
+ expect(cap_dir.join('applications').directory?).to be_true
31
+ expect(cap_dir.join('initializers').directory?).to be_true
32
+ expect(cap_dir.join('recipes').directory?).to be_true
33
33
  end
34
34
  end