sunzi 1.2.0 → 1.3.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: 4ec250a135b740f0a34196be384788cdebf33d5a
4
- data.tar.gz: 27cf354835d55b8463964df7e8095c8880d3750a
3
+ metadata.gz: cb8a4617f357a7694046748161711229c0e17188
4
+ data.tar.gz: 11937bf1031b74d004b8c89b18344d779dd895f5
5
5
  SHA512:
6
- metadata.gz: 22a9585b4f2228b01509924b4c7509ca8b20b5ffd300a5a06338db32cbb12e8d1a6b23d129f9be2513d86435bb2c0c708f82b162ea708eeaefbf2cb412281414
7
- data.tar.gz: d50ddebc4f553446f4c54fcec5099c7dfab232fc1e74888bdcdc1890b06506c401cac336e6c6e860806f277bd8263c31efedec045b443f715e7fdeae70dd4988
6
+ metadata.gz: 79d7b23cc2151b0a93bd6ba0095014f05d06b60905fe3ca65e8833cb7d198ef16d10056f62fc2d626b4910b9cddc22cb2c67a747a28b23526582c3d9072d44de
7
+ data.tar.gz: 557af77389587f53612de8b5d3ec43b416ed5a96a76dbcac9177703525245ce6eb4aa36e9fba0007d294f0788e24838489095612d8c4d2cf2178a4f0e6fccb67
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.3
5
+ - 2.0.0
data/README.md CHANGED
@@ -18,6 +18,7 @@ Its design goals are:
18
18
 
19
19
  ### What's new:
20
20
 
21
+ * v1.3: SSH config support. Thanks to @toooooooby
21
22
  * v1.2: Evaluate everything as ERB templates by default. Added "files" folder.
22
23
  * v1.1: "set -e" by default. apt-get everywhere in place of aptitude. Linode DNS support for DigitalOcean instances.
23
24
  * v1.0: System functions are refactored into sunzi.mute() and sunzi.install().
data/lib/sunzi/cli.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'open3'
2
2
  require 'ostruct'
3
+ require 'net/ssh'
3
4
 
4
5
  module Sunzi
5
6
  class Cli < Thor
@@ -136,7 +137,11 @@ module Sunzi
136
137
 
137
138
  def parse_target(target)
138
139
  target.match(/(.*@)?(.*?)(:.*)?$/)
139
- [ ($1 && $1.delete('@') || 'root'), $2, ($3 && $3.delete(':') || '22') ]
140
+ # Load ssh config if it exists
141
+ config = Net::SSH::Config.for($2)
142
+ [ ($1 && $1.delete('@') || config[:user] || 'root'),
143
+ config[:host_name] || $2,
144
+ ($3 && $3.delete(':') || config[:port] && config[:port].to_s || '22') ]
140
145
  end
141
146
  end
142
147
  end
@@ -36,15 +36,12 @@ function sunzi.installed() {
36
36
  # otherwise the script may exit unexpectedly when the package is already installed.
37
37
  #
38
38
  function sunzi.install() {
39
- for name in $@
40
- do
41
- if sunzi.installed "$name"; then
42
- echo "$name already installed"
43
- return 1
44
- else
45
- echo "No packages found matching $name. Installing..."
46
- sunzi.mute "$sunzi_pkg -y install $name"
47
- return 0
48
- fi
49
- done
39
+ if sunzi.installed "$@"; then
40
+ echo "$@ already installed"
41
+ return 1
42
+ else
43
+ echo "No packages found matching $@. Installing..."
44
+ sunzi.mute "$sunzi_pkg -y install $@"
45
+ return 0
46
+ fi
50
47
  }
data/sunzi.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'sunzi'
5
- spec.version = '1.2.0' # retrieve this value by: Gem.loaded_specs['sunzi'].version.to_s
5
+ spec.version = '1.3.0' # retrieve this value by: Gem.loaded_specs['sunzi'].version.to_s
6
6
  spec.authors = ['Kenn Ejima']
7
7
  spec.email = ['kenn.ejima@gmail.com']
8
8
  spec.homepage = 'http://github.com/kenn/sunzi'
@@ -17,5 +17,6 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.add_runtime_dependency 'thor'
19
19
  spec.add_runtime_dependency 'rainbow'
20
+ spec.add_runtime_dependency 'net-ssh'
20
21
  spec.add_development_dependency 'rake'
21
22
  end
data/test/test_cli.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'sunzi'
2
2
  require 'test/unit'
3
+ require 'minitest/mock'
3
4
 
4
5
  class TestCli < Test::Unit::TestCase
5
6
  def setup
@@ -14,6 +15,24 @@ class TestCli < Test::Unit::TestCase
14
15
  assert_equal ['root', '192.168.0.1', '22'], @cli.parse_target('192.168.0.1')
15
16
  end
16
17
 
18
+ def test_parse_target_with_ssh_config
19
+ ssh_config = lambda do |host|
20
+ if host == 'example.com'
21
+ { :host_name => "buzz.example.com", :user => "foobar", :port => 2222 }
22
+ else
23
+ {}
24
+ end
25
+ end
26
+
27
+ Net::SSH::Config.stub(:for, ssh_config) do
28
+ assert_equal ['foobar', 'buzz.example.com', '2222'], @cli.parse_target('example.com')
29
+ assert_equal ['foobar', 'buzz.example.com', '8080'], @cli.parse_target('example.com:8080')
30
+ assert_equal ['piyo', 'buzz.example.com', '2222'], @cli.parse_target('piyo@example.com')
31
+ assert_equal ['piyo', 'buzz.example.com', '8080'], @cli.parse_target('piyo@example.com:8080')
32
+ assert_equal ['root', '192.168.0.1', '22'], @cli.parse_target('192.168.0.1')
33
+ end
34
+ end
35
+
17
36
  def test_create
18
37
  @cli.create 'sandbox'
19
38
  assert File.exist?('sandbox/sunzi.yml')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sunzi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenn Ejima
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-13 00:00:00.000000000 Z
11
+ date: 2013-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: net-ssh
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -61,6 +75,7 @@ extensions: []
61
75
  extra_rdoc_files: []
62
76
  files:
63
77
  - .gitignore
78
+ - .travis.yml
64
79
  - Gemfile
65
80
  - README.md
66
81
  - Rakefile
@@ -109,10 +124,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
124
  version: '0'
110
125
  requirements: []
111
126
  rubyforge_project:
112
- rubygems_version: 2.0.3
127
+ rubygems_version: 2.0.2
113
128
  signing_key:
114
129
  specification_version: 4
115
130
  summary: Server provisioning utility for minimalists
116
131
  test_files:
117
132
  - test/test_cli.rb
118
- has_rdoc: