Commit e4ab3c55f7ef586880f36ec55bf57fa03834d928
1 parent
9d3e514b92
Stub auto-updating script/boxen
Showing 1 changed file with 51 additions and 0 deletions Inline Diff
script/boxen
| File was created | 1 | #!/usr/bin/ruby | ||
| 2 | # Run Boxen. | |||
| 3 | ||||
| 4 | require "pathname" | |||
| 5 | ||||
| 6 | if ENV["USER"] == "root" | |||
| 7 | abort "Run this as a normal user, I'll sudo if I need to." | |||
| 8 | end | |||
| 9 | ||||
| 10 | # Make sure only one boxen process runs at a time. | |||
| 11 | ||||
| 12 | myself = File.new __FILE__ | |||
| 13 | ||||
| 14 | unless myself.flock File::LOCK_EX | File::LOCK_NB | |||
| 15 | abort "You're already running a boxen process! Know a patience." | |||
| 16 | end | |||
| 17 | ||||
| 18 | # Yeah yeah, I like to be explicit. | |||
| 19 | ||||
| 20 | at_exit { myself.flock File::LOCK_UN } | |||
| 21 | ||||
| 22 | # Put us where we belong, in the root dir of our boxen repo. | |||
| 23 | ||||
| 24 | Dir.chdir Pathname.new(__FILE__).realpath + "../.." | |||
| 25 | ||||
| 26 | # Auto-update code. This is done as early as possible so that changes | |||
| 27 | # to boxen support code or dependencies can be grabbed. | |||
| 28 | ||||
| 29 | unless ENV["BOXEN_NO_PULL"] || ARGV.include?("--no-pull") | |||
| 30 | if system("which git > /dev/null") && File.directory?(".git") | |||
| 31 | clean = `git status --porcelain`.empty? | |||
| 32 | master = `git symbolic-ref HEAD`.chomp == "refs/heads/master" | |||
| 33 | no_new_commits = system('git diff --exit-code --quiet origin/master master') | |||
| 34 | ||||
| 35 | if clean && master && no_new_commits | |||
| 36 | quietly = "> /dev/null 2>&1" |