sunzi 1.2.0 → 1.3.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 +4 -4
- data/.travis.yml +5 -0
- data/README.md +1 -0
- data/lib/sunzi/cli.rb +6 -1
- data/lib/templates/create/recipes/sunzi.sh +8 -11
- data/sunzi.gemspec +2 -1
- data/test/test_cli.rb +19 -0
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb8a4617f357a7694046748161711229c0e17188
|
4
|
+
data.tar.gz: 11937bf1031b74d004b8c89b18344d779dd895f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79d7b23cc2151b0a93bd6ba0095014f05d06b60905fe3ca65e8833cb7d198ef16d10056f62fc2d626b4910b9cddc22cb2c67a747a28b23526582c3d9072d44de
|
7
|
+
data.tar.gz: 557af77389587f53612de8b5d3ec43b416ed5a96a76dbcac9177703525245ce6eb4aa36e9fba0007d294f0788e24838489095612d8c4d2cf2178a4f0e6fccb67
|
data/.travis.yml
ADDED
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
|
-
|
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
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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.
|
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.
|
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-
|
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.
|
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:
|