docker-utils 0.1.7 → 0.1.8

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