prep_kit 0.1.7 → 0.1.8

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: 8aece43efa7604a3983c8741ebb2c8d3dc05a997
4
- data.tar.gz: 0318267847286b7ab85dc846deaa8178a57cea01
3
+ metadata.gz: 8cd5f08170c8218f60129bdb66d94ad714ee2a16
4
+ data.tar.gz: ea53500e04585df087780ed5373829405c239be7
5
5
  SHA512:
6
- metadata.gz: 11420f4db9299d064c57ed9e589f0b664a575ad959a1dad6f113474a5f887bf9fa402a5b2c4178ed8d11e59e63e8b984b460ca818a67d04c92c9a033931361fe
7
- data.tar.gz: fd83533c6754ce98a7d3d5bf8a4682193c71fca1af57ee14d41bf04f398db48e95ae792c51267d368bf297311b324cdb4501df439dd7dc3edf71731af965259c
6
+ metadata.gz: b25f05441760238e487da7f3b3699ddf473a91441ac6df841dbcec6a6445daf58c8b80de8ee9f63d22b399f3de3ad851aae89b61ee73606a3daad1fe91a01fbc
7
+ data.tar.gz: 427de6267edb65f24ca6302ce27158a57add8edcb8caeb704599ee55ec740df7ffb5718457e3621c436797e22965145d006129ecc65007dd5f765915396d2cb6
data/Gemfile.lock CHANGED
@@ -1,34 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- prep_kit (0.1.7)
5
- remote_marshal
4
+ prep_kit (0.1.8)
5
+ colorize
6
+ net-scp
7
+ net-ssh
6
8
 
7
9
  GEM
8
10
  remote: https://rubygems.org/
9
11
  specs:
10
- file-tail (1.1.0)
11
- tins (~> 1.0)
12
+ colorize (0.7.7)
12
13
  net-scp (1.2.1)
13
14
  net-ssh (>= 2.6.5)
14
15
  net-ssh (3.0.2)
15
16
  rake (10.4.2)
16
- remote_marshal (0.1.9)
17
- net-scp
18
- net-ssh
19
- sourcify
20
- ruby2ruby (2.2.0)
21
- ruby_parser (~> 3.1)
22
- sexp_processor (~> 4.0)
23
- ruby_parser (3.7.3)
24
- sexp_processor (~> 4.1)
25
- sexp_processor (4.6.1)
26
- sourcify (0.5.0)
27
- file-tail (>= 1.0.5)
28
- ruby2ruby (>= 1.2.5)
29
- ruby_parser (>= 2.0.5)
30
- sexp_processor (>= 3.0.5)
31
- tins (1.8.2)
32
17
 
33
18
  PLATFORMS
34
19
  ruby
@@ -2,7 +2,7 @@ module PrepKit
2
2
  class Context
3
3
  def initialize(host, user, options = {})
4
4
  @vars = {}
5
- @env = RemoteMarshal.new(host, user, options)
5
+ @env = environment(host, user, options)
6
6
  @memoized = {}
7
7
  end
8
8
 
@@ -23,33 +23,42 @@ module PrepKit
23
23
  end
24
24
 
25
25
  def sh(command)
26
- PrepKit.logger.info "sh: #{command}"
26
+ PrepKit.logger.info "sh: ".bold + command.underline
27
27
 
28
- output = @memoized.fetch(command) do
29
- status, output, error = @env.exec!(command)
28
+ status = @memoized.fetch(command) do
29
+ @memoized[command] = :skip
30
30
 
31
- raise RuntimeError, error unless status == 0
32
-
33
- @memoized[command] = '[SKIP]'
34
-
35
- "<- \n" + output
31
+ @env.exec!(command) == 0 ? :success : :failure
36
32
  end
37
33
 
38
- output.tap { |output| PrepKit.logger.info output }
34
+ raise RuntimeError, command if status == :failure
35
+
36
+ status
39
37
  end
40
38
 
41
39
  def test?(path, option)
42
- status, *_ = @env.test?(path, option)
43
-
44
- status == 0
40
+ @env.test?(path, option) == 0
45
41
  end
46
42
 
47
43
  %i(upload download).each do |name|
48
44
  define_method(name) do |src, dst|
