class AutoGemsets::Application
Attributes
args[R]
command[R]
options[R]
Public Class Methods
new(output = $stdout, input = $stdin, args = Array.try_convert(ARGV))
click to toggle source
# File lib/auto-gemsets/application.rb, line 20 def initialize(output = $stdout, input = $stdin, args = Array.try_convert(ARGV)) @output = output @input = input @args = args @command = @args.empty? ? :current : @args.shift.to_sym unless @args.first =~ /^-/ parse_options end
Public Instance Methods
create(gemset)
click to toggle source
# File lib/auto-gemsets/application.rb, line 53 def create(gemset) touch(gemset) end
current()
click to toggle source
# File lib/auto-gemsets/application.rb, line 28 def current gemset = "-> #{ENV['GEMSET']}"; gemset = "#{gemset}*" if ENV['GEMSET'] == default_gemset @output.puts gemset end
edit()
click to toggle source
# File lib/auto-gemsets/application.rb, line 114 def edit raise "You must set $EDITOR or $TERM_EDITOR to edit Gemfiles" unless ENV['EDITOR'] || ENV['TERM_EDITOR'] %x{#{ENV['EDITOR'] || ENV['TERM_EDITOR']} #{ENV['GEMFILE']}} if File.exists ENV['GEMFILE'] end
init()
click to toggle source
# File lib/auto-gemsets/application.rb, line 119 def init if File.exists? script_file @output.puts "auto-gemsets is already installed!" confirm("Do you wish overwrite this installation?", { accept: -> { install_auto_gemsets }, deny: -> { @output.puts "Existing installation preserved." } }) else install_auto_gemsets end end
list()
click to toggle source
# File lib/auto-gemsets/application.rb, line 43 def list ls end
ls()
click to toggle source
# File lib/auto-gemsets/application.rb, line 38 def ls gemsets = Dir.glob(File.join(ENV['HOME'], '.gemsets', '*')).map { |d| display_gemset d } @output.puts gemsets.join "\n" end
mv(gemset, new_gemset)
click to toggle source
# File lib/auto-gemsets/application.rb, line 57 def mv(gemset, new_gemset) if !File.exists?(gemset_path(new_gemset)) && FileUtils.mv(gemset_path(gemset), gemset_path(new_gemset)) @output.puts "#{gemset} renamed to #{new_gemset}" else @output.puts "#{new_gemset} already exists!" confirm("Do you really wish to replace #{new_gemset} with #{gemset}?", { accept: -> { if FileUtils.rm_rf(gemset_path(new_gemset)) && FileUtils.mv(gemset_path(gemset), gemset_path(new_gemset)) @output.puts "#{gemset} renamed to #{new_gemset}" end }, deny: -> { @output.puts "No gemsets were harmed." } }) end end
open(gemset = nil)
click to toggle source
# File lib/auto-gemsets/application.rb, line 96 def open(gemset = nil) command = case when AutoGemsets::on_OSX? 'open' when AutoGemsets::on_linux? 'xdg-open' when AutoGemsets::on_windows? 'explorer' end if gemset %x{#{command} #{gemset_path(gemset)}} if File.exists?(gemset_path(gemset)) @output.puts "No gemset named #{gemset}!" unless File.exists?(gemset_path(gemset)) else %x{#{command} #{AutoGemsets::GEMSET_ROOT}} end end
remove(gemset)
click to toggle source
# File lib/auto-gemsets/application.rb, line 92 def remove(gemset) rm(gemset) end
rename(gemset, new_gemset)
click to toggle source
# File lib/auto-gemsets/application.rb, line 75 def rename(gemset, new_gemset) mv(gemset, new_gemset) end
rm(gemset)
click to toggle source
# File lib/auto-gemsets/application.rb, line 79 def rm(gemset) confirm("Are you sure you wish to delete the #{gemset} gemset?", { accept: -> { if File.exists?(gemset_path(gemset)) && FileUtils.rm_rf(gemset_path(gemset)) @output.puts "#{gemset} gemset removed!" end }, deny: -> { @output.puts "No gemsets were harmed." } }) end
run()
click to toggle source
# File lib/auto-gemsets/application.rb, line 34 def run self.send @command, *@args end
touch(gemset)
click to toggle source
# File lib/auto-gemsets/application.rb, line 47 def touch(gemset) if !File.exists?(gemset_path(gemset)) && FileUtils.mkdir_p(gemset_path(gemset)) @output.puts "#{gemset} gemset created" end end
Private Instance Methods
confirm(question, callbacks = {})
click to toggle source
# File lib/auto-gemsets/application.rb, line 191 def confirm(question, callbacks = {}) settings = { accept: -> { nil }, deny: -> { nil } }.merge! callbacks @output.puts "#{question} y/n" @input.gets =~ /^y/i ? settings[:accept].call : settings[:deny].call end
create_script(script)
click to toggle source
# File lib/auto-gemsets/application.rb, line 209 def create_script(script) FileUtils.mkdir_p(AutoGemsets::INSTALL_ROOT) unless File.exists? AutoGemsets::INSTALL_ROOT FileUtils.cp(File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', script), AutoGemsets::INSTALL_ROOT) end
default_gems_file()
click to toggle source
# File lib/auto-gemsets/application.rb, line 205 def default_gems_file File.join(AutoGemsets::INSTALL_ROOT, "default-gems.sh") end
default_gemset()
click to toggle source
# File lib/auto-gemsets/application.rb, line 175 def default_gemset File.basename(ENV['DEFAULT_GEMSET']) end
display_gemset(gemset_dir)
click to toggle source
# File lib/auto-gemsets/application.rb, line 179 def display_gemset(gemset_dir) case gemset = File.basename(gemset_dir) when default_gemset gemset = " #{gemset}*" when ENV['GEMSET'] gemset = "-> #{gemset}" else gemset = " #{gemset}" end gemset end
gemset_path(gemset)
click to toggle source
# File lib/auto-gemsets/application.rb, line 171 def gemset_path(gemset) File.join(AutoGemsets::GEMSET_ROOT, gemset) end
help()
click to toggle source
# File lib/auto-gemsets/application.rb, line 163 def help @output.puts AutoGemsets::HELP end
install_auto_gemsets()
click to toggle source
# File lib/auto-gemsets/application.rb, line 136 def install_auto_gemsets create_script 'auto-gemsets.sh' create_script 'default-gems.sh' config_file = File.join(ENV['HOME'], '.auto-gemsets') default_gemset_dir = File.join(AutoGemsets::GEMSET_ROOT, 'default') FileUtils.cp(File.join(AutoGemsets::ROOT, 'lib', 'auto-gemsets', '.auto-gemsets'), config_file) unless File.exists? config_file FileUtils.mkdir_p(AutoGemsets::GEMSET_ROOT) unless File.exists?(AutoGemsets::GEMSET_ROOT) FileUtils.mkdir_p(default_gemset_dir) unless File.exists?(default_gemset_dir) end
parse_options()
click to toggle source
# File lib/auto-gemsets/application.rb, line 146 def parse_options @options = {} OptionParser.new do |opts| opts.on("-v", "--version", "Version info") do @options[:version] = true @command = :version end opts.on('-h', '--help', 'Display help') do @options[:help] = true @command = :help end end.parse! @args.reject! { |a| a =~ /^-/ } end
script_file()
click to toggle source
# File lib/auto-gemsets/application.rb, line 201 def script_file File.join(AutoGemsets::INSTALL_ROOT, "auto-gemsets.sh") end
version()
click to toggle source
# File lib/auto-gemsets/application.rb, line 167 def version @output.puts "auto-gemsets #{AutoGemsets::VERSION}" end