ianwhite-garlic 0.1.5 → 0.1.6
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/History.txt +10 -0
- data/README.textile +13 -4
- data/Todo.txt +2 -2
- data/bin/garlic +6 -6
- data/lib/garlic/session.rb +3 -6
- data/lib/garlic/target.rb +4 -6
- data/lib/garlic.rb +1 -1
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== 0.1.6 2008-11-27
|
2
|
+
|
3
|
+
* 3 minor enhancements
|
4
|
+
* Updated Readme/TODO
|
5
|
+
* Some crufty output is now suppressed/removed
|
6
|
+
* garlic all command cleans the work path
|
7
|
+
|
8
|
+
* 1 bugfix
|
9
|
+
* --targets, -t option now actually works
|
10
|
+
|
1
11
|
== 0.1.5 2008-11-25
|
2
12
|
|
3
13
|
* 4 minor enhancements
|
data/README.textile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
h1. garlic: lightweight continuous integration for rails using git
|
2
2
|
|
3
3
|
This is not a CI server, use cruisecontrol.rb for that. This is a simple set
|
4
|
-
of rake tasks that let you specify a bunch of rails builds to run against, and
|
4
|
+
of commands (or rake tasks) that let you specify a bunch of rails builds to run against, and
|
5
5
|
dependencies to install.
|
6
6
|
|
7
7
|
This is aimed at testing plugins (or apps) against multiple versions of rails,
|
@@ -15,10 +15,14 @@ Garlic works by cloning git repos for all your dependencies (so they all must be
|
|
15
15
|
git repos), and then using git to checkout various tags and branches to build
|
16
16
|
your app against.
|
17
17
|
|
18
|
+
"Here's an example of running a plugin against 3 different rails verisons and 3 different rspec versions":http://gist.github.com/28786
|
19
|
+
|
18
20
|
h2. It's still new, and not shiny yet
|
19
21
|
|
20
22
|
Please feel free to make it shinier. I'm successfully using it on most of my plugins, and I test
|
21
|
-
with
|
23
|
+
with rspec and cucumber.
|
24
|
+
|
25
|
+
Check out the "TODO LIST":http://github.com/ianwhite/garlic/tree/master/Todo.txt
|
22
26
|
|
23
27
|
h2. Get up and running quickly
|
24
28
|
|
@@ -89,7 +93,12 @@ Check dis out
|
|
89
93
|
garlic shell # "Example output":http://gist.github.com/28795
|
90
94
|
|
91
95
|
You can pipe any thing into garlic shell and it will execute across all of your garlic targets
|
92
|
-
|
96
|
+
|
97
|
+
h2. Rake tasks
|
98
|
+
|
99
|
+
If you prefer to use garlic via rake tasks, then just require 'garlic/tasks' and you'll get a bunch of em.
|
100
|
+
Once required, do rake -T to see descriptions.
|
101
|
+
|
93
102
|
h2. Lend a hand
|
94
103
|
|
95
104
|
This is an early release, so there is plenty of scope for changes and improvement
|
@@ -103,6 +112,6 @@ h2. Lent a hand
|
|
103
112
|
Thanks very much to:
|
104
113
|
|
105
114
|
* Pat Allan
|
106
|
-
* Dr Nic Williams
|
115
|
+
* Dr Nic Williams (API suggestions)
|
107
116
|
|
108
117
|
|
data/Todo.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
* add 'gem'
|
1
|
+
* add 'gem' command - should it freeze the gem in to vendor/gems?
|
2
|
+
* BETTER OUTPUT - even less uninteresting cruft in the output please
|
2
3
|
* specs!
|
3
4
|
* cucumber features!
|
4
|
-
* rewrite using grit? (research: is grit the defacto standard for ruby controlling git?)
|
data/bin/garlic
CHANGED
@@ -23,8 +23,9 @@ OPTIONS:
|
|
23
23
|
--help -h You're reading it
|
24
24
|
--verbose -v Show work
|
25
25
|
--config CONFIG -c Specify a different location of garlic config
|
26
|
-
--
|
27
|
-
--
|
26
|
+
--backtrace Show ruby backtrace on error
|
27
|
+
--targets TARGETS -t Specify subset of targets comma separated or
|
28
|
+
regexp part e.g. -t 2-1,2-2
|
28
29
|
|
29
30
|
You can generate a sample garlic.rb with
|
30
31
|
garlic generate [TEMPLATE [PLUGIN_NAME]] (Available templates: #{available_templates.join(', ')})
|
@@ -59,10 +60,9 @@ begin
|
|
59
60
|
verbose(@verbose)
|
60
61
|
|
61
62
|
# configure the garlic runner
|
62
|
-
garlic
|
63
|
-
|
64
|
-
|
65
|
-
end
|
63
|
+
garlic(@config_file) # load up the garlic instance
|
64
|
+
garlic.verbose = @verbose
|
65
|
+
garlic.run_targets = @run_targets
|
66
66
|
|
67
67
|
# run the command
|
68
68
|
ARGV << 'default' if ARGV.empty?
|
data/lib/garlic/session.rb
CHANGED
@@ -61,6 +61,7 @@ module Garlic
|
|
61
61
|
define_command :all, "Install and update all repos, prepare and run TARGETs" do
|
62
62
|
install_repos
|
63
63
|
update_repos
|
64
|
+
clean
|
64
65
|
prepare
|
65
66
|
run
|
66
67
|
end
|
@@ -94,11 +95,7 @@ module Garlic
|
|
94
95
|
end
|
95
96
|
|
96
97
|
define_command :prepare, "Prepare each garlic TARGET" do
|
97
|
-
|
98
|
-
determine_targets.each {|target| target.prepare }
|
99
|
-
ensure
|
100
|
-
repo('rails').checkout('master') # we get rails back to master if something goes wrong
|
101
|
-
end
|
98
|
+
determine_targets.each {|target| target.prepare }
|
102
99
|
end
|
103
100
|
|
104
101
|
define_command :shell, "Run shell commands from stdin across specified targets" do |*path|
|
@@ -137,7 +134,7 @@ protected
|
|
137
134
|
end
|
138
135
|
|
139
136
|
def determine_targets
|
140
|
-
run_targets ? targets.select{|t| run_targets.
|
137
|
+
run_targets ? targets.select{|t| t.name =~ /(?:#{run_targets.join("|")})/i} : targets
|
141
138
|
end
|
142
139
|
end
|
143
140
|
end
|
data/lib/garlic/target.rb
CHANGED
@@ -58,26 +58,24 @@ module Garlic
|
|
58
58
|
puts "Rails app for #{name} exists"
|
59
59
|
else
|
60
60
|
puts "Creating rails app for #{name}..."
|
61
|
-
|
61
|
+
`ruby #{rails_repo.path}/railties/bin/rails #{path}`
|
62
62
|
end
|
63
|
-
install_dependency(rails_repo, 'vendor/rails') {
|
63
|
+
install_dependency(rails_repo, 'vendor/rails') { `rake rails:update` }
|
64
64
|
end
|
65
65
|
|
66
66
|
def install_dependency(repo, install_path = ".", options = {}, &block)
|
67
67
|
repo = garlic.repo(repo) unless repo.is_a?(Repo)
|
68
68
|
tree_ish = Repo.tree_ish(options)
|
69
69
|
|
70
|
-
puts tree_ish
|
71
|
-
|
72
70
|
if options[:clone]
|
73
71
|
if Repo.path?(install_path)
|
74
72
|
puts "#{install_path} exists, and is a repo"
|
75
|
-
cd(install_path) {
|
73
|
+
cd(install_path) { `git fetch origin` }
|
76
74
|
else
|
77
75
|
puts "cloning #{repo.name} to #{install_path}"
|
78
76
|
repo.clone_to(File.join(path, install_path))
|
79
77
|
end
|
80
|
-
cd(install_path) {
|
78
|
+
cd(install_path) { `git checkout #{tree_ish || repo.head_sha}` }
|
81
79
|
|
82
80
|
else
|
83
81
|
if read_sha(install_path) == repo.head_sha
|
data/lib/garlic.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ianwhite-garlic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian White
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-11-
|
12
|
+
date: 2008-11-27 00:00:00 -08:00
|
13
13
|
default_executable: garlic
|
14
14
|
dependencies: []
|
15
15
|
|