require 'thor' require 'thug/loader' require 'thug/utils' require 'thug/http_client' require 'thug/installer' module Thug class Cli < Thor default_task :list desc 'thug list', 'lists system dependencies in current project' def list() # detect gem file and create/update gem .lock file gem_detector = Thug::GemDetector.new unless gem_detector.has_gem? raise "No Gemfile was found in the current directory" end # list gems in current project current_gems = gem_detector.list_gems # detect current os, platform and package manager platform_detector = Thug::PlatformDetector.new platform = platform_detector.get_platform os = platform_detector.get_os # check internet utils = Thug::Utils.new if utils.internet? # if connected, request system dependencies client = Thug::HttpClient.new dependencies = client.get_dependencies platform, current_gems else # if not, get system dependencies from local file end if !dependencies.empty? puts "The following system packages are required by your project." puts dependencies else puts "No system packages are needed." end rescue => ex $stderr.puts ex.message end desc 'thug install', 'lists system dependencies in current project and installs them via package manager' def install() # detect gem file and create/update gem .lock file gem_detector = Thug::GemDetector.new unless gem_detector.has_gem? raise "No Gemfile was found in the current directory" end # list gems in current project current_gems = gem_detector.list_gems # detect current os, platform and package manager platform_detector = Thug::PlatformDetector.new platform = platform_detector.get_platform os = platform_detector.get_os # check internet utils = Thug::Utils.new if utils.internet? # if connected, request system dependencies client = Thug::HttpClient.new dependencies = client.get_dependencies platform, current_gems else # if not, get system dependencies from local file end if !dependencies.empty? puts "The following system packages are required by your project." puts dependencies else puts "No system packages are needed." end # run install command to install dependencies pkg_manager = platform_detector.get_package_manager platform installer = Thug::Installer.new puts "installing dependencies via #{pkg_manager}" installer.install_dependencies(pkg_manager, dependencies) rescue => ex $stderr.puts ex.message end end end