Class | Bio::Shell::Setup |
In: |
lib/bio/shell/setup.rb
|
Parent: | Object |
# File lib/bio/shell/setup.rb, line 15 15: def initialize 16: check_ruby_version 17: 18: # command line options 19: getoptlong 20: 21: # setup working directory 22: savedir = setup_savedir 23: 24: # load configuration and plugins 25: Bio::Shell.configure(savedir) 26: 27: # set default to irb mode 28: Bio::Shell.cache[:mode] = @mode || :irb 29: 30: case Bio::Shell.cache[:mode] 31: when :web 32: # setup rails server 33: Bio::Shell::Web.new 34: when :irb 35: # setup irb server 36: Bio::Shell::Irb.new 37: when :script 38: # run bioruby shell script 39: Bio::Shell::Script.new(@script) 40: end 41: end
# File lib/bio/shell/setup.rb, line 43 43: def check_ruby_version 44: if RUBY_VERSION < "1.8.2" 45: raise "BioRuby shell runs on Ruby version >= 1.8.2" 46: end 47: end
command line argument (working directory or bioruby shell script file)
# File lib/bio/shell/setup.rb, line 50 50: def getoptlong 51: opts = GetoptLong.new 52: opts.set_options( 53: [ '--rails', '-r', GetoptLong::NO_ARGUMENT ], 54: [ '--web', '-w', GetoptLong::NO_ARGUMENT ], 55: [ '--console', '-c', GetoptLong::NO_ARGUMENT ], 56: [ '--irb', '-i', GetoptLong::NO_ARGUMENT ] 57: ) 58: opts.each_option do |opt, arg| 59: case opt 60: when /--rails/, /--web/ 61: @mode = :web 62: when /--console/, /--irb/ 63: @mode = :irb 64: end 65: end 66: end
# File lib/bio/shell/setup.rb, line 105 105: def install_savedir(savedir) 106: FileUtils.makedirs(savedir) 107: end
# File lib/bio/shell/setup.rb, line 68 68: def setup_savedir 69: arg = ARGV.shift 70: 71: # Options after the '--' argument are not parsed by GetoptLong and 72: # are passed to irb or rails. This hack preserve the first option 73: # when working directory of the project is not given. 74: if arg and arg[/^-/] 75: ARGV.unshift arg 76: arg = nil 77: end 78: 79: if arg.nil? 80: # run in the current directory 81: if File.exist?(Bio::Shell::Core::HISTORY) 82: savedir = Dir.pwd 83: else 84: savedir = File.join(ENV['HOME'].to_s, ".bioruby") 85: install_savedir(savedir) 86: end 87: elsif File.file?(arg) 88: # run file as a bioruby shell script 89: savedir = File.join(File.dirname(arg), "..") 90: @script = arg 91: @mode = :script 92: else 93: # run in new or existing directory 94: if arg[/^#{File::SEPARATOR}/] 95: savedir = arg 96: else 97: savedir = File.join(Dir.pwd, arg) 98: end 99: install_savedir(savedir) 100: end 101: 102: return savedir 103: end