gem_require 0.0.1
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/lib/rubygems/commands/require_command.rb +88 -0
- data/lib/rubygems_plugin.rb +3 -0
- metadata +70 -0
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'rubygems/command'
|
2
|
+
require 'rubygems/dependency_installer'
|
3
|
+
require 'rubygems/install_update_options'
|
4
|
+
require 'rubygems/version_option'
|
5
|
+
|
6
|
+
class Gem::Commands::RequireCommand < Gem::Command
|
7
|
+
|
8
|
+
include Gem::VersionOption
|
9
|
+
include Gem::InstallUpdateOptions
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge(
|
13
|
+
{
|
14
|
+
:generate_rdoc => true,
|
15
|
+
:generate_ri => true,
|
16
|
+
:format_executable => false,
|
17
|
+
:test => false,
|
18
|
+
:version => Gem::Requirement.default,
|
19
|
+
}
|
20
|
+
)
|
21
|
+
|
22
|
+
super 'require', 'Install or update a gem', defaults
|
23
|
+
|
24
|
+
add_install_update_options
|
25
|
+
add_version_option
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
def arguments # :nodoc:
|
30
|
+
"GEMNAME name of required gem"
|
31
|
+
end
|
32
|
+
|
33
|
+
def defaults_str # :nodoc:
|
34
|
+
"--version '#{Gem::Requirement.default}' --rdoc --ri --no-force\n" \
|
35
|
+
"--no-test --install-dir #{Gem.dir}"
|
36
|
+
end
|
37
|
+
|
38
|
+
def description # :nodoc:
|
39
|
+
<<-EOF
|
40
|
+
The require command checks whether the specified gems are installed,
|
41
|
+
and installs them if necessary.
|
42
|
+
EOF
|
43
|
+
end
|
44
|
+
|
45
|
+
def usage # :nodoc:
|
46
|
+
"#{program_name} GEMNAME [GEMNAME ...] [options]"
|
47
|
+
end
|
48
|
+
|
49
|
+
def execute
|
50
|
+
exit_code = 0
|
51
|
+
|
52
|
+
version = options[:version]
|
53
|
+
get_all_gem_names.each do |name|
|
54
|
+
begin
|
55
|
+
require_gem(name, version, options)
|
56
|
+
rescue Gem::InstallError => e
|
57
|
+
alert_error "Error installing #{gem_name}:\n\t#{e.message}"
|
58
|
+
exit_code |= 1
|
59
|
+
rescue Gem::GemNotFoundException => e
|
60
|
+
show_lookup_failure e.name, e.version, e.errors
|
61
|
+
exit_code |= 2
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
exit(exit_code)
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
def require_gem(name, version, installer_options)
|
70
|
+
|
71
|
+
dependency = Gem::Dependency.new(name, version)
|
72
|
+
|
73
|
+
if !Gem.source_index.search(dependency).empty?
|
74
|
+
say "#{dependency} is already installed"
|
75
|
+
return false
|
76
|
+
end
|
77
|
+
|
78
|
+
say "Installing #{dependency} ..."
|
79
|
+
|
80
|
+
installer = Gem::DependencyInstaller.new(installer_options)
|
81
|
+
installer.install(name, version)
|
82
|
+
|
83
|
+
installer.installed_gems.each do |spec|
|
84
|
+
say "Installed #{spec.full_name}"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gem_require
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Mike Williams
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-12-05 00:00:00 +11:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: |-
|
23
|
+
This gem adds the `gem require` command. It's almost identical to `gem install`,
|
24
|
+
except that it does nothing if the specified gem is already installed.
|
25
|
+
email: mdub@dogbiscuit.org
|
26
|
+
executables: []
|
27
|
+
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files: []
|
31
|
+
|
32
|
+
files:
|
33
|
+
- lib/rubygems/commands/require_command.rb
|
34
|
+
- lib/rubygems_plugin.rb
|
35
|
+
has_rdoc: true
|
36
|
+
homepage: http://github.com/mdub/gem_require
|
37
|
+
licenses: []
|
38
|
+
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options: []
|
41
|
+
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
hash: 3
|
50
|
+
segments:
|
51
|
+
- 0
|
52
|
+
version: "0"
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
requirements: []
|
63
|
+
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 1.3.7
|
66
|
+
signing_key:
|
67
|
+
specification_version: 3
|
68
|
+
summary: Add the 'gem require' command
|
69
|
+
test_files: []
|
70
|
+
|