docker-utils 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: 949791671cf03716ddfea9b3cd86cdf7696b1d23
4
- data.tar.gz: 7d8059a7d640e29d3c48f3b9ce499db7c646c8f1
3
+ metadata.gz: 97c7d006aca2a033ffb9faa2accfd60578262b56
4
+ data.tar.gz: c9bea903272bb78f1b2ec843c44f4aa10b0322a1
5
5
  SHA512:
6
- metadata.gz: d30a2645107d619d692751e6bc81bb7f74fea0820ea42c4cae8050ce910d24751be8c7deca2d6e3834b36926f87f46af400aa33beb8625aa9a1bfd843bcec042
7
- data.tar.gz: 3970e56ec02d7bf0b022074bf855105544b7cc5197600963d7b1a1ee2f5de205bbd21072f60280dfcd87a46faaa11f90dff2f9c57b4c1fd97f806661cf26a27c
6
+ metadata.gz: 8a42ebc7ac7af8e76f9b9c68f76d4173112864b0437aff7837590f8d4efb99f88186ff88a1fbcca3131c4581960f9462b5451c784e9df888b6e24a5661918d83
7
+ data.tar.gz: 4fe3978cb087011f06fd8c453ade72287d65d66f0556a2887d0bf3a130e6aa7fe6400f496c46fef811aa0a6fe05e419c9a6f133b0b6eb1208a30a753ddc25d8a
data/.git/COMMIT_EDITMSG CHANGED
@@ -1 +1 @@
1
- Remove TMPDIR from guest
1
+ toolchain -b binds network to host
data/.git/index CHANGED
Binary file
data/.git/logs/HEAD CHANGED
@@ -6,3 +6,4 @@ be1f197731085b21d3f3be9029bee5b582171590 279ea12cb6a2e318bdd44687c8ed53d2c1adc0a
6
6
  1104c618b07e441604244128f06b4bf92afb3725 fb1f9c856ce0b46016dbc6ad59dadb42d4c8a440 Levi Aul <levi@leviaul.com> 1403404049 -0700 commit: Fix self-referential scripts
7
7
  fb1f9c856ce0b46016dbc6ad59dadb42d4c8a440 34fe88f616ebfbe01e26bca750f2723feea23426 Levi Aul <levi@leviaul.com> 1403727351 -0700 commit: Correct location of unbound data volumes on host
8
8
  34fe88f616ebfbe01e26bca750f2723feea23426 4746d16d9f9cefee5d7a11db1834cedce8400c59 Levi Aul <levi@leviaul.com> 1403746668 -0700 commit: Remove TMPDIR from guest
9
+ 4746d16d9f9cefee5d7a11db1834cedce8400c59 327a4895eaf4b6a7e33fb4b023e5fa6474d9e354 Levi Aul <levi@leviaul.com> 1403817004 -0700 commit: toolchain -b binds network to host
@@ -6,3 +6,4 @@ be1f197731085b21d3f3be9029bee5b582171590 279ea12cb6a2e318bdd44687c8ed53d2c1adc0a
6
6
  1104c618b07e441604244128f06b4bf92afb3725 fb1f9c856ce0b46016dbc6ad59dadb42d4c8a440 Levi Aul <levi@leviaul.com> 1403404049 -0700 commit: Fix self-referential scripts
7
7
  fb1f9c856ce0b46016dbc6ad59dadb42d4c8a440 34fe88f616ebfbe01e26bca750f2723feea23426 Levi Aul <levi@leviaul.com> 1403727351 -0700 commit: Correct location of unbound data volumes on host
8
8
  34fe88f616ebfbe01e26bca750f2723feea23426 4746d16d9f9cefee5d7a11db1834cedce8400c59 Levi Aul <levi@leviaul.com> 1403746668 -0700 commit: Remove TMPDIR from guest
9
+ 4746d16d9f9cefee5d7a11db1834cedce8400c59 327a4895eaf4b6a7e33fb4b023e5fa6474d9e354 Levi Aul <levi@leviaul.com> 1403817004 -0700 commit: toolchain -b binds network to host
@@ -5,3 +5,4 @@ be1f197731085b21d3f3be9029bee5b582171590 279ea12cb6a2e318bdd44687c8ed53d2c1adc0a
5
5
  6ffac4880de276b0f60e3633cacb482b18d0f906 1104c618b07e441604244128f06b4bf92afb3725 Levi Aul <levi@leviaul.com> 1403395587 -0700 update by push
6
6
  1104c618b07e441604244128f06b4bf92afb3725 fb1f9c856ce0b46016dbc6ad59dadb42d4c8a440 Levi Aul <levi@leviaul.com> 1403404051 -0700 update by push