49
- PrepKit.logger.info "#{name}: #{src} #{dst}"
45
+ PrepKit.logger.info "#{name}: ".bold + "#{src} #{dst}".underline
50
46
 
51
47
  @env.public_send("#{name}!", src, dst)
52
48
  end
53
49
  end
50
+
51
+ private
52
+
53
+ def environment(host, user, options)
54
+ Remote.new(host, user, options) do |type, data|
55
+ case type
56
+ when :output
57
+ PrepKit.info data.colorize(:green)
58
+ when :error
59
+ PrepKit.error data.colorize(:red)
60
+ end
61
+ end
62
+ end
54
63
  end
55
64
  end
@@ -0,0 +1,54 @@
1
+ module PrepKit
2
+ class Remote
3
+ def initialize(host, user, options, &callback)
4
+ @ssh = create_ssh(host, user, options, &callback)
5
+ end
6
+
7
+ def exec!(command)
8
+ @ssh.call(command)
9
+ end
10
+
11
+ %i(upload! download!).each do |name|
12
+ define_method(name) do |src, dst|
13
+ @ssh.call { |ssh| ssh.scp.public_send(name, src, dst) }
14
+ end
15
+ end
16
+
17
+ def test?(name, option = nil)
18
+ exec!(%([ #{option} #{name} ]))
19
+ end
20
+
21
+ private
22
+
23
+ def create_ssh(host, user, options, &callback)
24
+ lambda do |command|
25
+ status = nil
26
+
27
+ Net::SSH.start(host, user, options) do |ssh|
28
+ channel = ssh.open_channel do |chan|
29
+ chan.exec command do |ch, success|
30
+ raise RuntimeError command unless success
31
+
32
+ ch.on_data do |_, data|
33
+ callback.(:output, data)
34
+ end
35
+
36
+ ch.on_extended_data do |_, _, data|
37
+ callback.(:error, data)
38
+ end
39
+
40
+ ch.on_request('exit-status') do |_, data|
41
+ status = data.read_long
42
+ end
43
+ end
44
+ end
45
+
46
+ channel.wait
47
+ ssh.loop
48
+ end
49
+
50
+ status
51
+ end
52
+ end
53
+ end
54
+ end
data/lib/prep_kit/task.rb CHANGED
@@ -21,7 +21,7 @@ module PrepKit
21
21
  end
22
22
 
23
23
  def within(directory, &block)
24
- PrepKit.logger.info "within: #{directory}"
24
+ PrepKit.logger.info "within: ".bold + directory.underline
25
25
 
26
26
  raise RuntimeError, directory unless test?(directory, '-d')
27
27
 
@@ -1,3 +1,3 @@
1
1
  module PrepKit
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
data/lib/prep_kit.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require 'logger'
2
- require 'remote_marshal'
2
+ require 'net/ssh'
3
+ require 'net/scp'
4
+ require 'colorize'
3
5
 
4
6
  require 'prep_kit/version'
7
+ require 'prep_kit/remote'
5
8
  require 'prep_kit/context'
6
9
  require 'prep_kit/task'
7
10
  require 'prep_kit/within'
data/prep_kit.gemspec CHANGED
@@ -18,7 +18,9 @@ Gem::Specification.new do |spec|
18
18
  end
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_runtime_dependency 'remote_marshal'
21
+ spec.add_runtime_dependency 'net-ssh'
22
+ spec.add_runtime_dependency 'net-scp'
23
+ spec.add_runtime_dependency 'colorize'
22
24
 
23
25
  spec.add_development_dependency "bundler", "~> 1.10"
24
26
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,17 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prep_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - daisuko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-12 00:00:00.000000000 Z
11
+ date: 2016-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: remote_marshal
14
+ name: net-ssh
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: net-scp
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: colorize
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
45
  - - ">="
@@ -72,6 +100,7 @@ files:
72
100
  - lib/prep_kit.rb
73
101
  - lib/prep_kit/context.rb
74
102
  - lib/prep_kit/formatter.rb
103
+ - lib/prep_kit/remote.rb
75
104
  - lib/prep_kit/task.rb
76
105
  - lib/prep_kit/version.rb
77
106
  - lib/prep_kit/with.rb