lib/chronicle/etl/cli/plugins.rb in chronicle-etl-0.4.4 vs lib/chronicle/etl/cli/plugins.rb in chronicle-etl-0.5.0

- old
+ new

@@ -13,18 +13,28 @@ desc "install", "Install a plugin" def install(*plugins) cli_fail(message: "Please specify a plugin to install") unless plugins.any? - spinner = TTY::Spinner.new("[:spinner] Installing #{plugins.join(", ")}...", format: :dots_2) + installed, not_installed = plugins.partition do |plugin| + Chronicle::ETL::Registry::PluginRegistry.installed?(plugin) + end + + puts "Already installed: #{installed.join(", ")}" if installed.any? + cli_exit unless not_installed.any? + + spinner = TTY::Spinner.new("[:spinner] Installing #{not_installed.join(", ")}...", format: :dots_2) spinner.auto_spin - plugins.each do |plugin| + + not_installed.each do |plugin| spinner.update(title: "Installing #{plugin}") Chronicle::ETL::Registry::PluginRegistry.install(plugin) + rescue Chronicle::ETL::PluginError => e spinner.error("Error".red) cli_fail(message: "Plugin '#{plugin}' could not be installed", exception: e) end + spinner.success("(#{'successful'.green})") end desc "uninstall", "Unintall a plugin" def uninstall(name)