autoproj 1.13.7 → 2.0.0.b1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gemtest +0 -0
- data/Manifest.txt +27 -21
- data/Rakefile +4 -6
- data/bin/alocate +5 -1
- data/bin/amake +3 -53
- data/bin/aup +3 -50
- data/bin/autoproj +3 -264
- data/bin/autoproj_bootstrap +294 -349
- data/bin/autoproj_bootstrap.in +27 -3
- data/lib/autoproj.rb +23 -1
- data/lib/autoproj/autobuild.rb +51 -89
- data/lib/autoproj/base.rb +0 -9
- data/lib/autoproj/build_option.rb +1 -3
- data/lib/autoproj/cli.rb +1 -0
- data/lib/autoproj/cli/base.rb +155 -0
- data/lib/autoproj/cli/bootstrap.rb +119 -0
- data/lib/autoproj/cli/build.rb +72 -0
- data/lib/autoproj/cli/cache.rb +31 -0
- data/lib/autoproj/cli/clean.rb +37 -0
- data/lib/autoproj/cli/commit.rb +41 -0
- data/lib/autoproj/cli/doc.rb +22 -0
- data/lib/autoproj/cli/envsh.rb +22 -0
- data/lib/autoproj/cli/inspection_tool.rb +73 -0
- data/lib/autoproj/cli/locate.rb +96 -0
- data/lib/autoproj/cli/log.rb +26 -0
- data/lib/autoproj/cli/main.rb +249 -0
- data/lib/autoproj/cli/main_test.rb +57 -0
- data/lib/autoproj/cli/osdeps.rb +30 -0
- data/lib/autoproj/cli/query.rb +43 -0
- data/lib/autoproj/cli/reconfigure.rb +19 -0
- data/lib/autoproj/cli/reset.rb +7 -32
- data/lib/autoproj/cli/show.rb +219 -0
- data/lib/autoproj/cli/snapshot.rb +1 -1
- data/lib/autoproj/cli/status.rb +149 -0
- data/lib/autoproj/cli/switch_config.rb +28 -0
- data/lib/autoproj/cli/tag.rb +9 -35
- data/lib/autoproj/cli/test.rb +34 -55
- data/lib/autoproj/cli/update.rb +158 -0
- data/lib/autoproj/cli/versions.rb +32 -69
- data/lib/autoproj/configuration.rb +95 -34
- data/lib/autoproj/default.osdeps +25 -35
- data/lib/autoproj/environment.rb +85 -63
- data/lib/autoproj/exceptions.rb +50 -0
- data/lib/autoproj/gitorious.rb +11 -9
- data/lib/autoproj/manifest.rb +199 -231
- data/lib/autoproj/metapackage.rb +0 -8
- data/lib/autoproj/ops/build.rb +1 -17
- data/lib/autoproj/ops/configuration.rb +92 -90
- data/lib/autoproj/ops/import.rb +222 -0
- data/lib/autoproj/ops/loader.rb +18 -8
- data/lib/autoproj/ops/main_config_switcher.rb +45 -73
- data/lib/autoproj/ops/snapshot.rb +5 -10
- data/lib/autoproj/ops/tools.rb +10 -44
- data/lib/autoproj/options.rb +35 -6
- data/lib/autoproj/osdeps.rb +97 -68
- data/lib/autoproj/package_selection.rb +39 -20
- data/lib/autoproj/package_set.rb +26 -24
- data/lib/autoproj/reporter.rb +91 -0
- data/lib/autoproj/system.rb +50 -149
- data/lib/autoproj/variable_expansion.rb +32 -6
- data/lib/autoproj/vcs_definition.rb +57 -17
- data/lib/autoproj/version.rb +1 -1
- data/lib/autoproj/workspace.rb +550 -0
- data/test/ops/test_snapshot.rb +26 -0
- data/test/test_package.rb +30 -0
- data/test/test_vcs_definition.rb +46 -0
- metadata +55 -50
- data/bin/autolocate +0 -3
- data/bin/autoproj-bootstrap +0 -68
- data/bin/autoproj-cache +0 -18
- data/bin/autoproj-clean +0 -13
- data/bin/autoproj-commit +0 -10
- data/bin/autoproj-create-set +0 -118
- data/bin/autoproj-doc +0 -28
- data/bin/autoproj-envsh +0 -14
- data/bin/autoproj-list +0 -69
- data/bin/autoproj-locate +0 -85
- data/bin/autoproj-log +0 -5
- data/bin/autoproj-query +0 -82
- data/bin/autoproj-reset +0 -13
- data/bin/autoproj-show +0 -192
- data/bin/autoproj-snapshot +0 -27
- data/bin/autoproj-switch-config +0 -24
- data/bin/autoproj-tag +0 -13
- data/bin/autoproj-test +0 -31
- data/bin/autoproj-versions +0 -20
- data/bin/autoproj_stress_test +0 -40
- data/lib/autoproj/cmdline.rb +0 -1649
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'autoproj'
|
2
|
+
require 'autoproj/cli/base'
|
3
|
+
require 'autoproj/ops/main_config_switcher'
|
4
|
+
require 'autoproj/ops/configuration'
|
5
|
+
|
6
|
+
module Autoproj
|
7
|
+
module CLI
|
8
|
+
class SwitchConfig < Base
|
9
|
+
def run(args, options = Hash.new)
|
10
|
+
if Dir.pwd.start_with?(ws.remotes_dir) || Dir.pwd.start_with?(ws.config_dir)
|
11
|
+
raise ConfigError, "you cannot run autoproj switch-config from autoproj's configuration directory or one of its subdirectories"
|
12
|
+
end
|
13
|
+
|
14
|
+
# We must switch to the root dir first, as it is required by the
|
15
|
+
# configuration switch code. This is acceptable as long as we
|
16
|
+
# quit just after the switch
|
17
|
+
switcher = Ops::MainConfigSwitcher.new(ws)
|
18
|
+
if switcher.switch_config(*args)
|
19
|
+
manifest = Manifest.load(File.join(ws.config_dir, 'manifest'))
|
20
|
+
update = Ops::Configuration.new(ws, ws.loader)
|
21
|
+
update.update_configuration
|
22
|
+
ws.config.save
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
data/lib/autoproj/cli/tag.rb
CHANGED
@@ -1,38 +1,12 @@
|
|
1
|
-
require 'autoproj
|
1
|
+
require 'autoproj'
|
2
2
|
require 'autoproj/cli/versions'
|
3
|
+
require 'autoproj/ops/snapshot'
|
4
|
+
require 'autoproj/cli/base'
|
5
|
+
|
3
6
|
module Autoproj
|
4
7
|
module CLI
|
5
|
-
class Tag
|
6
|
-
|
7
|
-
|
8
|
-
attr_reader :manifest
|
9
|
-
|
10
|
-
def initialize(manifest)
|
11
|
-
@manifest = manifest
|
12
|
-
end
|
13
|
-
|
14
|
-
def parse_options(args)
|
15
|
-
options = Hash[package_sets: true, keep_going: false]
|
16
|
-
parser = OptionParser.new do |opt|
|
17
|
-
opt.on '--[no-]package-sets', 'commit the package set state as well (enabled by default)' do |flag|
|
18
|
-
options[:package_sets] = flag
|
19
|
-
end
|
20
|
-
opt.on '-k', '--keep-going', "ignore packages that can't be snapshotted (the default is to terminate with an error)" do
|
21
|
-
options[:keep_going] = true
|
22
|
-
end
|
23
|
-
opt.on '-m MESSAGE', '--message=MESSAGE', String, "the message to use for the new commit (defaults to mentioning the tag creation)" do |message|
|
24
|
-
options[:message] = message
|
25
|
-
end
|
26
|
-
end
|
27
|
-
common_options(parser)
|
28
|
-
remaining = parser.parse(args)
|
29
|
-
if remaining.size > 1
|
30
|
-
raise InvalidArguments, "expected only the tag name as argument"
|
31
|
-
end
|
32
|
-
return remaining.first, options
|
33
|
-
end
|
34
|
-
|
35
|
-
def run(tag_name, options)
|
8
|
+
class Tag < Base
|
9
|
+
def run(tag_name, *user_selection, options = Hash.new)
|
36
10
|
pkg = manifest.main_package_set.create_autobuild_package
|
37
11
|
importer = pkg.importer
|
38
12
|
if !importer || !importer.kind_of?(Autobuild::Git)
|
@@ -40,7 +14,7 @@ module Autoproj
|
|
40
14
|
end
|
41
15
|
|
42
16
|
versions_file = File.join(
|
43
|
-
OVERRIDES_DIR,
|
17
|
+
Workspace::OVERRIDES_DIR,
|
44
18
|
Versions::DEFAULT_VERSIONS_FILE_BASENAME)
|
45
19
|
|
46
20
|
if tag_name.nil?
|
@@ -65,9 +39,9 @@ module Autoproj
|
|
65
39
|
message = options[:message] ||
|
66
40
|
"autoproj created tag #{tag_name}"
|
67
41
|
commit_id = Ops::Snapshot.create_commit(pkg, versions_file, message) do |io|
|
68
|
-
versions = CLI::Versions.new(
|
42
|
+
versions = CLI::Versions.new(ws)
|
69
43
|
Autoproj.message "creating versions file, this may take a while"
|
70
|
-
versions.run(
|
44
|
+
versions.run(user_selection,
|
71
45
|
package_sets: options[:package_sets],
|
72
46
|
output_file: io.path,
|
73
47
|
replace: true,
|
data/lib/autoproj/cli/test.rb
CHANGED
@@ -1,67 +1,48 @@
|
|
1
|
-
require 'autoproj/
|
1
|
+
require 'autoproj/cli/inspection_tool'
|
2
2
|
|
3
3
|
module Autoproj
|
4
4
|
module CLI
|
5
|
-
class Test
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
modified_config = false
|
18
|
-
mode = nil
|
19
|
-
options = Hash.new
|
20
|
-
option_parser = OptionParser.new do |opt|
|
21
|
-
opt.on '--enable[=PACKAGE,PACKAGE]', Array, 'enable tests for all packages or for specific packages (does not run the tests)' do |packages|
|
22
|
-
if !packages
|
23
|
-
Autoproj.config.utility_enable_all('test')
|
24
|
-
else
|
25
|
-
Autoproj.config.utility_enable_for('test', *packages)
|
26
|
-
end
|
27
|
-
modified_config = true
|
28
|
-
end
|
29
|
-
opt.on '--disable[=PACKAGE,PACKAGE]', Array, 'disable tests for all packages or for specific packages (does not run the tests)' do |packages|
|
30
|
-
if !packages
|
31
|
-
Autoproj.config.utility_disable_all('test')
|
32
|
-
else
|
33
|
-
Autoproj.config.utility_disable_for('test', *packages)
|
34
|
-
end
|
35
|
-
modified_config = true
|
36
|
-
end
|
37
|
-
opt.on '--list', 'list the test availability and enabled/disabled state information' do
|
38
|
-
mode = 'list'
|
39
|
-
end
|
40
|
-
opt.on '--[no-]recursion', '(do not) run or list the tests of the dependencies of the packages given on the command line (the default is false)' do |flag|
|
41
|
-
options[:recursive] = flag
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
user_selection = option_parser.parse(ARGV)
|
46
|
-
if !mode && !(modified_config && user_selection.empty?)
|
47
|
-
mode = 'run'
|
5
|
+
class Test < InspectionTool
|
6
|
+
def enable(user_selection, options = Hash.new)
|
7
|
+
if user_selection.empty?
|
8
|
+
ws.load_config
|
9
|
+
ws.config.utility_enable_all('test')
|
10
|
+
else
|
11
|
+
initialize_and_load
|
12
|
+
selection, _ = finalize_setup(
|
13
|
+
user_selection,
|
14
|
+
recursive: options[:deps],
|
15
|
+
ignore_non_imported_packages: true)
|
16
|
+
ws.config.utility_enable('test', *selection)
|
48
17
|
end
|
18
|
+
ws.config.save
|
19
|
+
end
|
49
20
|
|
50
|
-
|
51
|
-
|
21
|
+
def disable(user_selection, options = Hash.new)
|
22
|
+
if user_selection.empty?
|
23
|
+
ws.load_config
|
24
|
+
ws.config.utility_disable_all('test')
|
25
|
+
else
|
26
|
+
initialize_and_load
|
27
|
+
selection, _ = finalize_setup(
|
28
|
+
user_selection,
|
29
|
+
recursive: options[:deps],
|
30
|
+
ignore_non_imported_packages: true)
|
31
|
+
ws.config.utility_disable('test', *selection)
|
52
32
|
end
|
53
|
-
|
33
|
+
ws.config.save
|
54
34
|
end
|
55
35
|
|
56
36
|
def list(user_selection, options = Hash.new)
|
57
|
-
|
37
|
+
initialize_and_load
|
38
|
+
resolved_selection, _ = finalize_setup(
|
58
39
|
user_selection,
|
59
|
-
recursive: options[:
|
40
|
+
recursive: options[:dep],
|
60
41
|
ignore_non_imported_packages: true)
|
61
42
|
|
62
43
|
lines = Array.new
|
63
44
|
resolved_selection.each do |pkg_name|
|
64
|
-
pkg = manifest.find_package(pkg_name).autobuild
|
45
|
+
pkg = ws.manifest.find_package(pkg_name).autobuild
|
65
46
|
lines << [pkg.name, pkg.test_utility.enabled?, pkg.test_utility.available?]
|
66
47
|
end
|
67
48
|
lines = lines.sort_by { |name, _| name }
|
@@ -74,11 +55,9 @@ module Autoproj
|
|
74
55
|
end
|
75
56
|
|
76
57
|
def run(user_selection, options = Hash.new)
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
ignore_non_imported_packages: true)
|
81
|
-
# This calls #prepare, which is required to run build_packages
|
58
|
+
initialize_and_load
|
59
|
+
packages, _ = finalize_setup(user_selection)
|
60
|
+
|
82
61
|
packages.each do |pkg|
|
83
62
|
Autobuild::Package[pkg].disable_phases('import', 'prepare', 'install')
|
84
63
|
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
require 'autoproj/cli'
|
2
|
+
require 'autoproj/cli/base'
|
3
|
+
require 'autoproj/ops/import'
|
4
|
+
|
5
|
+
module Autoproj
|
6
|
+
module CLI
|
7
|
+
class Update < Base
|
8
|
+
def validate_options(packages, options)
|
9
|
+
packages, options = super
|
10
|
+
|
11
|
+
if !options[:osdeps]
|
12
|
+
options[:osdeps_mode] = Array.new
|
13
|
+
end
|
14
|
+
|
15
|
+
if from = options[:from]
|
16
|
+
options[:from] = Autoproj::InstallationManifest.from_root(options[:from])
|
17
|
+
end
|
18
|
+
ws.osdeps.filter_uptodate_packages = options[:osdeps_filter_uptodate]
|
19
|
+
|
20
|
+
if options[:aup] && !options[:all] && packages.empty?
|
21
|
+
packages = ['.']
|
22
|
+
end
|
23
|
+
|
24
|
+
if options[:autoproj].nil?
|
25
|
+
options[:autoproj] = packages.empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
return packages, options
|
29
|
+
end
|
30
|
+
|
31
|
+
def run(selected_packages, options)
|
32
|
+
selected_packages, config_selected =
|
33
|
+
normalize_command_line_package_selection(selected_packages)
|
34
|
+
|
35
|
+
if options[:config].nil?
|
36
|
+
options[:config] = selected_packages.empty? || config_selected
|
37
|
+
end
|
38
|
+
|
39
|
+
ws.setup
|
40
|
+
ws.install_ruby_shims
|
41
|
+
|
42
|
+
# Do that AFTER we have properly setup ws.osdeps as to avoid
|
43
|
+
# unnecessarily redetecting the operating system
|
44
|
+
if options[:osdeps]
|
45
|
+
ws.config.set(
|
46
|
+
'operating_system',
|
47
|
+
Autoproj::OSDependencies.operating_system(:force => true),
|
48
|
+
true)
|
49
|
+
end
|
50
|
+
|
51
|
+
if options[:autoproj]
|
52
|
+
ws.update_autoproj
|
53
|
+
end
|
54
|
+
|
55
|
+
ws.load_package_sets(
|
56
|
+
only_local: options[:local],
|
57
|
+
checkout_only: !options[:config] || options[:checkout_only],
|
58
|
+
ignore_errors: options[:keep_going])
|
59
|
+
if selected_packages.empty? && config_selected
|
60
|
+
return
|
61
|
+
end
|
62
|
+
|
63
|
+
ws.setup_all_package_directories
|
64
|
+
# Call resolve_user_selection once to auto-add packages
|
65
|
+
resolve_user_selection(selected_packages)
|
66
|
+
# Now we can finalize and re-resolve the selection since the
|
67
|
+
# overrides.rb files might have changed it
|
68
|
+
ws.finalize_package_setup
|
69
|
+
# Finally, filter out exclusions
|
70
|
+
resolved_selected_packages, _ =
|
71
|
+
resolve_user_selection(selected_packages)
|
72
|
+
validate_user_selection(selected_packages, resolved_selected_packages)
|
73
|
+
|
74
|
+
if !selected_packages.empty?
|
75
|
+
command_line_selection = resolved_selected_packages.dup
|
76
|
+
else
|
77
|
+
command_line_selection = Array.new
|
78
|
+
end
|
79
|
+
selected_packages = resolved_selected_packages
|
80
|
+
|
81
|
+
if other_root = options[:from]
|
82
|
+
setup_update_from(other_root)
|
83
|
+
end
|
84
|
+
|
85
|
+
osdeps_options = Hash[install_only: options[:checkout_only]]
|
86
|
+
if options[:osdeps_mode]
|
87
|
+
osdeps_options[:osdeps_mode] = options[:osdeps_mode]
|
88
|
+
end
|
89
|
+
|
90
|
+
if options[:osdeps]
|
91
|
+
# Install the osdeps for the version control
|
92
|
+
vcs_to_install = Set.new
|
93
|
+
selected_packages.each_source_package_name do |pkg_name|
|
94
|
+
if pkg = ws.manifest.find_package(pkg_name)
|
95
|
+
if pkg.vcs
|
96
|
+
vcs_to_install << pkg.vcs.type
|
97
|
+
end
|
98
|
+
else
|
99
|
+
raise "cannot find package #{pkg_name}"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
ws.osdeps.install(vcs_to_install, osdeps_options)
|
103
|
+
end
|
104
|
+
|
105
|
+
ops = Autoproj::Ops::Import.new(ws)
|
106
|
+
source_packages, osdep_packages =
|
107
|
+
ops.import_packages(selected_packages,
|
108
|
+
checkout_only: options[:checkout_only],
|
109
|
+
only_local: options[:local],
|
110
|
+
reset: options[:reset],
|
111
|
+
recursive: options[:deps],
|
112
|
+
ignore_errors: options[:keep_going])
|
113
|
+
|
114
|
+
ws.finalize_setup
|
115
|
+
load_all_available_package_manifests
|
116
|
+
ws.export_installation_manifest
|
117
|
+
|
118
|
+
if options[:osdeps] && !osdep_packages.empty?
|
119
|
+
ws.osdeps.install(osdep_packages, osdeps_options)
|
120
|
+
end
|
121
|
+
|
122
|
+
ws.env.export_env_sh
|
123
|
+
Autoproj.message "autoproj: updated #{ws.root_dir}/#{Autoproj::ENV_FILENAME}", :green
|
124
|
+
|
125
|
+
return command_line_selection, source_packages, osdep_packages
|
126
|
+
end
|
127
|
+
|
128
|
+
def load_all_available_package_manifests
|
129
|
+
# Load the manifest for packages that are already present on the
|
130
|
+
# file system
|
131
|
+
ws.manifest.packages.each_value do |pkg|
|
132
|
+
if File.directory?(pkg.autobuild.srcdir)
|
133
|
+
begin
|
134
|
+
ws.manifest.load_package_manifest(pkg.autobuild.name)
|
135
|
+
rescue Interrupt
|
136
|
+
raise
|
137
|
+
rescue Exception => e
|
138
|
+
Autoproj.warn "cannot load package manifest for #{pkg.autobuild.name}: #{e.message}"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def setup_update_from(other_root)
|
145
|
+
manifest.each_autobuild_package do |pkg|
|
146
|
+
if pkg.importer.respond_to?(:pick_from_autoproj_root)
|
147
|
+
if !pkg.importer.pick_from_autoproj_root(pkg, other_root)
|
148
|
+
pkg.update = false
|
149
|
+
end
|
150
|
+
else
|
151
|
+
pkg.update = false
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
@@ -1,91 +1,54 @@
|
|
1
1
|
require 'autoproj'
|
2
|
-
require 'autoproj/
|
2
|
+
require 'autoproj/cli/inspection_tool'
|
3
3
|
require 'autoproj/ops/tools'
|
4
4
|
require 'autoproj/ops/snapshot'
|
5
5
|
|
6
6
|
module Autoproj
|
7
7
|
module CLI
|
8
|
-
class Versions
|
9
|
-
include Ops::Tools
|
10
|
-
|
8
|
+
class Versions < InspectionTool
|
11
9
|
DEFAULT_VERSIONS_FILE_BASENAME = Ops::Snapshot::DEFAULT_VERSIONS_FILE_BASENAME
|
12
10
|
|
13
11
|
def default_versions_file
|
14
12
|
File.join( Autoproj.overrides_dir, DEFAULT_VERSIONS_FILE_BASENAME )
|
15
13
|
end
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
packages = CmdLine.import_packages(resolved_selection)
|
29
|
-
|
30
|
-
# Remove non-existing packages
|
31
|
-
packages.each do |pkg|
|
32
|
-
if !File.directory?(manifest.package(pkg).autobuild.srcdir)
|
33
|
-
raise ConfigError, "cannot commit #{pkg} as it is not checked out"
|
34
|
-
end
|
15
|
+
def validate_options(packages, options = Hash.new)
|
16
|
+
packages, options = super
|
17
|
+
if options.has_key?(:save)
|
18
|
+
options[:save] = case options[:save]
|
19
|
+
when '.'
|
20
|
+
nil
|
21
|
+
when true
|
22
|
+
default_versions_file
|
23
|
+
else
|
24
|
+
options[:save].to_str
|
25
|
+
end
|
35
26
|
end
|
36
|
-
packages
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
def parse_options(args)
|
41
|
-
options = Hash.new
|
42
|
-
parser = OptionParser.new do |opt|
|
43
|
-
opt.on '--[no-]package-sets', 'commit the package set state as well (default if no packages are selected)' do |flag|
|
44
|
-
options[:package_sets] = flag
|
45
|
-
end
|
46
|
-
opt.on '--replace', String, 'if the file given to --save exists, replace it instead of updating it' do
|
47
|
-
options[:replace] = true
|
48
|
-
end
|
49
|
-
opt.on '-k', '--keep-going', "ignore packages that can't be snapshotted (the default is to terminate with an error)" do
|
50
|
-
options[:keep_going] = true
|
51
|
-
end
|
52
|
-
opt.on '--save[=FILE]', String, "the file into which the versions should be saved (if no file is given, defaults to #{default_versions_file})" do |file|
|
53
|
-
options[:output_file] =
|
54
|
-
if file == '-'
|
55
|
-
nil
|
56
|
-
elsif !file
|
57
|
-
default_versions_file
|
58
|
-
else
|
59
|
-
file
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
common_options(parser)
|
64
|
-
remaining = parser.parse(args)
|
65
|
-
return remaining, options
|
27
|
+
return packages, options
|
66
28
|
end
|
67
29
|
|
68
30
|
def run(user_selection, options)
|
69
|
-
|
70
|
-
|
71
|
-
|
31
|
+
initialize_and_load
|
32
|
+
packages, *, config_selected =
|
33
|
+
finalize_setup(user_selection,
|
34
|
+
ignore_non_imported_packages: true)
|
35
|
+
|
36
|
+
if (config_selected || user_selection.empty?) && (options[:package_sets] != false)
|
37
|
+
options[:package_sets] = true
|
72
38
|
end
|
73
39
|
|
74
|
-
|
75
|
-
packages = resolve_selection user_selection
|
76
|
-
ops = Ops::Snapshot.new(manifest, keep_going: options[:keep_going])
|
40
|
+
ops = Ops::Snapshot.new(ws.manifest, keep_going: options[:keep_going])
|
77
41
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
end
|
42
|
+
versions = Array.new
|
43
|
+
if options[:package_sets]
|
44
|
+
versions += ops.snapshot_package_sets
|
45
|
+
end
|
46
|
+
versions += ops.snapshot_packages(packages)
|
47
|
+
if output_file = options[:save]
|
48
|
+
ops.save_versions(versions, output_file, replace: options[:replace])
|
49
|
+
else
|
50
|
+
versions = ops.sort_versions(versions)
|
51
|
+
puts YAML.dump(versions)
|
89
52
|
end
|
90
53
|
end
|
91
54
|
end
|