lib/u3d/commands.rb in u3d-1.2.1 vs lib/u3d/commands.rb in u3d-1.2.2
- old
+ new
@@ -150,20 +150,19 @@
return
end
definition = UnityVersionDefinition.new(version, os, cache_versions)
unity = check_unity_presence(version: version)
- packages = options[:packages] || ['Unity']
+ packages = verify_package_names(options[:packages], definition) || ['Unity']
+
begin
packages = enforce_setup_coherence(packages, options, unity, definition)
rescue InstallationSetupError
return
end
- verify_package_names(definition, packages)
-
get_administrative_privileges(options) if options[:install]
files = Downloader.fetch_modules(definition, packages: packages, download: options[:download])
return unless options[:install]
@@ -272,13 +271,15 @@
cache_os = cache[os.id2name] || {}
cache_versions = cache_os['versions'] || {}
cache_versions
end
- def verify_package_names(definition, packages)
- packages.each do |package|
- UI.user_error! "package '#{package}' doesn't exist" unless definition.available_package? package
+ def verify_package_names(packages, definition)
+ unless packages.nil?
+ invalid_packages = packages.reject { |package| definition.available_package? package }
+ raise ArgumentError, "Package(s) '#{invalid_packages.join(',')}' are not known. Use #{definition.available_packages.join(',')}" unless invalid_packages.empty?
end
+ packages
end
def specified_or_current_project_version(version)
unless version # no version specified, use the one from the current unity project if any
UI.message "No unity version specified. If the current directory is a Unity project, we try to install the one it requires"