capo 0.0.3 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +18 -2
- data/bin/capo +4 -0
- data/lib/capo/init.rb +15 -3
- data/lib/capo/recipes.rb +13 -4
- data/lib/capo/version.rb +1 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Capo
|
2
2
|
|
3
|
-
|
3
|
+
![Capo.io](http://capo.io/assets/logo.png)
|
4
|
+
|
5
|
+
Command line utility to fetch and manage recipes with [Capo.io](http://capo.io).
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
@@ -18,7 +20,21 @@ Or install it yourself as:
|
|
18
20
|
|
19
21
|
## Usage
|
20
22
|
|
21
|
-
|
23
|
+
Run `capo begin` to set up capistrano in your project. It will create a `Capfile` and `config/deploy.rb` in the folder where you run the command.
|
24
|
+
|
25
|
+
Run `capo list` to get a list of aailable recipes. Install recipes with `capo install a_recipe`.
|
26
|
+
|
27
|
+
You can get a list of installed recipes with `capo added`.
|
28
|
+
|
29
|
+
## About
|
30
|
+
|
31
|
+
The [Capo.io](http://capo.io) website and this gem were build in 48 hours for the [2012 Rails Rumble](http://railsrumble.com/).
|
32
|
+
|
33
|
+
Both were built by
|
34
|
+
* [Jeroen Jacobs](https://github.com/jeroenj)
|
35
|
+
* [Joren De Groof](https://github.com/joren)
|
36
|
+
* [Steven De Coeyer](https://github.com/zhann)
|
37
|
+
* [Hannes Fostie](https://github.com/hannesfostie)
|
22
38
|
|
23
39
|
## Contributing
|
24
40
|
|
data/bin/capo
CHANGED
@@ -33,12 +33,16 @@ case ARGV[0]
|
|
33
33
|
when 'init'
|
34
34
|
Capo::Init.fetch_repository
|
35
35
|
when 'begin'
|
36
|
+
Capo::Init.fetch_repository
|
36
37
|
Capo::Capfile.generate
|
37
38
|
when 'list'
|
39
|
+
Capo::Init.fetch_repository
|
38
40
|
Capo::Recipes.list
|
39
41
|
when 'add'
|
42
|
+
Capo::Init.fetch_repository
|
40
43
|
Capo::Recipes.add ARGV[1]
|
41
44
|
when 'added'
|
45
|
+
Capo::Init.fetch_repository
|
42
46
|
Capo::Recipes.added
|
43
47
|
else
|
44
48
|
puts option_parser unless @usage_shown
|
data/lib/capo/init.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'git'
|
2
|
+
require 'timeout'
|
2
3
|
|
3
4
|
module Capo
|
4
5
|
module Init
|
@@ -8,15 +9,26 @@ module Capo
|
|
8
9
|
|
9
10
|
puts "Pulling changes from remote repository"
|
10
11
|
begin
|
11
|
-
repo = Git.open Capo.repository_path
|
12
|
-
puts repo.lib.send :command, 'pull' # repo.pull is broken in git-1.2.5, see: https://github.com/schacon/ruby-git/issues/32
|
12
|
+
repo = with_timeout{Git.open Capo.repository_path}
|
13
|
+
puts with_timeout{repo.lib.send :command, 'pull'} # repo.pull is broken in git-1.2.5, see: https://github.com/schacon/ruby-git/issues/32
|
13
14
|
rescue
|
14
15
|
puts "Repository doesn't seem to exist yet..."
|
15
16
|
puts "Cloning repository from #{repository_url} to #{Capo.repository_path}"
|
16
|
-
Git.clone repository_url, Capo.repository_path
|
17
|
+
with_timeout{Git.clone repository_url, Capo.repository_path}
|
17
18
|
retry
|
18
19
|
end
|
19
20
|
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def with_timeout
|
24
|
+
begin
|
25
|
+
Timeout::timeout 2 do
|
26
|
+
yield
|
27
|
+
end
|
28
|
+
rescue Timeout::Error
|
29
|
+
puts 'Git timeout. Skipping repository update.'
|
30
|
+
end
|
31
|
+
end
|
20
32
|
end
|
21
33
|
end
|
22
34
|
end
|
data/lib/capo/recipes.rb
CHANGED
@@ -10,20 +10,29 @@ module Capo
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def add name
|
13
|
-
|
13
|
+
recipe = recipes.select{|r| r[:name] == name}.first
|
14
|
+
raise "Recipe '#{name}' not found" unless recipe
|
15
|
+
|
16
|
+
if (dependencies = recipe[:dependencies]).any?
|
17
|
+
puts "[#{name}] Installing dependencies first:"
|
18
|
+
dependencies.each do |dependency|
|
19
|
+
puts "[#{dependency}] Installing depdendency"
|
20
|
+
add dependency
|
21
|
+
end
|
22
|
+
end
|
14
23
|
|
15
24
|
app_recipe_path = File.join app_deploy_path, "#{name}.rb"
|
16
25
|
|
17
26
|
Dir.mkdir(app_deploy_path) unless Dir.exists?(app_deploy_path)
|
18
27
|
|
19
|
-
puts "
|
28
|
+
puts "[#{name}] Copying recipe to #{app_recipe_path}"
|
20
29
|
FileUtils.copy File.join(Capo.repository_path, 'recipes', name, "#{name}.rb"), app_recipe_path
|
21
30
|
|
22
|
-
puts "Adding line to Capfile"
|
31
|
+
puts "[#{name}] Adding line to Capfile"
|
23
32
|
capfile = File.join Capo.app_path, 'Capfile'
|
24
33
|
File.open(capfile, 'a+'){|f| f.puts "load 'config/deploy/#{name}'"}
|
25
34
|
|
26
|
-
puts "
|
35
|
+
puts "[#{name}] Recipe added"
|
27
36
|
end
|
28
37
|
|
29
38
|
def added
|
data/lib/capo/version.rb
CHANGED