wocker 0.3.2 → 0.3.3

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
  SHA256:
3
- metadata.gz: e6efba3d71f2df1617beacc71656a84032c8a3a0a18060546ef2d526623b494d
4
- data.tar.gz: '069c7c304426606cfc6f233661402f5f3ad5ad4d3a03cd2e28d3c63319375389'
3
+ metadata.gz: 78228e75f44a2e31255cd8110088c85b1269f7d4eee8907115f48e4fc78584fc
4
+ data.tar.gz: 45abe1fae8763d5e56139308fd391a002783173e2ff4e44fe53b48f002602a5f
5
5
  SHA512:
6
- metadata.gz: e3bd45b678c597ef96837a63361b3c785bcb604042ae748a4432838dafea19096a840f8cd3249de6f7833b3d4d19c25f6315b6d74c10822eb641405f764dd5ea
7
- data.tar.gz: bf7b9ff80bbb2e790dc9cfaee4870caf0fb6cb9909aefb5c5b9a2f7697a8552ab815aaddd31f38aa85bbee608d5ff497b6e915d5782f30f45067c36c1f8d535b
6
+ metadata.gz: 04a2941a2b2ceae193f29be4b029d5c4f6dc0eb03a5d5bbe6ef637f4f2e513ee1da411ed8811e170c785d36f38cdaf27b5af44e38772851ea16866246713f085
7
+ data.tar.gz: 2c6e256283272555e00c80f41a938e7ef1657312ea4cd1ee98008af396701f0bf295ac4c611d5bae44d975207cdbee034962c9f065432d03e6d73d51f6108b89
data/Gemfile.lock CHANGED
@@ -1,14 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wocker (0.3.2)
4
+ wocker (0.3.3)
5
5
  clamp
6
+ kommando
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
11
  clamp (1.3.0)
11
12
  diff-lcs (1.3)
13
+ kommando (0.1.2)
12
14
  rake (10.5.0)
13
15
  rspec (3.8.0)
14
16
  rspec-core (~> 3.8.0)
@@ -1,18 +1,68 @@
1
1
  # frozen_string_literal: true
2
+ require "kommando"
3
+ require "fileutils"
4
+
5
+ # frozen_string_literal: true
6
+ require "kommando"
7
+ require "fileutils"
2
8
 
3
9
  module Wocker
4
10
  module Cli
5
11
  class ExecCommand < Clamp::Command
6
12
  parameter "COMMAND ...", "command"
7
13
  option "--workdir", "WORKDIR", "workdir"
14
+ option ["--interactive", "-i"], :flag, "interactive"
15
+ option ["--detach", "-d"], :flag, "detach"
8
16
 
9
17
  def execute
10
- command_list.insert 0, "cd"
11
- current_workdir = workdir || Wockerfile.workdir || "/vagrant"
12
- command_list.insert 1, "#{current_workdir};"
18
+ best_guess_workdir = workdir || Wockerfile.workdir || "/vagrant"
19
+ best_guess_workdir_cmdfied = best_guess_workdir.gsub("/", "\\")
20
+ best_workdir_cmd = "C:\\#{best_guess_workdir_cmdfied}"
13
21
 
14
22
  cmd = command_list.join " "
15
- Wocker::Vagrant.run "winrm", "-c", cmd
23
+ if detach?
24
+ if workdir
25
+ STDERR.puts "workdir not supported with detach"
26
+ exit 1
27
+ end
28
+
29
+ interactive_flags = "-i 1" if interactive?
30
+
31
+ psexec_wrapper_cmd = "psexec -accepteula -nobanner -d -s #{interactive_flags} #{cmd} >nul 2>&1"
32
+ Wocker::Vagrant.run "winrm", "-s", "cmd", "-c", psexec_wrapper_cmd
33
+ elsif interactive?
34
+ File.unlink "wocker-exec-out" if File.exist? "wocker-exec-out"
35
+
36
+ psexec_wrapper_cmd = "psexec -accepteula -nobanner -s -i 1 cmd.exe /C \"cd #{best_workdir_cmd} & #{cmd} >C:\\vagrant\\wocker-exec-out 2>&1\" >nul 2>&1"
37
+
38
+ psexec_thr = Thread.new do
39
+ Wocker::Vagrant.run "winrm", "-s", "cmd", "-c", psexec_wrapper_cmd
40
+ end
41
+ FileUtils.touch "wocker-exec-out"
42
+ log_tail_k = Kommando.run_async "tail -f wocker-exec-out", output: true
43
+
44
+ require 'io/console'
45
+ loop do
46
+ c = STDIN.getch
47
+ p c
48
+ break if c == "\u0003"
49
+ if c == "\r"
50
+ `wocker keyboard write enter`
51
+ else
52
+ `wocker keyboard write #{c}`
53
+ end
54
+
55
+ sleep 0.1
56
+ end
57
+
58
+ psexec_thr.join
59
+ log_tail_k.kill
60
+
61
+ File.unlink "wocker-exec-out" if File.exist? "wocker-exec-out"
62
+
63
+ else
64
+ Wocker::Vagrant.run "winrm", "-c", "cd #{best_guess_workdir}; #{cmd}"
65
+ end
16
66
  end
17
67
  end
18
68
  end
@@ -1,3 +1,3 @@
1
1
  module Wocker
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
data/wocker.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.add_dependency "clamp"
26
+ spec.add_dependency "kommando"
26
27
 
27
28
  spec.add_development_dependency "bundler", "~> 1.0"
28
29
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wocker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matti Paksula
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: kommando
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'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement