Sha256: 58f9c9c1ba493e45e7026453da65f9c05d25e56d291abede23e8c4347d325c72

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

#!/usr/bin/env ruby

toolchain_image = 'bexio/toolchain:latest'
toolchain_subcommand_args = ARGV

require 'pathname'

host_repo_root = `git rev-parse --show-toplevel 2>/dev/null`.chomp
if host_repo_root.empty?
  $stderr.puts "docker toolchain only operates inside a git repository"
  Kernel.exit 1
end

host_repo_root = Pathname.new(host_repo_root)
host_cwd = Pathname.pwd

rel_cwd = host_cwd.relative_path_from(host_repo_root)

guest_repo_root = Pathname.new('/app')
guest_cwd = guest_repo_root + rel_cwd

toolchain_available = system 'docker', 'inspect', '-f', '{{.Id}}', toolchain_image, out: '/dev/null', err: '/dev/null'
unless toolchain_available
  system 'docker', 'pull', toolchain_image
end

host_env_keys = ENV.keys
container_env_keys = `docker inspect -f '{{.Config.Env}}' #{toolchain_image}`.chomp[1..-2].split(' ').map{ |pair| pair.split('=').first }

share_env_keys = host_env_keys - container_env_keys
share_env_args = share_env_keys.map{ |k| ['-e', k] }.flatten

interaction_args = ($stdin.tty? && $stdout.tty?) ? ['-i', '-t'] : []

docker_bin_path = `which docker`.chomp
Kernel.exec docker_bin_path, 'run', '--rm',
  *interaction_args,
  '-v', "#{host_repo_root}:#{guest_repo_root}",
  '-w', guest_cwd.to_s,
  *share_env_args,
  toolchain_image,
  *toolchain_subcommand_args

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
docker-utils-0.1.6 ./share/scripts/toolchain
docker-utils-0.1.5 ./share/scripts/toolchain
docker-utils-0.1.4 ./share/scripts/toolchain
docker-utils-0.1.3 ./share/scripts/toolchain