orchestra 0.0.1 → 0.0.2

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.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile CHANGED
@@ -4,4 +4,5 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  gem 'debugger'
7
- gem 'rake'
7
+ gem 'rake'
8
+ gem 'rspec'
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- orchestra (0.0.1)
4
+ orchestra (0.0.2)
5
5
  mixlib-cli
6
6
 
7
7
  GEM
@@ -15,8 +15,17 @@ GEM
15
15
  debugger-linecache (1.1.2)
16
16
  debugger-ruby_core_source (>= 1.1.1)
17
17
  debugger-ruby_core_source (1.1.3)
18
+ diff-lcs (1.1.3)
18
19
  mixlib-cli (1.2.2)
19
20
  rake (0.9.2.2)
21
+ rspec (2.11.0)
22
+ rspec-core (~> 2.11.0)
23
+ rspec-expectations (~> 2.11.0)
24
+ rspec-mocks (~> 2.11.0)
25
+ rspec-core (2.11.1)
26
+ rspec-expectations (2.11.3)
27
+ diff-lcs (~> 1.1.3)
28
+ rspec-mocks (2.11.3)
20
29
 
21
30
  PLATFORMS
22
31
  ruby
@@ -25,3 +34,4 @@ DEPENDENCIES
25
34
  debugger
26
35
  orchestra!
27
36
  rake
37
+ rspec
@@ -1,20 +1,29 @@
1
1
  set :hosts, ["web1", "web2"]
2
+ set :user, 'deploy'
2
3
 
3
4
  task :helloworld do
4
5
  puts "helloworld"
5
6
  # run('echo hello world!')
6
7
  end
7
8
 
8
- task :ls_root do
9
- puts "ls_root"
10
- # sudo('ls -l /root')
9
+ task :updatecode do
10
+ puts "git pull"
11
+ # run('git pull')
12
+ # with(:settings => {:user => 'web'}) do
13
+ # cd('folder')
14
+ # lcd('local_folder')
15
+ # with(settings: {warnonly: true, user: "deploy"}, cd: "$RAILS_ROOT") do
16
+ # helloworld
17
+ # run('mv file.text file.back')
18
+ # end
19
+ # end
11
20
  end
12
21
 
13
22
  task :all do
14
23
  helloworld
15
- ls_root
24
+ updatecode
16
25
  end
17
26
 
18
- # $orchestra task
19
- # $orchestra -P task
20
- # $orchestra task helloworld -H web1
27
+ # $> orchestra task
28
+ # $> orchestra -P task
29
+ # $> orchestra task helloworld -H web1,web2
@@ -1,5 +1,7 @@
1
1
  module Orchestra
2
2
  autoload :VERSION, 'orchestra/version'
3
3
  autoload :CLI, 'orchestra/cli'
4
+ autoload :Command, 'orchestra/command'
4
5
  autoload :Configuration, 'orchestra/configuration'
6
+ autoload :Partition, 'orchestra/partition'
5
7
  end
@@ -1,4 +1,4 @@
1
1
  module Orchestra
2
- class Command
2
+ module Command
3
3
  end
4
- end
4
+ end
@@ -7,34 +7,13 @@ module Orchestra
7
7
  end
8
8
 
9
9
  def play_partition!
10
- load_partition!
11
-
12
- run_tasks
13
- end
14
-
15
- def run_tasks
16
- config[:tasks].each do |task_name|
17
- @tasks[task_name.to_sym].call if @tasks[task_name.to_sym]
18
- end
10
+ partition.play
19
11
  end
20
12
 
21
13
  private
22
14
 
23
- def set(variable_name, value)
24
- @variables ||= {}
25
- @variables[variable_name] = value
26
- end
27
-
28
- def task(task_name, &block)
29
- @tasks ||= {}
30
- @tasks[task_name.to_sym] = block
31
- end
32
-
33
- def load_partition!
34
- return if @loaded
35
-
36
- instance_eval(File.read(config[:partition]))
37
- @loaded = true
15
+ def partition
16
+ @partition ||= Partition.new(config)
38
17
  end
39
18
  end
40
19
  end
