wocker 0.3.2 → 0.3.3

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