source_win_bat 0.1.0 → 0.2.0
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 +4 -4
- data/Rakefile +6 -1
- data/lib/source_win_bat.rb +21 -19
- data/source_win_bat-0.1.0.gem +0 -0
- data/source_win_bat.gemspec +2 -2
- data/test/{exit.cmd → exit_42.cmd} +0 -0
- data/test/setcwd.cmd +0 -0
- data/test/setdoskey.cmd +0 -0
- data/test/setenv.cmd +0 -0
- data/test/setup_test.bash +0 -0
- data/test/test_ansicpchars.bash +6 -0
- data/test/test_exit.bash +1 -1
- data/test/test_whiteblacklist.bash +24 -0
- data/test/test_wslenvunsetbug.bash +7 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c46cbace49e6e3914b1f3d5152349714d731635f12c26be4d55b58a590a9651
|
4
|
+
data.tar.gz: 36dcbb2f601fde0b2805b6387ee22205c47d48247e320c92ba6ea059c75ba8f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92f80de09376677f864f6817291965309d17c7f9be4a2f733193b381a0141eaade5928c99ce853153539ad97a79a5e7576c0739b5bd40ae00cb228b65db62278
|
7
|
+
data.tar.gz: 7ce72e5a78583ad0124a72efdb50478d33b8f7ffa36b3a7f9824594dc72643451ef24c7fa95781a372d247a0d31e6ff735882d512af9e20c722b04a2115cfedd
|
data/Rakefile
CHANGED
@@ -47,7 +47,12 @@ task :test do
|
|
47
47
|
end
|
48
48
|
cd2test = "cd \"$(#{convpath_win2compat} '#{tests_winpath}')\"; "
|
49
49
|
rubylib = "RUBYLIB=\"$(#{convpath_win2compat} '#{lib_winpath}')\" "
|
50
|
-
|
50
|
+
if ENV['TEST']
|
51
|
+
testcases = ENV['TEST']
|
52
|
+
else
|
53
|
+
testcases = "test_*.bash"
|
54
|
+
end
|
55
|
+
prove = "prove -e /bin/bash -j4 #{testcases}; "
|
51
56
|
|
52
57
|
cmd_in_env = cd2test + rubylib + prove
|
53
58
|
if env == UnixCompatEnv.compat_env
|
data/lib/source_win_bat.rb
CHANGED
@@ -6,7 +6,7 @@ require_relative 'unixcompatenv'
|
|
6
6
|
|
7
7
|
class SourceWindowsBatch
|
8
8
|
|
9
|
-
VERSION = "0.
|
9
|
+
VERSION = "0.2.0"
|
10
10
|
|
11
11
|
def main(argv)
|
12
12
|
if argv.length < 4 || argv[3].chomp.empty?
|
@@ -102,14 +102,31 @@ Internal Ruby command Usage:
|
|
102
102
|
wslenvs
|
103
103
|
end
|
104
104
|
|
105
|
+
def whitelist_block?(envvar_name)
|
106
|
+
return false if !ENV["SWB_WHITELIST"]
|
107
|
+
ENV["SWB_WHITELIST"].split(":").each do |name_regexp|
|
108
|
+
return false if Regexp.new(name_regexp) =~ envvar_name
|
109
|
+
end
|
110
|
+
true
|
111
|
+
end
|
112
|
+
|
113
|
+
def blacklist_block?(envvar_name)
|
114
|
+
return false if !ENV["SWB_BLACKLIST"]
|
115
|
+
ENV["SWB_BLACKLIST"].split(":").each do |name_regexp|
|
116
|
+
return true if Regexp.new(name_regexp) =~ envvar_name
|
117
|
+
end
|
118
|
+
false
|
119
|
+
end
|
120
|
+
|
105
121
|
def prepare_env_vars
|
106
122
|
return {} if UnixCompatEnv.compat_env != :wsl
|
107
123
|
|
108
124
|
wslenvs = Hash[]
|
109
125
|
ENV.each do |envvar_name, _|
|
126
|
+
next if whitelist_block?(envvar_name) || blacklist_block?(envvar_name)
|
110
127
|
wslenvs[envvar_name] = ""
|
111
128
|
end
|
112
|
-
wslenvs.merge!(parse_wslenv(ENV['WSLENV']))
|
129
|
+
wslenvs.merge!(parse_wslenv(ENV['WSLENV'])) if ENV['WSLENV']
|
113
130
|
# We don't use '/l' option, but convert paths by ourselves instead.
|
114
131
|
# See the comment that starts with 'How PATH in WSLENV is handled'
|
115
132
|
wslenvs['PATH'] = ""
|
@@ -161,22 +178,6 @@ Internal Ruby command Usage:
|
|
161
178
|
str.gsub(/'/, '"\'"')
|
162
179
|
end
|
163
180
|
|
164
|
-
def conv_to_host_cmds(in_file, out_file, conv_method, env)
|
165
|
-
unless File.exist?(in_file)
|
166
|
-
return
|
167
|
-
end
|
168
|
-
File.open(out_file, "w") do |out|
|
169
|
-
File.open(in_file) do |f|
|
170
|
-
f.each_line do |line|
|
171
|
-
line.force_encoding("ASCII-8BIT")
|
172
|
-
converted = conv_method.call(line, env)
|
173
|
-
out.puts converted if converted
|
174
|
-
end
|
175
|
-
end
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
|
180
181
|
def to_compat_pathlist(path, shell)
|
181
182
|
raise "Unsupporeted" unless shell == :bash
|
182
183
|
path.split(";")
|
@@ -216,6 +217,7 @@ Internal Ruby command Usage:
|
|
216
217
|
|
217
218
|
is_var_valid = /^[a-zA-Z_][_0-9a-zA-Z]*$/ =~ var
|
218
219
|
next if !is_var_valid
|
220
|
+
next if whitelist_block?(var) || blacklist_block?(var)
|
219
221
|
|
220
222
|
if var == "PATH"
|
221
223
|
val = to_compat_pathlist(val, shell)
|
@@ -234,7 +236,7 @@ Internal Ruby command Usage:
|
|
234
236
|
# Leave the PATH's WSLENV flag as is
|
235
237
|
wslenvs = Hash[*envs.flat_map {|env| [env, ""]}]
|
236
238
|
wslenvs.delete('PATH')
|
237
|
-
wslenvs.merge!(parse_wslenv(ENV['WSLENV']))
|
239
|
+
wslenvs.merge!(parse_wslenv(ENV['WSLENV'])) if ENV['WSLENV']
|
238
240
|
|
239
241
|
if wslenvs.length > 0
|
240
242
|
f_out.puts("export WSLENV='#{serialize_wslenvs(wslenvs)}'")
|
Binary file
|
data/source_win_bat.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'source_win_bat'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.2.0'
|
4
4
|
s.date = '2019-01-05'
|
5
5
|
s.summary = "'source' Windows bat files in your UNIX compatible shell in Windows"
|
6
6
|
s.description = <<EOS
|
@@ -12,6 +12,6 @@ EOS
|
|
12
12
|
s.email = 'abc.tkys+pub@gmail.com'
|
13
13
|
s.files = `git ls-files`.split("\n")
|
14
14
|
s.executables = ["init_sw"]
|
15
|
-
s.homepage = '
|
15
|
+
s.homepage = 'https://github.com/nullpo-head/source-win-bat'
|
16
16
|
s.license = 'MIT'
|
17
17
|
end
|
File without changes
|
data/test/setcwd.cmd
CHANGED
File without changes
|
data/test/setdoskey.cmd
CHANGED
File without changes
|
data/test/setenv.cmd
CHANGED
File without changes
|
data/test/setup_test.bash
CHANGED
File without changes
|
data/test/test_ansicpchars.bash
CHANGED
data/test/test_exit.bash
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
source ./setup_test.bash
|
4
|
+
tap_tests 9
|
5
|
+
|
6
|
+
export SWB_BLACKLIST="SWB_FOO:SWB_BLACK_.*:SWB_BAR"
|
7
|
+
[[ -z "$(sw set SWB_FOO=FOO; echo $SWB_FOO)" ]]; tap_okif $?
|
8
|
+
[[ -z "$(sw set SWB_BLACK_FOO=FOO; echo $SWB_BLACK_FOO)" ]]; tap_okif $?
|
9
|
+
[[ -z "$(sw set SWB_BAR=BAR; echo $SWB_BAR)" ]]; tap_okif $?
|
10
|
+
[[ $(sw set SWB_BAZ=BAZ; echo $SWB_BAZ) = BAZ ]]; tap_okif $?
|
11
|
+
|
12
|
+
|
13
|
+
export SWB_WHITELIST="SWB_W1:SWB_WHITE_.*:SWB_W2"
|
14
|
+
export SWB_W1="foo"
|
15
|
+
export SWB_WHITE_FOO="foo foo"
|
16
|
+
export SWB_W2="bar"
|
17
|
+
[[ $(sw set SWB_W1=foo; echo $SWB_W1) = foo ]]; tap_okif $?
|
18
|
+
[[ $(sw set SWB_WHITE_FOO=foo; echo $SWB_WHITE_FOO) = foo ]]; tap_okif $?
|
19
|
+
[[ $(sw set SWB_W2=bar; echo $SWB_W2) = bar ]]; tap_okif $?
|
20
|
+
[[ -z "$(sw set SWB_W3=baz; echo $SWB_W3)" ]]; tap_okif $?
|
21
|
+
|
22
|
+
export SWB_W1=
|
23
|
+
export SWB_BLACKLIST="${SWB_BLACLIST}:SWB_W1"
|
24
|
+
[[ -z "$(sw set SWB_W1=W1; echo $SWB_W1)" ]]; tap_okif $?
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: source_win_bat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takaya Saeki
|
@@ -25,8 +25,9 @@ files:
|
|
25
25
|
- bin/init_sw
|
26
26
|
- lib/source_win_bat.rb
|
27
27
|
- lib/unixcompatenv.rb
|
28
|
+
- source_win_bat-0.1.0.gem
|
28
29
|
- source_win_bat.gemspec
|
29
|
-
- test/
|
30
|
+
- test/exit_42.cmd
|
30
31
|
- test/setcwd.cmd
|
31
32
|
- test/setdoskey.cmd
|
32
33
|
- test/setenv.cmd
|
@@ -38,7 +39,9 @@ files:
|
|
38
39
|
- test/test_setcwd.bash
|
39
40
|
- test/test_setdoskey.bash
|
40
41
|
- test/test_setenv.bash
|
41
|
-
|
42
|
+
- test/test_whiteblacklist.bash
|
43
|
+
- test/test_wslenvunsetbug.bash
|
44
|
+
homepage: https://github.com/nullpo-head/source-win-bat
|
42
45
|
licenses:
|
43
46
|
- MIT
|
44
47
|
metadata: {}
|