class Urls::Runner
Public Class Methods
init(*)
click to toggle source
hook into init since it's after loading rc but before command execution
Calls superclass method
# File lib/urls/runner.rb, line 9 def self.init(*) Urls.setup super end
Public Instance Methods
add(url, *desc)
click to toggle source
# File lib/urls/runner.rb, line 16 def add(url, *desc) options = desc[-1].is_a?(Hash) ? desc.pop : {} abort "urls: #{url} already exists" if Url.first(name: Url.urlify(url)) if (obj = Url.create(name: url, desc: desc.join(' '))).saved? if options[:tags] Urls.add_tag(url, options[:tags]) end say "Added #{url}" else abort "urls: Failed to save url - #{obj.errors.full_messages.join(', ')}" end end
edit()
click to toggle source
# File lib/urls/runner.rb, line 41 def edit unless DataMapper::Repository.adapters[:default].options['adapter'] == 'yaml' abort 'urls: edit only works with yaml db' end file = Urls.home + '/urls.yml' system(ENV['EDITOR'] || 'vim', file) end
list(query=nil, options={})
click to toggle source
# File lib/urls/runner.rb, line 57 def list(query=nil, options={}) if options.delete(:simple) options.update headers: false, fields: [:name], tab: true end urls = if options[:tag] names = Urls.tag('list', query, capture: true).split("\n") Url.all name: names elsif query Url.all(desc: /#{query}/) | Url.all(name: /#{query}/) else Url.all end Hirb.enable if options[:open] choices = menu urls.map(&:name) cmds = Urls.browser.split(/\s+/) choices.each {|u| system(*cmds, u) } elsif options[:copy] choices = menu urls.map(&:name) Urls.copy choices else urls = urls.map {|e| e.attributes } if !(url_tags = Urls.tagged_items).empty? urls.each {|e| e[:tags] = url_tags[e[:name]] || '' } options[:fields] << :tags end puts table(urls, options) end end
rm(url)
click to toggle source
# File lib/urls/runner.rb, line 31 def rm(url) if u = Url.first(name: Url.urlify(url)) u.destroy say "Deleted #{url}" else abort "urls: #{url} not found" end end
Private Instance Methods
say(*args)
click to toggle source
# File lib/urls/runner.rb, line 104 def say(*args) puts *args.map {|e| "urls: #{e}" } end
table(rows, options={})
click to toggle source
# File lib/urls/runner.rb, line 100 def table(rows, options={}) Hirb::Helpers::AutoTable.render(rows, options) end