-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall_update_options.rb
204 lines (166 loc) · 6.56 KB
/
install_update_options.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# frozen_string_literal: true
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++
require_relative "../rubygems"
require_relative "security_option"
##
# Mixin methods for install and update options for Gem::Commands
module Gem::InstallUpdateOptions
include Gem::SecurityOption
##
# Add the install/update options to the option parser.
def add_install_update_options
add_option(:"Install/Update", "-i", "--install-dir DIR",
"Gem repository directory to get installed",
"gems") do |value, options|
options[:install_dir] = File.expand_path(value)
end
add_option(:"Install/Update", "-n", "--bindir DIR",
"Directory where executables will be",
"placed when the gem is installed") do |value, options|
options[:bin_dir] = File.expand_path(value)
end
add_option(:"Install/Update", "--document [TYPES]", Array,
"Generate documentation for installed gems",
"List the documentation types you wish to",
"generate. For example: rdoc,ri") do |value, options|
options[:document] = case value
when nil then %w[ri]
when false then []
else value
end
end
add_option(:"Install/Update", "--build-root DIR",
"Temporary installation root. Useful for building",
"packages. Do not use this when installing remote gems.") do |value, options|
options[:build_root] = File.expand_path(value)
end
add_option(:"Install/Update", "--vendor",
"Install gem into the vendor directory.",
"Only for use by gem repackagers.") do |_value, options|
unless Gem.vendor_dir
raise Gem::OptionParser::InvalidOption.new "your platform is not supported"
end
options[:vendor] = true
options[:install_dir] = Gem.vendor_dir
end
add_option(:"Install/Update", "-N", "--no-document",
"Disable documentation generation") do |_value, options|
options[:document] = []
end
add_option(:"Install/Update", "-E", "--[no-]env-shebang",
"Rewrite the shebang line on installed",
"scripts to use /usr/bin/env") do |value, options|
options[:env_shebang] = value
end
add_option(:"Install/Update", "-f", "--[no-]force",
"Force gem to install, bypassing dependency",
"checks") do |value, options|
options[:force] = value
end
add_option(:"Install/Update", "-w", "--[no-]wrappers",
"Use bin wrappers for executables",
"Not available on dosish platforms") do |value, options|
options[:wrappers] = value
end
add_security_option
add_option(:"Install/Update", "--ignore-dependencies",
"Do not install any required dependent gems") do |value, options|
options[:ignore_dependencies] = value
end
add_option(:"Install/Update", "--[no-]format-executable",
"Make installed executable names match Ruby.",
"If Ruby is ruby18, foo_exec will be",
"foo_exec18") do |value, options|
options[:format_executable] = value
end
add_option(:"Install/Update", "--[no-]user-install",
"Install in user's home directory instead",
"of GEM_HOME.") do |value, options|
options[:user_install] = value
end
add_option(:"Install/Update", "--development",
"Install additional development",
"dependencies") do |_value, options|
options[:development] = true
options[:dev_shallow] = true
end
add_option(:"Install/Update", "--development-all",
"Install development dependencies for all",
"gems (including dev deps themselves)") do |_value, options|
options[:development] = true
options[:dev_shallow] = false
end
add_option(:"Install/Update", "--conservative",
"Don't attempt to upgrade gems already",
"meeting version requirement") do |_value, options|
options[:conservative] = true
options[:minimal_deps] = true
end
add_option(:"Install/Update", "--[no-]minimal-deps",
"Don't upgrade any dependencies that already",
"meet version requirements") do |value, options|
options[:minimal_deps] = value
end
add_option(:"Install/Update", "--[no-]post-install-message",
"Print post install message") do |value, options|
options[:post_install_message] = value
end
add_option(:"Install/Update", "-g", "--file [FILE]",
"Read from a gem dependencies API file and",
"install the listed gems") do |v,_o|
v ||= Gem::GEM_DEP_FILES.find do |file|
File.exist? file
end
unless v
message = v ? v : "(tried #{Gem::GEM_DEP_FILES.join ", "})"
raise Gem::OptionParser::InvalidArgument,
"cannot find gem dependencies file #{message}"
end
options[:gemdeps] = v
end
add_option(:"Install/Update", "--without GROUPS", Array,
"Omit the named groups (comma separated)",
"when installing from a gem dependencies",
"file") do |v,_o|
options[:without_groups].concat v.map(&:intern)
end
add_option(:"Install/Update", "--default",
"Add the gem's full specification to",
"specifications/default and extract only its bin") do |v,_o|
options[:install_as_default] = v
end
add_option(:"Install/Update", "--explain",
"Rather than install the gems, indicate which would",
"be installed") do |v,_o|
options[:explain] = v
end
add_option(:"Install/Update", "--[no-]lock",
"Create a lock file (when used with -g/--file)") do |v,_o|
options[:lock] = v
end
add_option(:"Install/Update", "--[no-]suggestions",
"Suggest alternates when gems are not found") do |v,_o|
options[:suggest_alternate] = v
end
add_option(:"Install/Update", "--target-rbconfig [FILE]",
"rbconfig.rb for the deployment target platform") do |v, _o|
Gem.set_target_rbconfig(v)
end
end
##
# Default options for the gem install and update commands.
def install_update_options
{
document: %w[ri],
}
end
##
# Default description for the gem install and update commands.
def install_update_defaults_str
"--document=ri"
end
end