7
7
  fb1f9c856ce0b46016dbc6ad59dadb42d4c8a440 4746d16d9f9cefee5d7a11db1834cedce8400c59 Levi Aul <levi@leviaul.com> 1403746675 -0700 update by push
8
+ 4746d16d9f9cefee5d7a11db1834cedce8400c59 327a4895eaf4b6a7e33fb4b023e5fa6474d9e354 Levi Aul <levi@leviaul.com> 1403817010 -0700 update by push
@@ -0,0 +1 @@
1
+ x��]j�0���S�Rvc�B(�{.!���Զ��N�_�}�o�``���p‡�"���D�-��q�>_2'r����h~�.��
@@ -1 +1 @@
1
- 4746d16d9f9cefee5d7a11db1834cedce8400c59
1
+ 327a4895eaf4b6a7e33fb4b023e5fa6474d9e354
@@ -1 +1 @@
1
- 4746d16d9f9cefee5d7a11db1834cedce8400c59
1
+ 327a4895eaf4b6a7e33fb4b023e5fa6474d9e354
@@ -0,0 +1 @@
1
+ 327a4895eaf4b6a7e33fb4b023e5fa6474d9e354
@@ -1,47 +1,79 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- toolchain_image = 'bexio/toolchain:latest'
4
- toolchain_subcommand_args = ARGV
3
+ EXPUNGE_ENV_KEYS = [
4
+ 'TMPDIR'
5
+ ]
5
6
 
7
+ require 'optparse'
6
8
  require 'pathname'
7
9
 
8
- host_repo_root = `git rev-parse --show-toplevel 2>/dev/null`.chomp
9
- if host_repo_root.empty?
10
- $stderr.puts "docker toolchain only operates inside a git repository"
11
- Kernel.exit 1
10
+ options = {}
11
+ options[:toolchain_image] = 'bexio/toolchain:latest'
12
+
13
+ toolchain_docker_args = []
14
+ toolchain_subcommand_args = ARGV[0..-1]
15
+ ARGV.clear
16
+
17
+ if subcommand_delim_pos = toolchain_subcommand_args.index('--')
18
+ toolchain_own_args, toolchain_subcommand_args = toolchain_subcommand_args.partition.each_with_index{ |x, i| i <= subcommand_delim_pos }
19
+ ARGV.concat(toolchain_own_args[0..-2])
12
20
  end
13
21
 
14
- host_repo_root = Pathname.new(host_repo_root)
15
- host_cwd = Pathname.pwd
22
+ OptionParser.new do |opts|
23
+ opts.on("-i", "--image", "Run within the specified toolchain image") do |image_name|
24
+ options[:toolchain_image] = image_name
25
+ end
16
26
 
17
- rel_cwd = host_cwd.relative_path_from(host_repo_root)
27
+ opts.on("-b", "--[no-]bind-net", "Run the command in the host's network namespace") do |v|
28
+ options[:bind_net] = v
29
+ end
30
+ end.parse!
18
31
 
19
- guest_repo_root = Pathname.new('/app')
20
- guest_cwd = guest_repo_root + rel_cwd
32
+ toolchain_image = (options[:toolchain_image].split(':') + ['latest'])[0, 2].join(':')
21
33
 
22
34
  toolchain_available = system 'docker', 'inspect', '-f', '{{.Id}}', toolchain_image, out: '/dev/null', err: '/dev/null'
23
- unless toolchain_available
24
- system 'docker', 'pull', toolchain_image
35
+ unless toolchain_available or system('docker', 'pull', toolchain_image)
36
+ $stderr.puts "could not locate toolchain image '#{toolchain_image}'; aborting"
37
+ Kernel.exit 1
25
38
  end
26
39
 
27
- expunge_env_keys = [
28
- 'TMPDIR'
29
- ]
30
40
 
31
- host_env_keys = ENV.keys
41
+
42
+ # mount options
43
+ host_cwd = Pathname.pwd
44
+ host_repo_root = `git rev-parse --show-toplevel 2>/dev/null`.chomp
45
+ host_repo_root = nil if host_repo_root.empty?
46
+ if host_repo_root
47
+ host_repo_root = Pathname.new(host_repo_root)
48
+ rel_cwd = host_cwd.relative_path_from(host_repo_root)
49
+ guest_repo_root = Pathname.new('/src')
50
+ guest_cwd = guest_repo_root + rel_cwd
51
+
52
+ toolchain_docker_args.concat([
53
+ '-v', "#{host_repo_root}:#{guest_repo_root}",
54
+ '-w', guest_cwd.to_s
55
+ ])
56
+ end
57
+
58
+ # interactivity options
59
+ if $stdin.tty? and $stdout.tty?
60
+ toolchain_docker_args.concat(['-i', '-t'])
61
+ end
62
+
63
+ # environment options
64
+ exposed_env_keys = ENV.keys - EXPUNGE_ENV_KEYS
32
65
  container_env_keys = `docker inspect -f '{{.Config.Env}}' #{toolchain_image}`.chomp[1..-2].split(' ').map{ |pair| pair.split('=').first }
66
+ toolchain_docker_args.concat((exposed_env_keys - container_env_keys).map{ |k| ['-e', k] }.flatten)
33
67
 
34
- share_env_keys = host_env_keys - container_env_keys - expunge_env_keys
35
- share_env_args = share_env_keys.map{ |k| ['-e', k] }.flatten
68
+ # network options
69
+ if options[:bind_net]
70
+ toolchain_docker_args.push '--net=host'
71
+ end
36
72
 
37
73
 
38
- interaction_args = ($stdin.tty? && $stdout.tty?) ? ['-i', '-t'] : []
39
74
 
40
75
  docker_bin_path = `which docker`.chomp
41
76
  Kernel.exec docker_bin_path, 'run', '--rm',
42
- *interaction_args,
43
- '-v', "#{host_repo_root}:#{guest_repo_root}",
44
- '-w', guest_cwd.to_s,
45
- *share_env_args,
77
+ *toolchain_docker_args,
46
78
  toolchain_image,
47
79
  *toolchain_subcommand_args
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker-utils
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
  - Levi Aul
@@ -63,6 +63,7 @@ files:
63
63
  - "./.git/objects/2b/a58bc75cacb00054a89b55f9c29b14b6ad9fc9"
64
64
  - "./.git/objects/31/5a20c22de5072f43f347ed4c3edfd558d3437a"
65
65
  - "./.git/objects/32/38418ccf635978b113b90861fade4ed12ca3f7"
66
+ - "./.git/objects/32/7a4895eaf4b6a7e33fb4b023e5fa6474d9e354"
66
67
  - "./.git/objects/32/9508e363b1ff534ddffe810d2da961396f3dc1"
67
68
  - "./.git/objects/34/fe88f616ebfbe01e26bca750f2723feea23426"
68
69
  - "./.git/objects/3a/2b538cabc17e77f8cb0dd6de8b16605ef58737"
@@ -74,9 +75,12 @@ files:
74
75
  - "./.git/objects/54/5333ccc0f292151680a511e14cbe64a03221e1"
75
76
  - "./.git/objects/59/8547f6e792f8b7d4f1f62239f04c525acacef1"
76
77
  - "./.git/objects/61/71d3bbd3622dfc60faac202c1b90a3c7f9791f"
78
+ - "./.git/objects/62/bdd27536599feb1102bd00ce990d0cd9db2764"
79
+ - "./.git/objects/66/e68fd3387763fe419ae3635d2e6e26f798f27f"
77
80
  - "./.git/objects/6c/b1af9864154ad45be7590a38f809306a077ece"
78
81
  - "./.git/objects/6f/fac4880de276b0f60e3633cacb482b18d0f906"
79
82
  - "./.git/objects/7c/8448991c45ca29d577a67b9631997d0d1b812c"
83
+ - "./.git/objects/80/c3604b85a4058a0f405d6976bac915d1c15680"
80
84
  - "./.git/objects/86/9331fa05276fd1d1f1d74f8b7191ed27acf6e7"
81
85
  - "./.git/objects/97/0cfb60e9f0afbfd3396cb5751bb902e50552ca"
82
86
  - "./.git/objects/9e/21ba32b039906aeb275160496bf8bba0dbd97f"
@@ -97,6 +101,7 @@ files:
97
101
  - "./.git/objects/db/3da375f32f0dea97f64ddaf7546ebba1d6f205"
98
102
  - "./.git/objects/dc/ceeaf814610ebba30b42d39c7d19e581e6d33d"
99
103
  - "./.git/objects/e7/69b6ea29eb14ba6ea173c62c282388ae59b876"
104
+ - "./.git/objects/ea/d1738ae012a657ae2a2d91ccdf321cd2ac7943"
100
105
  - "./.git/objects/eb/8c9934c1edbbb9d2d7b70f48e5b4ad2ce4125f"
101
106
  - "./.git/objects/f0/cf031748908ac06c5212eb4442175fed69965d"
102
107
  - "./.git/objects/f0/cf648547f6239a7881022a31b5215ef724e6c5"
@@ -116,6 +121,7 @@ files:
116
121
  - "./.git/refs/tags/0.1.5"
117
122
  - "./.git/refs/tags/0.1.6"
118
123
  - "./.git/refs/tags/0.1.7"
124
+ - "./.git/refs/tags/0.1.8"
119
125
  - "./.gitignore"
120
126
  - "./Rakefile"
121
127
  - "./bin/docker-utils"