dependencies 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown ADDED
@@ -0,0 +1,74 @@
1
+ Dependencies
2
+ ============
3
+
4
+ Dependencies manager for RACK enabled applications.
5
+
6
+ Description
7
+ -----------
8
+
9
+ Dependencies allows you to declare the list of libraries your application needs,
10
+ even specifying the version and environment it will be required in, and all with
11
+ the simple sintax we all have grown to know. It comes with a handy command line
12
+ tool for inspecting your dependencies.
13
+
14
+ Usage
15
+ -----
16
+
17
+ Declare your dependencies in a `dependencies` in the root of your project.
18
+ This file will look like this:
19
+
20
+ rack ~> 1.0
21
+ sinatra
22
+ webrat (test) git://github.com/brynary/webrat.git
23
+ quietbacktrace ~> 0.1
24
+ contest ~> 0.1 (test)
25
+ haml ~> 2.0
26
+ rack-test 0.3 (test)
27
+ faker ~> 0.3
28
+ spawn ~> 0.1
29
+ ohm git://github.com/soveran/ohm.git
30
+
31
+ Now you can try the `dep` command line tool to check your dependencies:
32
+
33
+ $ dep list
34
+
35
+ You can even specify an environment to see if requirements are met:
36
+
37
+ $ dep list test
38
+
39
+ The list can contain not only gems, but libraries in `vendor` too. Dependencies
40
+ first checks if a matching library in vendor exists, then tries to find a
41
+ suitable gem.
42
+
43
+ In order to use it in your project, just require the `dependencies` gem.
44
+
45
+ Installation
46
+ ------------
47
+
48
+ $ sudo gem install dependencies
49
+
50
+ License
51
+ -------
52
+
53
+ Copyright (c) 2009 Damian Janowski
54
+
55
+ Permission is hereby granted, free of charge, to any person
56
+ obtaining a copy of this software and associated documentation
57
+ files (the "Software"), to deal in the Software without
58
+ restriction, including without limitation the rights to use,
59
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
60
+ copies of the Software, and to permit persons to whom the
61
+ Software is furnished to do so, subject to the following
62
+ conditions:
63
+
64
+ The above copyright notice and this permission notice shall be
65
+ included in all copies or substantial portions of the Software.
66
+
67
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
68
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
69
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
70
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
71
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
72
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
73
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
74
+ OTHER DEALINGS IN THE SOFTWARE.
data/bin/dep CHANGED
@@ -5,27 +5,52 @@ require "dependencies/dep"
5
5
  require "thor"
6
6
 
7
7
  class App < Thor
8
+ include Thor::Actions
9
+
10
+ desc "list [ENV]", "lists dependencies"
8
11
  def list(env = nil)
9
12
  deps.filter(env).each { |dep| puts dep }
10
13
  deps.require(env)
11
14
  end
12
15
 
13
- def vendor(name)
16
+ desc "vendor", "vendors the dependency to ./vendor"
17
+ method_options :all => :boolean
18
+ def vendor(name = nil)
19
+ name || options[:all] || flunk("No dependency given. Did you mean --all?")
20
+
21
+ if name
22
+ vendor_one(name)
23
+ else
24
+ vendor_all
25
+ end
26
+ end
27
+
28
+ protected
29
+
30
+ def vendor_one(name)
14
31
  dep = dependency(name) || flunk("Dependency #{name} not found in dependencies.")
15
32
  dep.url || flunk("Don't know where to vendor #{name} from (no URL given...)")
16
33
 
17
34
  FileUtils.mkdir("vendor") unless File.directory?("vendor")
18
35
 
19
- Dir.chdir("vendor") do
20
- system "git clone #{dep.url} #{dep.name} -q"
21
- Dir.chdir(dep.name) { FileUtils.rm_rf(".git") }
36
+ inside "vendor", :verbose => true do
37
+ run "git clone #{dep.url} #{dep.name} -q"
38
+ remove_file File.join(dep.name, ".git")
22
39
  end
23
40
  end
24
41
 
25
- protected
42
+ def vendor_all
43
+ prevent_exit do
44
+ deps.each do |dep|
45
+ vendor_one(dep.name)
46
+ end
47
+ end
48
+ end
26
49
 
27
50
  def deps
