class MrbgemList
Public Class Methods
new(config)
click to toggle source
# File lib/mgem.rb, line 88 def initialize(config) @config = config @gems = get_gems(@config[:mgem_list]) end
Public Instance Methods
activate(gem_name)
click to toggle source
# File lib/mgem.rb, line 111 def activate(gem_name) if check_gem(gem_name) gems = active + @gems.select {|g| g.name == gem_name} save_active_gems(gems) puts "'#{gem_name}' activated!" else puts "'#{gem_name}' NOT activated!" end end
active()
click to toggle source
# File lib/mgem.rb, line 103 def active f = File.open(@config[:mgem_active], 'r+') active_gems = f.each_line.map {|g| File.basename(g.chomp)} @gems.select {|g| active_gems.include? g.name} end
deactivate(gem_name)
click to toggle source
# File lib/mgem.rb, line 121 def deactivate(gem_name) if check_gem(gem_name) gems = active.reject {|g| g.name == gem_name} save_active_gems(gems) puts "'#{gem_name}' deactivated!" else puts "'#{gem_name}' NOT deactivated!" end end
each(&block)
click to toggle source
# File lib/mgem.rb, line 93 def each(&block) @gems.each {|gem| block.call(gem)} end
search(pattern, *fields)
click to toggle source
# File lib/mgem.rb, line 97 def search(pattern, *fields) @gems.select do |mrbgem| mrbgem.search pattern, fields end end
size()
click to toggle source
# File lib/mgem.rb, line 109 def size; @gems.size; end
update!()
click to toggle source
# File lib/mgem.rb, line 131 def update! temp_stderr, $stderr = $stderr, StringIO.new git_dir = [@config[:mgem_list], '.git'].join File::SEPARATOR dir_arg = "--git-dir=#{git_dir} --work-tree=#{@config[:mgem_list]} " current_hash = `git #{dir_arg} log -n 1 --pretty=format:%H` `git #{dir_arg} pull` result = `git #{dir_arg} log #{current_hash}..HEAD --pretty=format:''` count = result.lines.count ensure $stderr = temp_stderr end
Private Instance Methods
check_gem(gem_name)
click to toggle source
# File lib/mgem.rb, line 145 def check_gem(gem_name) if gem_name == "" or gem_name.nil? puts "Error: Empty GEM name!" false elsif not @gems.find_index {|g| g.name == gem_name} puts "Error: GEM doesn't exist!" false else true end end
get_gems(gem_dir)
click to toggle source
# File lib/mgem.rb, line 165 def get_gems(gem_dir) gems = [] Dir.foreach(gem_dir) do |filename| next unless filename =~ /\.gem$/ yaml_gems = YAML.load_file([gem_dir, filename].join(File::SEPARATOR)) gems << MrbgemData.new(yaml_gems) end gems end
save_active_gems(active_gem_list)
click to toggle source
# File lib/mgem.rb, line 157 def save_active_gems(active_gem_list) File.open(@config[:mgem_active], 'w+') do |f| active_gem_list.uniq.each do |mrbgem| f.puts mrbgem.name end end end