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.
@@ -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
@@ -0,0 +1,3 @@
1
+ require 'rubygems/command_manager'
2
+
3
+ Gem::CommandManager.instance.register_command :require
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
+