bard 0.8.9 → 0.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.9
1
+ 0.8.10
data/bard.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bard}
8
- s.version = "0.8.9"
8
+ s.version = "0.8.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Micah Geisel", "Nick Hogle"]
12
- s.date = %q{2010-02-22}
12
+ s.date = %q{2010-02-28}
13
13
  s.default_executable = %q{bard}
14
14
  s.description = %q{This immaculate work of engineering genius allows mere mortals to collaborate with beings of transcendent intelligence like Micah, Michael, and Nick.}
15
15
  s.email = %q{info@botandrose.com}
@@ -23,10 +23,9 @@ end
23
23
 
24
24
  Given /^a commit with a new submodule$/ do
25
25
  type "git submodule add #{ROOT}/tmp/submodule_a.git submodule"
26
- type "git submodule init"
27
- type "git submodule update --merge"
26
+ type "git submodule update --init"
28
27
  Dir.chdir "submodule" do
29
- type "git checkout -b master origin/master"
28
+ type "git checkout master"
30
29
  end
31
30
  type "git add ."
32
31
  type "git commit -m 'added submodule'"
@@ -13,10 +13,19 @@ ENV["GIT_INDEX_FILE"] = nil
13
13
  ROOT = File.expand_path(File.dirname(__FILE__) + '/../..')
14
14
 
15
15
  # setup fixtures
16
- FileUtils.rm_rf "tmp"
17
- FileUtils.mkdir "tmp"
16
+ if File.exist?("/dev/shm")
17
+ FileUtils.rm_rf "tmp"
18
+ tmp_dir = "/dev/shm/bard_testing_tmp"
19
+ FileUtils.rm_rf tmp_dir
20
+ FileUtils.mkdir tmp_dir
21
+ `ln -s #{tmp_dir} tmp`
22
+ else
23
+ FileUtils.rm_rf "tmp"
24
+ FileUtils.mkdir "tmp"
25
+ end
26
+
18
27
  Dir.chdir 'tmp' do
19
- `git clone --mirror --recursive ../fixtures/repo origin.git`
28
+ `git clone --mirror --recursive #{ROOT}/fixtures/repo origin.git`
20
29
 
21
30
  `git clone --bare --recursive origin.git submodule_a.git`
22
31
  `git clone --bare --recursive origin.git submodule_b.git`
data/lib/bard.rb CHANGED
@@ -20,26 +20,27 @@ class Bard < Thor
20
20
 
21
21
  VERSION = File.read(File.expand_path(File.dirname(__FILE__) + "../../VERSION")).chomp
22
22
 
23
- method_options %w( verbose -v ) => :boolean
24
-
25
23
  desc "create [PROJECT_NAME]", "create new project"
26
24
  def create(project_name)
25
+ auto_update!
27
26
  check_dependencies
28
27
  template_path = File.expand_path(File.dirname(__FILE__) + "/bard/template.rb")
29
28
  command = "rails --template=#{template_path} #{project_name}"
30
29
  exec command
31
30
  end
32
31
 
32
+ method_options %w( verbose -v ) => :boolean
33
33
  desc "check [PROJECT_PATH]", "check current project and environment for missing dependencies and common problems"
34
34
  def check(project_path = nil)
35
35
  project_path = "." if project_path.nil? and File.directory? ".git" and File.exist? "config/environment.rb"
36
+ auto_update!
36
37
  check_dependencies
37
38
  check_project project_path if project_path
38
39
  end
39
40
 
40
41
  desc "data", "copy production database down to your local machine"
41
42
  def data
42
- check_dependencies
43
+ ensure_sanity!
43
44
  exec "cap data:pull"
44
45
  end
45
46
 
@@ -50,8 +51,7 @@ class Bard < Thor
50
51
  warn NonFastForwardError unless fast_forward_merge?
51
52
 
52
53
  run_crucial "git pull --rebase origin integration"
53
-
54
- prepare_environment changed_files(@common_ancestor, "origin/integration")
54
+ run_crucial "rake bootstrap:test"
55
55
  end
