Blame view
script/boxen
1.78 KB
|
e4ab3c55f
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/usr/bin/ruby
# Run Boxen.
require "pathname"
if ENV["USER"] == "root"
abort "Run this as a normal user, I'll sudo if I need to."
end
# Make sure only one boxen process runs at a time.
myself = File.new __FILE__
unless myself.flock File::LOCK_EX | File::LOCK_NB
abort "You're already running a boxen process! Know a patience."
end
# Yeah yeah, I like to be explicit.
at_exit { myself.flock File::LOCK_UN }
# Put us where we belong, in the root dir of our boxen repo.
Dir.chdir Pathname.new(__FILE__).realpath + "../.."
|
|
6f37b06d8
|
25 26 27 |
# FIX: temporarily set BOXEN_HOME to `./tmp/home` during porting.
ENV["BOXEN_HOME"] = File.expand_path("tmp/home")
|
|
e4ab3c55f
|
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 |
# Auto-update code. This is done as early as possible so that changes
# to boxen support code or dependencies can be grabbed.
unless ENV["BOXEN_NO_PULL"] || ARGV.include?("--no-pull")
if system("which git > /dev/null") && File.directory?(".git")
clean = `git status --porcelain`.empty?
master = `git symbolic-ref HEAD`.chomp == "refs/heads/master"
no_new_commits = system('git diff --exit-code --quiet origin/master master')
if clean && master && no_new_commits
quietly = "> /dev/null 2>&1"
fetch = "(git fetch origin #{quietly})"
reset = "(git reset --hard origin/master #{quietly})"
reclean = "(git clean -df #{quietly})"
unless system "#{fetch} && #{reset} && #{reclean}"
warn "Couldn't auto-update, continuing."
end
end
end
end
# Make sure our local dependencies are up to date.
strap = %w(script/bootstrap --deployment --local --without development:test)
abort "Can't bootstrap, dependencies are outdated." unless system *strap
|
|
9554e58b4
|
54 55 56 57 |
# Set up our local configuration, deps, and load path. load "config/basic.rb" |
|
cea2b22c9
|
58 |
|
|
bacf7fd78
|
59 |
require "boxen/cli" |
|
cea2b22c9
|
60 |
# Okay, let's run this thing. |
|
bacf7fd78
|
61 |
exit Boxen::CLI.run ARGV |