/
runner.rb
45 lines (39 loc) · 973 Bytes
/
runner.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
require 'urls'
require 'boson/runner'
ENV['BOSONRC'] = ENV['URLS_RC'] || '~/.urlsrc'
module Urls
class Runner < Boson::Runner
def self.start(*)
Urls.setup
super
end
option :tags, type: 'array', desc: 'tags for url'
desc "adds url with optional description and tags"
def add(url, *desc)
options = desc[-1].is_a?(Hash) ? desc.pop : {}
Url.create!(name: url, desc: desc.join(' '))
if options[:tags]
Urls.add_tag(url, options[:tags])
end
say "Added #{url}"
end
desc 'removes url'
def rm(url)
if u = Url.first(name: url)
u.destroy
say "Deleted #{url}"
else
abort "urls: #{url} not found"
end
end
desc "list all urls or by a tag"
def list(tag = nil)
urls = tag ? `tag list #{tag}`.split("\n") : Url.all.map(&:name)
puts urls
end
private
def say(*args)
puts *args.map {|e| "urls: #{e}" }
end
end
end