56
56
 
57
57
  desc "push", "push local changes out to the remote"
@@ -100,37 +100,19 @@ class Bard < Thor
100
100
 
101
101
  desc "stage", "!!! INTERNAL USE ONLY !!! reset HEAD to integration, update submodules, run migrations, install gems, restart server"
102
102
  def stage
103
- check_dependencies
103
+ ensure_sanity!
104
104
 
105
- ENV['RAILS_ENV'] = "staging"
106
105
  run_crucial "git fetch"
107
106
  run_crucial "git reset --hard origin/integration"
108
- prepare_environment
107
+ run_crucial "rake bootstrap RAILS_ENV=staging"
109
108
  end
110
109
 
111
110
  private
112
111
  def ensure_sanity!
112
+ auto_update!
113
113
  check_dependencies
114
114
  raise NotInProjectRootError unless File.directory? ".git"
115
115
  raise NotOnIntegrationError unless current_branch == "integration"
116
116
  raise WorkingTreeDirtyError unless `git status`.include? "working directory clean"
117
117
  end
118
-
119
- def prepare_environment(changed_files = nil)
120
- if changed_files.nil? or changed_files.any? { |f| f =~ %r(^config/environment.+) }
121
- run_crucial "rake gems:install"
122
- end
123
-
124
- if changed_files.nil? or changed_files.any? { |f| f =~ %r(^db/migrate/.+) }
125
- run_crucial "rake db:migrate"
126
- run_crucial "rake db:migrate RAILS_ENV=test" unless ENV['RAILS_ENV'] == 'staging'
127
- end
128
-
129
- run_crucial "git submodule sync"
130
- run_crucial "git submodule init"
131
- run_crucial "git submodule update --merge"
132
- run_crucial "git submodule foreach 'git checkout `git name-rev --name-only HEAD`'"
133
-
134
- system "touch tmp/restart.txt"
135
- end
136
118
  end
@@ -26,17 +26,10 @@ Capistrano::Configuration.instance(:must_exist).load do
26
26
  # system "rm db/data.sql"
27
27
  end
28
28
 
29
- namespace "deploy" do
30
- desc "push app from staging to production"
31
- task :default, :roles => :production do
32
- system "git push github" if `git remote` =~ /\bgithub\b/
33
- run "cd #{application} && git pull"
34
- run "cd #{application} && rake gems:install" if File.exist?("Rakefile")
35
- run "cd #{application} && script/runner 'Sass::Plugin.options[:always_update] = true; Sass::Plugin.update_stylesheets'" if File.exist?("public/stylesheets/sass") or File.exist?("app/sass")
36
- run "cd #{application} && rake asset:packager:build_all" if File.exist?("vendor/plugins/asset_packager")
37
- run "cd #{application} && git submodule init && git submodule update" if File.exist?(".gitmodules")
38
- run "cd #{application} && rake db:migrate && rake restart" if File.exist?("Rakefile")
39
- puts "Deploy Succeeded"
40
- end
29
+ desc "push app from staging to production"
30
+ task :deploy, :roles => :production do
31
+ system "git push github" if `git remote` =~ /\bgithub\b/
32
+ run "cd #{application} && git pull origin/master && rake bootstrap:production"
33
+ puts "Deploy Succeeded"
41
34
  end
42
35
  end
data/lib/bard/check.rb CHANGED
@@ -1,27 +1,37 @@
1
1
  class Bard < Thor
2
2
  private
3
+ def auto_update!
4
+ original_command = [ENV["_"], @_invocations[Bard], ARGV].flatten.join(" ")
5
+ required = `curl -s http://gemcutter.org/api/v1/gems/bard.json`.match(/"version":"([0-9.]+)"/)[1]
6
+ if Versionomy.parse(Bard::VERSION) < Versionomy.parse(required)
7
+ original_command = [ENV["_"], @_invocations[Bard], ARGV].flatten.join(" ")
8
+ puts "bard gem is out of date... updating to new version"
9
+ exec "gem install bard && #{original_command}"
10
+ end
11
+ if options.verbose?
12
+ puts green("#{"bard".ljust(9)} (#{Bard::VERSION})")
13
+ end
14
+ end
15
+
3
16
  def check_dependencies
