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
tags() click to toggle source
# File lib/urls/runner.rb, line 90
def tags
  Urls.tag('tags')
end

Private Instance Methods

menu(arr) click to toggle source
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