28
51
  @deps ||= Dep.new(File.read("dependencies"))
52
+ rescue Errno::ENOENT
53
+ flunk "No dependencies file found."
29
54
  end
30
55
 
31
56
  def dependency(name)
@@ -34,7 +59,14 @@ protected
34
59
 
35
60
  def flunk(message)
36
61
  $stderr.puts(message)
37
- exit 1
62
+ exit 1 unless @prevent_exit
63
+ end
64
+
65
+ def prevent_exit
66
+ aux, @prevent_exit = @prevent_exit, false
67
+ yield
68
+ ensure
69
+ @prevent_exit = aux
38
70
  end
39
71
  end
40
72
 
data/dependencies.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "dependencies"
3
- s.version = "0.0.3"
3
+ s.version = "0.0.4"
4
4
  s.summary = "Specify your project's dependencies in one file."
5
5
  s.authors = ["Damian Janowski", "Michel Martens"]
6
6
  s.email = ["djanowski@dimaion.com", "michel@soveran.com"]
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
 
10
10
  s.executables << "dep"
11
11
 
12
- s.files = ["Rakefile", "bin/dep", "dependencies.gemspec", "lib/dependencies/dep.rb", "lib/dependencies.rb", "test/dependencies_test.rb", "test/vendor/bar/lib", "test/vendor/barz-2.0/lib", "test/vendor/baz-1.0/lib"]
12
+ s.files = ["README.markdown", "Rakefile", "bin/dep", "dependencies.gemspec", "lib/dependencies/dep.rb", "lib/dependencies.rb", "test/dependencies_test.rb", "test/vendor/bar/lib", "test/vendor/barz-2.0/lib", "test/vendor/baz-1.0/lib"]
13
13
 
14
- s.add_dependency("thor", "~> 0.9")
14
+ s.add_dependency("wycats-thor", "~> 0.11")
15
15
  end
@@ -33,6 +33,8 @@ class Dep
33
33
  end
34
34
 
35
35
  def require_gem
36
+ return unless defined?(Gem)
37
+
36
38
  begin
37
39
  gem(*[name, version].compact)
38
40
  true
@@ -107,6 +107,12 @@ class DependenciesTest < Test::Unit::TestCase
107
107
  assert_equal "foo 1.0 (test)\nbarz 2.0\nbaz 0.1 (test)\n", out
108
108
  end
109
109
  end
110
+
111
+ test "complains when no dependencies file found" do
112
+ out, err = dep "list"
113
+
114
+ assert_equal "No dependencies file found.\n", err
115
+ end
110
116
  end
111
117
 
112
118
  context "vendor" do
@@ -139,6 +145,18 @@ class DependenciesTest < Test::Unit::TestCase
139
145
  end
140
146
  end
141
147
 
148
+ test "vendors everything with --all" do
149
+ with_dependencies "foobar 1.0 file://#{@dir}\nbarbar file://#{create_repo "barbar"}" do
150
+ out, err = dep "vendor --all"
151
+
152
+ assert File.exist?("vendor/foobar/lib/foobar.rb")
153
+ assert !File.exist?("vendor/foobar/.git")
154
+
155
+ assert File.exist?("vendor/barbar/lib/barbar.rb")
156
+ assert !File.exist?("vendor/barbar/.git")
157
+ end
158
+ end
159
+
142
160
  teardown do
143
161
  FileUtils.rm_rf(@dir)
144
162
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependencies
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damian Janowski
@@ -10,18 +10,18 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-06-25 00:00:00 -03:00
13
+ date: 2009-07-21 00:00:00 -03:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: thor
17
+ name: wycats-thor
18
18
  type: :runtime
19
19
  version_requirement:
20
20
  version_requirements: !ruby/object:Gem::Requirement
21
21
  requirements:
22
22
  - - ~>
23
23
  - !ruby/object:Gem::Version
24
- version: "0.9"
24
+ version: "0.11"
25
25
  version:
26
26
  description:
27
27
  email:
@@ -34,6 +34,7 @@ extensions: []
34
34
  extra_rdoc_files: []
35
35
 
36
36
  files:
37
+ - README.markdown
37
38
  - Rakefile
38
39
  - bin/dep
39
40
  - dependencies.gemspec