prep_kit 0.1.7 → 0.1.8

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,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