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 +4 -4
- data/Gemfile.lock +3 -1
- data/lib/wocker/cli/exec_command.rb +54 -4
- data/lib/wocker/version.rb +1 -1
- data/wocker.gemspec +1 -0
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78228e75f44a2e31255cd8110088c85b1269f7d4eee8907115f48e4fc78584fc
|
4
|
+
data.tar.gz: 45abe1fae8763d5e56139308fd391a002783173e2ff4e44fe53b48f002602a5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
-
|
11
|
-
|
12
|
-
|
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
|
-
|
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
|
data/lib/wocker/version.rb
CHANGED
data/wocker.gemspec
CHANGED
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.
|
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
|