gem_dir 1.0.0
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/README.markdown +24 -0
- data/Rakefile +34 -0
- data/VERSION.yml +4 -0
- data/lib/rubygems/commands/dir_command.rb +58 -0
- data/lib/rubygems_plugin.rb +3 -0
- data/test/dir_command_test.rb +41 -0
- metadata +70 -0
data/README.markdown
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem Dir
|
2
|
+
========
|
3
|
+
|
4
|
+
Prints the root directory of the specified gem.
|
5
|
+
|
6
|
+
gem dir rails
|
7
|
+
|
8
|
+
Installation:
|
9
|
+
------------
|
10
|
+
|
11
|
+
Just install like any normal gem:
|
12
|
+
gem install mperham-gem_dir
|
13
|
+
|
14
|
+
You might need to add Github as a gem source:
|
15
|
+
gem sources -a http://gems.github.com
|
16
|
+
|
17
|
+
For more help:
|
18
|
+
gem dir --help
|
19
|
+
|
20
|
+
|
21
|
+
Thanks
|
22
|
+
-------------
|
23
|
+
|
24
|
+
Based on Adam Sanderson's open_gem.
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'jeweler'
|
7
|
+
Jeweler::Tasks.new do |s|
|
8
|
+
s.name = "gem_dir"
|
9
|
+
s.summary = "Gem Command to easily locate a ruby gem."
|
10
|
+
s.description = <<-DESC
|
11
|
+
Prints the install directory for the selected gem.
|
12
|
+
DESC
|
13
|
+
s.email = "mperham@gmail.com"
|
14
|
+
s.homepage = "http://github.com/mperham/gem_dir"
|
15
|
+
s.authors = ["Mike Perham"]
|
16
|
+
s.has_rdoc = false
|
17
|
+
s.files = FileList["[A-Z]*", "{bin,lib,test}/**/*"]
|
18
|
+
|
19
|
+
# Testing
|
20
|
+
s.test_files = FileList["test/**/*_test.rb"]
|
21
|
+
s.add_development_dependency 'mocha', '~> 0.9.5'
|
22
|
+
end
|
23
|
+
|
24
|
+
rescue LoadError
|
25
|
+
puts "Jeweler not available. Install it for jeweler-related tasks with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
26
|
+
end
|
27
|
+
|
28
|
+
Rake::TestTask.new do |t|
|
29
|
+
t.libs << 'lib'
|
30
|
+
t.pattern = 'test/**/*_test.rb'
|
31
|
+
t.verbose = false
|
32
|
+
end
|
33
|
+
|
34
|
+
task :default => :test
|
data/VERSION.yml
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'shellwords'
|
2
|
+
|
3
|
+
require 'rubygems/command'
|
4
|
+
require 'rubygems/dependency'
|
5
|
+
require 'rubygems/version_option'
|
6
|
+
|
7
|
+
# OpenCommand will open a gem's source path
|
8
|
+
class Gem::Commands::DirCommand < Gem::Command
|
9
|
+
include Gem::VersionOption
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
super 'dir', "Prints the install directory of the selected gem",
|
13
|
+
:command => nil,
|
14
|
+
:version=> Gem::Requirement.default,
|
15
|
+
:latest=> false
|
16
|
+
|
17
|
+
add_option('-l', '--latest',
|
18
|
+
'If there are multiple versions, open the latest') do |value, options|
|
19
|
+
options[:latest] = true
|
20
|
+
end
|
21
|
+
|
22
|
+
add_version_option
|
23
|
+
end
|
24
|
+
|
25
|
+
def arguments # :nodoc:
|
26
|
+
"GEMNAME gem to use"
|
27
|
+
end
|
28
|
+
|
29
|
+
def execute
|
30
|
+
name = get_one_gem_name
|
31
|
+
path = get_path(name)
|
32
|
+
|
33
|
+
dir_gem(path) if path
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_path(name)
|
37
|
+
dep = Gem::Dependency.new name, options[:version]
|
38
|
+
specs = Gem.source_index.search dep
|
39
|
+
|
40
|
+
if specs.length == 0
|
41
|
+
say "Could not find '#{name}'"
|
42
|
+
return nil
|
43
|
+
|
44
|
+
elsif specs.length == 1 || options[:latest]
|
45
|
+
return specs.last.full_gem_path
|
46
|
+
|
47
|
+
else
|
48
|
+
choices = specs.map{|s|"#{s.name} #{s.version}"}
|
49
|
+
c,i = choose_from_list "Use which gem?", choices
|
50
|
+
return specs[i].full_gem_path if i
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def dir_gem(path)
|
56
|
+
puts path
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'mocha'
|
4
|
+
|
5
|
+
require 'rubygems/commands/dir_command'
|
6
|
+
require 'rubygems/exceptions'
|
7
|
+
|
8
|
+
class Test_SomethingToTest < Test::Unit::TestCase
|
9
|
+
def setup
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_opening_path
|
13
|
+
gem_name = 'neat_gem'
|
14
|
+
gem_path = 'some/path'
|
15
|
+
command = Gem::Commands::DirCommand.new
|
16
|
+
|
17
|
+
command.expects(:get_path).with(gem_name).returns(gem_path)
|
18
|
+
command.expects(:dir_gem).with(gem_path)
|
19
|
+
|
20
|
+
command.invoke(gem_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_opening_nonexistent_path
|
24
|
+
gem_name = 'neat_gem'
|
25
|
+
gem_path = nil
|
26
|
+
command = Gem::Commands::DirCommand.new
|
27
|
+
|
28
|
+
command.expects(:get_path).with(gem_name).returns(gem_path)
|
29
|
+
command.expects(:dir_gem).never
|
30
|
+
|
31
|
+
command.invoke(gem_name)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_opening_with_no_gem_name
|
35
|
+
command = Gem::Commands::DirCommand.new
|
36
|
+
|
37
|
+
assert_raises Gem::CommandLineError do
|
38
|
+
command.invoke()
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gem_dir
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mike Perham
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-10-28 00:00:00 -05:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: mocha
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ~>
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.9.5
|
24
|
+
version:
|
25
|
+
description: " Prints the install directory for the selected gem.\n"
|
26
|
+
email: mperham@gmail.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README.markdown
|
33
|
+
files:
|
34
|
+
- Rakefile
|
35
|
+
- README.markdown
|
36
|
+
- VERSION.yml
|
37
|
+
- lib/rubygems/commands/dir_command.rb
|
38
|
+
- lib/rubygems_plugin.rb
|
39
|
+
- test/dir_command_test.rb
|
40
|
+
has_rdoc: true
|
41
|
+
homepage: http://github.com/mperham/gem_dir
|
42
|
+
licenses: []
|
43
|
+
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options:
|
46
|
+
- --inline-source
|
47
|
+
- --charset=UTF-8
|
48
|
+
require_paths:
|
49
|
+
- lib
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: "0"
|
55
|
+
version:
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: "0"
|
61
|
+
version:
|
62
|
+
requirements: []
|
63
|
+
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 1.3.5
|
66
|
+
signing_key:
|
67
|
+
specification_version: 3
|
68
|
+
summary: Gem Command to easily locate a ruby gem.
|
69
|
+
test_files:
|
70
|
+
- test/dir_command_test.rb
|