class Mineshaft::Environment
Attributes
dir[R]
Public Class Methods
new(dir, options)
click to toggle source
# File lib/mineshaft/environment.rb, line 17 def initialize(dir, options) @dir = options[:global] ? File.join(Dir.home, ".mineshaft", dir) : dir @options = options @version = @options[:version] ? @options[:version] : Mineshaft::Constants::RUBY_VERSION_STABLE end
Public Instance Methods
create()
click to toggle source
# File lib/mineshaft/environment.rb, line 23 def create FileUtils::mkdir_p(@dir) install_ruby if @options[:global] set_new_global `gem install mineshaft` Mineshaft.reload else create_activate_script end end
use()
click to toggle source
# File lib/mineshaft/environment.rb, line 35 def use set_new_global puts "Now using the environment at: #@dir" end
Private Instance Methods
build_version_url()
click to toggle source
# File lib/mineshaft/environment.rb, line 42 def build_version_url "https://cache.ruby-lang.org/pub/ruby/#{@version[0..2]}/ruby-#{@version}.tar.gz" end
create_activate_script()
click to toggle source
# File lib/mineshaft/environment.rb, line 59 def create_activate_script open("#{@dir}/bin/activate.sh", 'w') do |f| f << "#!/bin/bash\n" f << "#\n" f << "# activate.sh\n" f << "\n" f << "OLDPS1=$PS1\n" f << "ENV=#{@dir}\n" f << 'PS1="($ENV)${OLDPS1}"' f << "\n" f << "\n" f << "OLDPATH=$PATH\n" f << "PATH=#{File.expand_path("#{@dir}/bin")}:$OLDPATH\n" f << "\n" f << "deactivate() {\n" f << " PS1=$OLDPS1\n" f << " PATH=$OLDPATH\n" f << "}\n\n" end end
install_mineshaft()
click to toggle source
# File lib/mineshaft/environment.rb, line 56 def install_mineshaft end
install_ruby()
click to toggle source
# File lib/mineshaft/environment.rb, line 46 def install_ruby Mineshaft::Installer.new do |config| config.url = build_version_url config.directory = @dir config.version = @version config.options = @options config.global = @options[:global] end.run end
set_new_global()
click to toggle source
# File lib/mineshaft/environment.rb, line 80 def set_new_global if Dir["#{@dir}/bin/*"].length == 0 puts "#@dir is not a valid environment - exiting" exit end FileUtils.mkdir_p "#{Dir.home}/.mineshaft/bin" FileUtils.rm Dir.glob("#{Dir.home}/.mineshaft/bin/*") if File.readlines("#{Dir.home}/.bash_profile").grep(/mineshaft/).length == 0 open("#{Dir.home}/.bash_profile", 'a') do |f| f.puts("PATH=#{Dir.home}/.mineshaft/bin:$PATH") end end Dir["#{@dir}/bin/*"].each do |binary_absolute| binary = binary_absolute.split("/").last FileUtils::ln_s binary_absolute, "#{Dir.home}/.mineshaft/bin/#{binary}" end end