This repository was archived by the owner on Aug 31, 2021. It is now read-only.
forked from 18F/dashboard
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgo
executable file
·140 lines (123 loc) · 3.39 KB
/
go
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#! /usr/bin/env ruby
#
# 18F Hub - Docs & connections between team members, projects, and skill sets
#
# Written in 2015 by Mike Bland ([email protected])
# on behalf of the 18F team, part of the US General Services Administration:
# https://18f.gsa.gov/
#
# To the extent possible under law, the author(s) have dedicated all copyright
# and related and neighboring rights to this software to the public domain
# worldwide. This software is distributed without any warranty.
#
# You should have received a copy of the CC0 Public Domain Dedication along
# with this software. If not, see
# <https://creativecommons.org/publicdomain/zero/1.0/>.
#
# @author Mike Bland ([email protected])
#
# ----
#
# ./go script: unified development environment interface
#
# Inspired by:
# http://www.thoughtworks.com/insights/blog/praise-go-script-part-i
# http://www.thoughtworks.com/insights/blog/praise-go-script-part-ii
#
# Author: Mike Bland ([email protected])
# Date: 2015-01-10
def exec_cmd(cmd)
exit $?.exitstatus unless system(cmd)
end
def init
begin
require 'bundler'
rescue LoadError
puts "Installing Bundler gem..."
exec_cmd 'gem install bundler'
puts "Bundler installed; installing gems"
end
exec_cmd 'bundle install'
install_node_modules
end
def install_gems
exec_cmd 'bundle install'
exec_cmd 'git add Gemfile.lock'
end
def install_node_modules
exec_cmd 'npm install'
end
def update_data
exec_cmd 'bundle exec ruby _data/import-public.rb'
end
def serve
puts 'Updating from the team API'
update_data
exec_cmd 'npm run watchify &'
exec_cmd 'bundle exec jekyll serve --trace'
end
def build
puts 'Building the site...'
exec_cmd('npm run browserify')
exec_cmd('bundle exec jekyll b --trace')
puts 'Site built successfully.'
end
def ci_build
puts 'Building the site...'
exec_cmd('npm run browserify')
exec_cmd('bundle exec jekyll b --trace')
exec_cmd('bundle exec jekyll serve --detach')
puts 'Testing the build'
ci_test
puts 'Killing Jekyll'
exec_cmd('pkill -f jekyll')
puts 'Done!'
end
def deploy
puts 'Pulling the latest changes...'
exec_cmd('git pull')
puts 'Building the site...'
exec_cmd('/opt/install/rbenv/shims/bundle exec jekyll b --trace')
puts 'Site built successfully.'
require 'time'
puts Time.now()
end
def test_build
exec_cmd 'rspec'
end
def ci_test
exec_cmd 'bundle exec rspec --tag "~type:missing"'
end
COMMANDS = {
:init => 'Set up the Hub dev environment',
:install_gems => 'Execute Bundler to update gem set',
:install_node_modules => 'Install Node dependencies',
:update_data => 'Updates data files from data-private',
:serve => 'Serves the site at localhost:4000',
:build => 'Builds the site',
:ci_build => 'Builds the site for a CI system',
:deploy => 'Pulls the latest changes and rebuilds the site',
:test_build => 'Tests the build generated the correct number of project pages.'
}
def usage(exitstatus: 0)
puts <<EOF
Usage: #{$0} [options] [command]
options:
-h,--help Show this help
commands:
EOF
padding = COMMANDS.keys.max_by {|i| i.size}.size + 2
COMMANDS.each do |name, desc|
puts " %-#{padding}s#{desc}" % name
end
exit exitstatus
end
usage(exitstatus: 1) unless ARGV.size == 1
command = ARGV.shift
usage if ['-h', '--help'].include? command
command = command.to_sym
unless COMMANDS.member? command
puts "Unknown option or command: #{command}"
usage(exitstatus: 1)
end
send command