summaryrefslogtreecommitdiff
path: root/bin/compile
blob: faf3e4c6994e7db6f524d5714d0f09c9ae463cb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env ruby

require 'fileutils'

# This will set the ROOT_PATH variable
require_relative '../lib/gitlab_init'

GO_DIR = 'go'
BUILD_DIR = File.join(ROOT_PATH, 'go_build')
GO_PACKAGE = File.join('gitlab.com/gitlab-org/gitlab-shell', GO_DIR)

def main
  FileUtils.rm_rf(BUILD_DIR)
  build_source_dir = File.join(BUILD_DIR, 'src', GO_PACKAGE)
  FileUtils.mkdir_p(build_source_dir)
  FileUtils.cp_r(File.join(ROOT_PATH, GO_DIR, '.'), build_source_dir)
  env = {
    'GOPATH' => BUILD_DIR,
    'GO15VENDOREXPERIMENT' => '1',
  }
  run!(env, %W[go install #{GO_PACKAGE}/cmd/...])
  executables = Dir[File.join(BUILD_DIR, 'bin', '*')]
  FileUtils.chmod(0755, executables)
  FileUtils.cp(executables, File.join(ROOT_PATH, 'bin'))
end

def run!(env, cmd)
  raise "env must be a hash" unless env.is_a?(Hash)
  raise "cmd must be an array" unless cmd.is_a?(Array)

  if !system(env, *cmd)
    abort "command failed: #{env.inspect} #{cmd.join(' ')}"
  end
end

main