@@ -0,0 +1,51 @@
1
+ module Orchestra
2
+ class Partition
3
+ include Command
4
+
5
+ attr_reader :config
6
+
7
+ def initialize(config)
8
+ @config = config.dup
9
+ load
10
+ add_tasks
11
+ end
12
+
13
+ def play
14
+ config[:tasks].each do |task_name|
15
+ send(task_name)
16
+ end
17
+ end
18
+
19
+ def add_tasks
20
+ singleton = class << self; self end
21
+ @tasks.each do |method_name, method|
22
+ singleton.send :define_method, method_name, method
23
+ end
24
+ end
25
+
26
+ def run
27
+ Net::SSH.start(host, user, :password => "password") do |ssh|
28
+
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def set(variable_name, value)
35
+ @variables ||= {}
36
+ @variables[variable_name] = value
37
+ end
38
+
39
+ def task(task_name, &block)
40
+ @tasks ||= {}
41
+ @tasks[task_name.to_sym] = block
42
+ end
43
+
44
+ def load
45
+ return if @loaded
46
+
47
+ instance_eval(File.read(config[:partition]))
48
+ @loaded = true
49
+ end
50
+ end
51
+ end
@@ -2,7 +2,7 @@ module Orchestra
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- PATCH = 1
5
+ PATCH = 2
6
6
  PRE = nil
7
7
 
8
8
  def self.to_s
@@ -0,0 +1,42 @@
1
+ require 'orchestra'
2
+ require 'orchestra/cli'
3
+
4
+ describe Orchestra::CLI do
5
+ subject { Orchestra::CLI.new }
6
+
7
+ describe "#execute" do
8
+ it "calls parse_options" do
9
+ subject.stub(:play_partition!)
10
+ subject.should_receive(:parse_options)
11
+
12
+ subject.execute
13
+ end
14
+
15
+ it "calls play_partition!" do
16
+ subject.stub(:parse_options)
17
+ subject.should_receive(:play_partition!)
18
+
19
+ subject.execute
20
+ end
21
+ end
22
+
23
+ describe "#set_tasks" do
24
+ it "adds tasks" do
25
+ subject.send(:set_tasks, ['method1', 'method2', 'method3'])
26
+ subject.config[:tasks].should == ['method1', 'method2', 'method3']
27
+ end
28
+
29
+ it "adds on the config" do
30
+ subject.config[:tasks] = ['previous_method']
31
+ subject.send(:set_tasks, ['method1'])
32
+
33
+ subject.config[:tasks].should == ['previous_method', 'method1']
34
+ end
35
+
36
+ it "uses the ARGV by default" do
37
+ ARGV << 'method'
38
+ subject.send(:set_tasks)
39
+ subject.config[:tasks].should == ['method']
40
+ end
41
+ end
42
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: orchestra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-02 00:00:00.000000000 Z
13
+ date: 2012-11-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mixlib-cli
@@ -37,6 +37,7 @@ executables:
37
37
  extensions: []
38
38
  extra_rdoc_files: []
39
39
  files:
40
+ - .gitignore
40
41
  - Gemfile
41
42
  - Gemfile.lock
42
43
  - LICENSE.txt
@@ -48,8 +49,10 @@ files:
48
49
  - lib/orchestra/cli.rb
49
50
  - lib/orchestra/command.rb
50
51
  - lib/orchestra/configuration.rb
52
+ - lib/orchestra/partition.rb
51
53
  - lib/orchestra/version.rb
52
54
  - orchestra.gemspec
55
+ - spec/lib/orchestra/cli_spec.rb
53
56
  homepage: ''
54
57
  licenses: []
55
58
  post_install_message:
@@ -64,7 +67,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
64
67
  version: '0'
65
68
  segments:
66
69
  - 0
67
- hash: -1031003115086724039
70
+ hash: 3651560134261131973
68
71
  required_rubygems_version: !ruby/object:Gem::Requirement
69
72
  none: false
70
73
  requirements:
@@ -73,11 +76,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
76
  version: '0'
74
77
  segments:
75
78
  - 0
76
- hash: -1031003115086724039
79
+ hash: 3651560134261131973
77
80
  requirements: []
78
81
  rubyforge_project:
79
82
  rubygems_version: 1.8.24
80
83
  signing_key:
81
84
  specification_version: 3
82
85
  summary: Lightning fast deployment.
83
- test_files: []
86
+ test_files:
87
+ - spec/lib/orchestra/cli_spec.rb