require 'bundler' require 'colorize'
namespace :deplist do
desc 'List system dependencies' task show: :environment do # get a list of project gems gems = Bundler.load.specs.map(&:name) server = GemListServer.new(gems) packages = server.dependencies unknown_gems = server.unknown_gems if unknown_gems.any? puts "I don't know this gems can you tell"\ 'me what dependencies they need if you know? (y/n)'.yellow puts unknown_gems.join(', ').red if user_input puts 'To abort type exit.'.yellow puts 'To add multiple dependencies use e.g. pkg1,pkg2,...,pkgn.'.yellow unknown_gems.each do |unknown_gem| print "What about (#{unknown_gem}): ".yellow STDOUT.flush dependencies = STDIN.gets.chomp.split(/[\s,]+/) break if dependencies == ['exit'] next if dependencies.empty? GemListServer.create(unknown_gem, dependencies) packages = packages.concat(dependencies) end end end abort 'Life is good ;D'.green if packages.empty? puts 'Your system needs to have these packages'\ ' to be able to run your Rails project:'.yellow puts packages.join(', ').red puts 'Do you want to install missing dependencies? (y/n)'.blue begin if user_input status = Installer.install(packages) if status[:success].present? puts 'I have installed these packages for you :)'.yellow puts status[:success].join(', ').green puts end if status[:fail].present? puts "I'm sorry, I can't install these packages :(".yellow abort status[:fail].join(', ').red end abort 'Life is better now, Goodbye my friend ;D'.green end rescue UnknownOS puts 'Unknown OS'.red end end def user_input STDOUT.flush input = STDIN.gets.chomp case input when 'Y', 'y', "\r" return true else puts 'Goodbye my friend' return false end end
end