summaryrefslogtreecommitdiff
path: root/bin/compile
diff options
context:
space:
mode:
Diffstat (limited to 'bin/compile')
-rwxr-xr-xbin/compile36
1 files changed, 36 insertions, 0 deletions
diff --git a/bin/compile b/bin/compile
new file mode 100755
index 0000000..e9936ee
--- /dev/null
+++ b/bin/compile
@@ -0,0 +1,36 @@
+#!/usr/bin/env ruby
+
+require 'fileutils'
+
+# This will set the ROOT_PATH variable
+require_relative '../lib/gitlab_init'
+
+GO_DIR = 'go'
+GOPATH = File.join(ROOT_PATH, 'go_build')
+GO_PACKAGE = File.join('gitlab.com/gitlab-org/gitlab-shell', GO_DIR)
+
+def main
+ FileUtils.rm_rf(GOPATH)
+ build_source_dir = File.join(GOPATH, 'src', GO_PACKAGE)
+ FileUtils.mkdir_p(build_source_dir)
+ FileUtils.cp_r(File.join(ROOT_PATH, GO_DIR, '.'), build_source_dir)
+ env = {
+ 'GOPATH' => GOPATH,
+ 'GO15VENDOREXPERIMENT' => '1',
+ }
+ run!(env, %W[go install #{GO_PACKAGE}/cmd/...])
+ executables = Dir[File.join(GOPATH, '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