From cd6004fd3db7f313bb2848ff5d0f3d1870484301 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Sat, 3 Sep 2011 07:53:04 -0400 Subject: [PATCH] penchant-ize --- script/gemfile | 11 +++++++++++ script/hooks/pre-commit | 15 +++++++++++++++ script/initialize-environment | 35 +++++++++++++++++++++++++++++++++++ script/install-git-hooks | 6 ++++++ 4 files changed, 67 insertions(+) create mode 100755 script/gemfile create mode 100755 script/hooks/pre-commit create mode 100755 script/initialize-environment create mode 100755 script/install-git-hooks diff --git a/script/gemfile b/script/gemfile new file mode 100755 index 0000000..eb78755 --- /dev/null +++ b/script/gemfile @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'penchant' + +if Penchant::Gemfile.do_full_env_switch!(ARGV[0]) + puts "Gemfile switched to #{ARGV[0]}" +else + exit 0 +end + diff --git a/script/hooks/pre-commit b/script/hooks/pre-commit new file mode 100755 index 0000000..e1b1e1c --- /dev/null +++ b/script/hooks/pre-commit @@ -0,0 +1,15 @@ +#!/bin/bash + +OLD_GIT_DIR=$GIT_DIR + +if [ "$(penchant gemfile-env)" != "remote" ]; then + unset GIT_DIR + penchant gemfile remote + GIT_DIR=$OLD_GIT_DIR + git add Gemfile* +fi + +bundle exec rake +R=$? +if [ $R -ne 0 ]; then exit $R; fi + diff --git a/script/initialize-environment b/script/initialize-environment new file mode 100755 index 0000000..222c8f1 --- /dev/null +++ b/script/initialize-environment @@ -0,0 +1,35 @@ +#!/usr/bin/env ruby + +if File.file?('Gemfile.erb') + pwd = Dir.pwd + + Dir.chdir '..' do + File.readlines(File.join(pwd, 'Gemfile.erb')).find_all { |line| line[':git'] }.each do |line| + repo = line[%r{:git => (['"])(.*)\1}, 2] + + puts "Installing #{repo}" + system %{git clone #{repo}} + end + end + + puts "Bundling for local environment" + system %{script/gemfile local} +else + puts "Bundling..." + system %{bundle} +end + +puts "Installing git hooks" +system %{script/install-git-hooks} + +bundle = File.file?('Gemfile') ? 'bundle exec' : '' + +command = [ bundle, 'rake', '-s', '-T', 'bootstrap' ] + +if !(%x{#{command.join(' ')}}).empty? + puts "Trying to run rake bootstrap..." + system %{#{bundle} rake bootstrap} +end + +puts "Done!" + diff --git a/script/install-git-hooks b/script/install-git-hooks new file mode 100755 index 0000000..0644244 --- /dev/null +++ b/script/install-git-hooks @@ -0,0 +1,6 @@ +#!/bin/bash + +for hook in script/hooks/* ; do + ln -sf $PWD/$hook .git/hooks/${hook##*/} +done +