class Alias

Public Class Methods

all() click to toggle source
# File lib/models/alias.rb, line 2
def self.all
  default_yml = "#{__dir__}/../alias.yml"
  extend_yml = "#{ENV['HOME']}/.dk/alias.yml"
  default_alias = YAML.load_file(default_yml) || {}

  extend_alias = File.exist?(extend_yml) ? YAML.load_file(extend_yml) : {}
  ret = {}.merge(default_alias).merge(extend_alias)
end
create_alias(name, cmds) click to toggle source
# File lib/models/alias.rb, line 18
def self.create_alias(name, cmds)
  extend_yml = "#{ENV['HOME']}/.dk/alias.yml"
  extend_alias = File.exist?(extend_yml) ? YAML.load_file(extend_yml) : {}
  extend_alias[name] = cmds.join(' ')
  update_alias(extend_yml, extend_alias.to_yaml)
end
delete_alias(name) click to toggle source
# File lib/models/alias.rb, line 25
def self.delete_alias(name)
  extend_yml = "#{ENV['HOME']}/.dk/alias.yml"
  extend_alias = File.exist?(extend_yml) ? YAML.load_file(extend_yml) : {}
  extend_alias.delete(name)
  update_alias(extend_yml, extend_alias.to_yaml)
end
list_alias() click to toggle source
# File lib/models/alias.rb, line 11
def self.list_alias
  hammer.say 'Aliases:'
  all.each do |name, cmd|
    hammer.say("   #{name}  ##{cmd}")
  end
end
parse(args) click to toggle source
# File lib/models/alias.rb, line 48
def self.parse(args)
  regexp = /:/
  hash_opts = args.select { |item| regexp.match(item) }
  options = args - hash_opts
  split_options = Thor::Options.split(options)
  hash_opts_obj = hash_opts.map { |item| item.split(':') }.to_h
  hash_opts_obj['args'] = options.unshift('')
  ret = [hash_opts_obj, split_options]
end
run(name, args) click to toggle source
# File lib/models/alias.rb, line 37
def self.run(name, args)
  hash_opts, options = parse(args)
  begin
    command = Erubis::Eruby.new(options.unshift(all[name]).join(' ')).result(hash_opts)
    hammer.run(command)
  rescue => e
    missed_opts = /`(.*)'/.match(e.message).captures.map { |i| "#{i}:<#{i}>" }.join(',')
    hammer.say("pls provide opts #{missed_opts}")
  end
end
update_alias(file, content) click to toggle source
# File lib/models/alias.rb, line 32
def self.update_alias(file, content)
  return hammer.create_file(file, content) unless File.exist?(file)
  File.open(file, 'w') { |f| f.write content }
end