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"