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