require 'roll/config' require 'roll/library' require 'roll/kernel' # require last module Roll VERSION = "1.2.0" # TODO: make verison reference dynamic # Get environment. def self.env(name=nil) if name env = Environment.new(name) else env = Environment.new end env end # Change current environment. def self.use(name) Environment.save(name) end # Return Array of environment names. def self.list Environment.list end # def self.index(name=nil) #if name # env = Environment.new(name) #else # env = Environment.new #end env(name).index.to_s end # Synchronize an environment by +name+. If a +name+ # is not given the current environment is synchronized. def self.sync(name=nil) env = env(name) env.sync env.save end # Add path to current environment. def self.in(path, depth=3) env = Environment.new lookup = env.lookup lookup.append(path, depth) lookup.save env.sync env.save return path, lookup.file end # Remove path from current environment. def self.out(path) env = Environment.new lookup = env.lookup lookup.delete(path) lookup.save env.sync env.save return path, lookup.file end # Go thru each roll lib and collect bin paths. def self.path binpaths = [] Library.list.each do |name| lib = Library[name] if lib.bindir? binpaths << lib.bindir end end binpaths end # Verify dependencies are in current environment. #-- # TODO: Instead of Dir.pwd, lookup project root. #++ def self.verify(name=nil) if name Library.open(name).verify else Library.new(Dir.pwd).verify end end # VersionError is raised when a requested version cannot be found. class VersionError < ::RangeError # :nodoc: end # VersionConflict is raised when selecting another version # of a library when a previous version has already been selected. class VersionConflict < ::LoadError # :nodoc: end end