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
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