4
17
  required = {
5
- 'bard' => `curl -s http://gemcutter.org/api/v1/gems/bard.json`.match(/"version":"([0-9.]+)"/)[1],
6
18
  'git' => '1.6.4',
7
19
  'rubygems' => '1.3.4',
8
- 'ruby' => '1.8.6'
20
+ 'ruby' => '1.8.7'
9
21
  }
10
22
  actual = {
11
- 'bard' => Bard::VERSION,
12
23
  'git' => `git --version`[/[0-9.]+/],
13
24
  'rubygems' => Gem::VERSION,
14
25
  'ruby' => RUBY_VERSION
15
26
  }
16
27
  help = {
17
- 'bard' => 'please type `gem install bard` to update',
18
28
  'git' => 'please visit http://git-scm.com/download and install the appropriate package for your architecture',
19
29
  'rubygems' => 'please type `gem update --system` to update',
20
- 'ruby' => 'um... ask micah?'
30
+ 'ruby' => 'ruby 1.8.7 is required for all projects now. talk to micah for upgrade help'
21
31
  }
22
32
 
23
33
  errors = []
24
- %w(bard git rubygems ruby).each do |pkg|
34
+ %w(git rubygems ruby).each do |pkg|
25
35
  if Versionomy.parse(actual[pkg]) < Versionomy.parse(required[pkg])
26
36
  errors << red("#{pkg.ljust(9)} (#{actual[pkg]}) ... NEED (#{required[pkg]})\n #{help[pkg]}")
27
37
  elsif options.verbose?
data/lib/bard/rake.rb CHANGED
@@ -1,10 +1,36 @@
1
- task :bootstrap do
2
- `git submodule update --init` if `git submodule` =~ /^[^ ]/
3
- `cp config/database.sample.yml config/database.yml` unless File.exist?('config/database.yml')
4
- `rake gems:install db:create db:schema:load RAILS_ENV=test`
5
- `rake gems:install RAILS_ENV=cucumber`
1
+ task :restart do
2
+ system "touch tmp/restart.txt"
3
+ system "touch tmp/debug.txt" if ENV["DEBUG"] == 'true'
4
+ end
5
+
6
+ desc "Bootstrap project"
7
+ task :bootstrap => %w(bootstrap:files gems:install db:create db:migrate restart)
8
+
9
+ namespace :bootstrap do
10
+ desc "Bootstrap project to run tests"
11
+ task :test => :bootstrap do
12
+ system "rake gems:install db:create db:schema:load RAILS_ENV=test"
13
+ system "rake gems:install RAILS_ENV=cucumber"
14
+ end
15
+
16
+ desc "Bootstrap project to run in production"
17
+ task :production => :bootstrap do
18
+ if File.exist?("public/stylesheets/sass") or File.exist?("app/sass")
19
+ Sass::Plugin.options[:always_update] = true;
20
+ Sass::Plugin.update_stylesheets
21
+ end
22
+ Rake::Task["asset:packager:build_all"].invoke if File.exist?("vendor/plugins/asset_packager")
23
+ end
24
+
25
+ task :files do
26
+ system "git submodule sync"
27
+ system "git submodule init"
28
+ system "git submodule update --merge"
29
+ system "git submodule foreach 'git checkout `git name-rev --name-only HEAD`'"
30
+ system "cp config/database.sample.yml config/database.yml" unless File.exist?('config/database.yml')
31
+ end
6
32
  end
7
33
 
8
34
  Rake::Task[:default].clear
9
35
  desc "Bootstrap the current project and run the tests."
10
- task :default => [:bootstrap, :spec, :cucumber]
36
+ task :default => ["bootstrap:test", :spec, :cucumber]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
4
+ version: 0.8.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-02-22 00:00:00 -08:00
13
+ date: 2010-02-28 00:00:00 -08:00
14
14
  default_executable: bard
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency