Sha256: 4355790da104df082c7571af1adb723001e3f060af26acaa36c38d33a8bb0603

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

require "rbundle/version"
require "yaml"

class RBundler
  def self.bundle
    install_installer
    self.read_requirements.each {|d| install(d)}
  end

  def self.read_requirements
    dependencies_definitions = "#{Dir.pwd}/dependencies.txt"
    puts "Reading Dependencies to install from #{Dir.pwd}/dependencies.txt"
    YAML.load(File.open(dependencies_definitions))
  end

  def self.command_inspector(exit_code)
    if(exit_code != 0) 
      puts("Installation failed")
      exit(exit_code)
    end
  end

  def self.install_installer
    puts "Installing devtools"
    command = %{
      R --vanilla --slave -e "if (! ('devtools' %in% installed.packages()[,'Package'])) install.packages(pkgs='devtools', repos=c('https://cloud.r-project.org'))"
    }
    puts "Executing #{command}"
    `#{command}`
    command_inspector($?.exitstatus)
  end

  def self.install(dependency)
    puts "Installing #{dependency['package']}"
    command = %{
     R --slave --vanilla -e "options(warn=2); library(devtools); if ((!'#{dependency['package']}' %in% installed.packages()[,'Package']) || packageVersion('#{dependency['package']}') < '#{dependency['version']}') install_version('#{dependency['package']}', version='#{dependency['version']}', repos=c('https://cloud.r-project.org'))"
    }
    puts "Executing #{command}"
    `#{command}`
    command_inspector($?.exitstatus)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rbundle-0.2.1 lib/rbundle.rb