Class: Alias
- Inherits:
-
Object
- Object
- Alias
- Defined in:
- lib/models/alias.rb
Class Method Summary collapse
- .all ⇒ Object
- .create_alias(name, cmds) ⇒ Object
- .delete_alias(name) ⇒ Object
- .list_alias ⇒ Object
- .parse(args) ⇒ Object
- .run(name, args) ⇒ Object
- .update_alias(file, content) ⇒ Object
Class Method Details
.all ⇒ Object
2 3 4 5 6 7 8 9 |
# 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) ⇒ Object
18 19 20 21 22 23 |
# 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) ⇒ Object
25 26 27 28 29 30 |
# 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 ⇒ Object
11 12 13 14 15 16 |
# 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) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/models/alias.rb', line 48 def self.parse(args) regexp = /:/ hash_opts = args.select { |item| regexp.match(item) } = args - hash_opts = Thor::Options.split() hash_opts_obj = hash_opts.map { |item| item.split(':') }.to_h hash_opts_obj['args'] = .unshift('') ret = [hash_opts_obj, ] end |
.run(name, args) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/models/alias.rb', line 37 def self.run(name, args) hash_opts, = parse(args) begin command = Erubis::Eruby.new(.unshift(all[name]).join(' ')).result(hash_opts) hammer.run(command) rescue => e missed_opts = /`(.*)'/.match(e.).captures.map { |i| "#{i}:<#{i}>" }.join(',') hammer.say("pls provide opts #{missed_opts}") end end |
.update_alias(file, content) ⇒ Object
32 33 34 35 |
# 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 |