booker 0.4 → 0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/{web → booker} +0 -0
- data/lib/booker.rb +64 -67
- data/lib/bookmarks.rb +2 -2
- data/lib/config.rb +2 -2
- data/lib/consts.rb +19 -18
- metadata +12 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d252a9a7c36783822c6fb4d7aeb4e92bc4a84e0a
|
4
|
+
data.tar.gz: bf2315269a359f08bec9c34631efdd58980e39e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a954524d07453dd2fdec24744211b1e4037581b822706dd4094001f06bc3175830453757abca42c73059a9a91e27abbb034e3d55426e90b0a886fb560995f20a
|
7
|
+
data.tar.gz: ca595683fc4e2d57c6308fada77b2d7ee430415190c8b680af2edbd7a653ac64f81be3bd956368e1b7114a3ae2be471e6a52843f0863dcaa5be3d001357e4bb5
|
data/bin/{web → booker}
RENAMED
File without changes
|
data/lib/booker.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
# parse
|
1
|
+
# parse booker's command line args
|
2
2
|
|
3
3
|
|
4
|
-
VERSION = "0.
|
4
|
+
VERSION = "0.5"
|
5
5
|
|
6
6
|
|
7
7
|
require 'yaml'
|
@@ -21,113 +21,110 @@ class Booker
|
|
21
21
|
parse args
|
22
22
|
end
|
23
23
|
|
24
|
-
def pexit(msg, sig)
|
25
|
-
puts msg
|
26
|
-
exit sig
|
27
|
-
end
|
28
|
-
|
29
|
-
def helper
|
30
|
-
pexit HELP_BANNER, 0
|
31
|
-
end
|
32
|
-
|
33
|
-
def openweb(url)
|
34
|
-
system(browse + wrap(url))
|
35
|
-
end
|
36
|
-
|
37
24
|
def parse(args)
|
38
25
|
# no args given, show help
|
39
26
|
helper if args.none?
|
40
27
|
|
41
28
|
# if arg starts with hyphen, parse option
|
42
|
-
parse_opt args if /^-.*/.match(args
|
29
|
+
parse_opt args if /^-.*/.match(args.first)
|
43
30
|
|
44
31
|
# interpret command
|
45
|
-
browsearg = args
|
32
|
+
browsearg = args.first
|
46
33
|
|
47
34
|
if browsearg.match(/^[0-9]/) # bookmark
|
48
|
-
|
49
|
-
url = bm.bookmark_url(browsearg)
|
50
|
-
pexit "Failure:".red + " bookmark #{browsearg} not found", 1 if url.nil?
|
51
|
-
puts 'opening bookmark ' + url + '...'
|
52
|
-
openweb(wrap(url))
|
35
|
+
open_bookmark args
|
53
36
|
elsif domain.match(browsearg) # website
|
54
37
|
puts 'opening website ' + browsearg + '...'
|
55
38
|
openweb(wrap(prep(browsearg)))
|
56
39
|
else
|
57
40
|
allargs = wrap(args.join(' '))
|
58
|
-
|
59
|
-
search = BConfig.new.searcher
|
60
|
-
openweb(Shellwords.escape(search + allargs))
|
41
|
+
open_search allargs
|
61
42
|
end
|
62
43
|
end
|
63
44
|
|
45
|
+
def pexit(msg, sig)
|
46
|
+
puts msg
|
47
|
+
exit sig
|
48
|
+
end
|
49
|
+
|
50
|
+
def helper
|
51
|
+
pexit HELP_BANNER, 0
|
52
|
+
end
|
53
|
+
|
54
|
+
def version
|
55
|
+
pexit VERSION, 0
|
56
|
+
end
|
57
|
+
|
58
|
+
def openweb(url)
|
59
|
+
system(browse + wrap(url))
|
60
|
+
end
|
61
|
+
|
62
|
+
# an array of ints, as bookmark ids
|
63
|
+
def open_bookmark(bm)
|
64
|
+
id = bm.shift
|
65
|
+
url = Bookmarks.new.bookmark_url(id)
|
66
|
+
pexit "Failure:".red + " bookmark #{id} not found", 1 if url.nil?
|
67
|
+
puts 'opening bookmark ' + url + '...'
|
68
|
+
openweb(wrap(url))
|
69
|
+
open_bookmark bm unless bm.empty?
|
70
|
+
end
|
71
|
+
|
72
|
+
def open_search(term)
|
73
|
+
puts 'searching ' + term + '...'
|
74
|
+
search = BConfig.new.searcher
|
75
|
+
openweb(Shellwords.escape(search + term))
|
76
|
+
end
|
77
|
+
|
78
|
+
# parse and execute any command line options
|
64
79
|
def parse_opt(args)
|
65
80
|
valid_opts = %w{--version -v --install -i --help -h
|
66
81
|
--complete -c --bookmark -b --search -s}
|
67
82
|
|
68
|
-
nextarg = args
|
69
|
-
errormsg =
|
83
|
+
nextarg = args.shift
|
84
|
+
errormsg = 'Error: '.red + "unrecognized option #{nextarg}"
|
70
85
|
pexit errormsg, 1 if ! (valid_opts.include? nextarg)
|
71
86
|
|
72
87
|
# doing forced bookmarking
|
73
|
-
if
|
74
|
-
|
75
|
-
|
76
|
-
if id
|
77
|
-
url = bm.bookmark_url(id)
|
78
|
-
puts 'opening ' + url + '...'
|
79
|
-
system(browse + wrap(url))
|
80
|
-
exit 0
|
88
|
+
if nextarg == '--bookmark' || nextarg == '-b'
|
89
|
+
if args.first.nil?
|
90
|
+
pexit 'Error: '.red + 'booker --bookmark expects bookmark id', 1
|
81
91
|
else
|
82
|
-
|
83
|
-
'web --bookmark expects bookmark id', 1
|
92
|
+
open_bookmark args
|
84
93
|
end
|
85
94
|
end
|
86
95
|
|
87
96
|
# doing autocompletion
|
88
|
-
if
|
89
|
-
args.shift # remove flag
|
97
|
+
if nextarg == '--complete' || nextarg == '-c'
|
90
98
|
allargs = args.join(' ')
|
91
99
|
bm = Bookmarks.new(allargs)
|
92
100
|
bm.autocomplete
|
93
|
-
exit 0
|
94
101
|
end
|
95
102
|
|
96
103
|
# doing installation
|
97
|
-
if
|
98
|
-
args.
|
99
|
-
if args.length > 0
|
104
|
+
if nextarg == '--install' || nextarg == '-i'
|
105
|
+
if !args.empty?
|
100
106
|
install(args)
|
101
107
|
else
|
102
|
-
|
103
|
-
|
108
|
+
err = 'booker --install expects arguments: [completion, bookmarks, config]'
|
109
|
+
pexit 'Error: '.red + err, 1
|
104
110
|
end
|
105
111
|
end
|
106
112
|
|
107
|
-
# needs some help
|
108
|
-
if args[0] == "--help" || args[0] == "-h"
|
109
|
-
helper
|
110
|
-
end
|
111
|
-
|
112
113
|
# doing forced searching
|
113
|
-
if
|
114
|
-
|
114
|
+
if nextarg == '--search' || nextarg == '-s'
|
115
|
+
pexit '--search requires an argument', 1 if args.empty?
|
115
116
|
allargs = args.join(' ')
|
116
|
-
|
117
|
-
pexit "--search requires an argument", 1
|
118
|
-
else
|
119
|
-
puts 'searching ' + allargs + '...'
|
120
|
-
search = BConfig.new.searcher
|
121
|
-
openweb(Shellwords.escape(search + allargs))
|
122
|
-
exit 0
|
123
|
-
end
|
117
|
+
open_search allargs
|
124
118
|
end
|
125
119
|
|
126
120
|
# print version information
|
127
|
-
if
|
128
|
-
|
129
|
-
|
130
|
-
|
121
|
+
version if nextarg == '--version' || nextarg == '-v'
|
122
|
+
|
123
|
+
# needs some help
|
124
|
+
helper if nextarg == '--help' || nextarg == '-h'
|
125
|
+
|
126
|
+
exit 0 # dont parse_arg
|
127
|
+
end # parse_opt
|
131
128
|
|
132
129
|
def install(args)
|
133
130
|
target = args.shift
|
@@ -158,14 +155,14 @@ class Booker
|
|
158
155
|
# determine where to install completion function
|
159
156
|
fpath.each do |fp|
|
160
157
|
begin
|
161
|
-
File.open(fp + "/
|
162
|
-
system "zsh -c 'autoload -U
|
158
|
+
File.open(fp + "/_booker", 'w') {|f| f.write(COMPLETION) }
|
159
|
+
system "zsh -c 'autoload -U _booker'"
|
163
160
|
puts "Success: ".grn +
|
164
161
|
"installed zsh autocompletion in #{fp}"
|
165
162
|
break # if this works, don't try anymore
|
166
163
|
rescue
|
167
164
|
puts "Failure: ".red +
|
168
|
-
"could not write ZSH completion
|
165
|
+
"could not write ZSH completion _booker script to $fpath (#{fp})"
|
169
166
|
end
|
170
167
|
end
|
171
168
|
end
|
data/lib/bookmarks.rb
CHANGED
@@ -33,7 +33,7 @@ end
|
|
33
33
|
|
34
34
|
# try to read bookmarks
|
35
35
|
class Bookmarks
|
36
|
-
def initialize(search_term)
|
36
|
+
def initialize(search_term = '')
|
37
37
|
@conf = BConfig.new
|
38
38
|
begin
|
39
39
|
local_bookmarks = JSON.parse(open(@conf.bookmarks).read)
|
@@ -42,7 +42,7 @@ class Bookmarks
|
|
42
42
|
puts "Warning: ".yel +
|
43
43
|
"Chrome JSON Bookmarks not found."
|
44
44
|
puts "Suggest: ".grn +
|
45
|
-
"
|
45
|
+
"booker --install bookmarks"
|
46
46
|
@chrome_bookmarks = {}
|
47
47
|
end
|
48
48
|
|
data/lib/config.rb
CHANGED
@@ -32,7 +32,7 @@ module Browser
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def domain
|
35
|
-
/.*(io|com|web|net|org|gov|edu)(\/.*)?$/i
|
35
|
+
/.*(io|com|web|net|org|gov|edu|xyz)(\/.*)?$/i
|
36
36
|
end
|
37
37
|
|
38
38
|
# helper methods
|
@@ -62,7 +62,7 @@ class BConfig
|
|
62
62
|
readyaml = read(YAMLCONF)
|
63
63
|
default_config = {
|
64
64
|
:browser => 'open ',
|
65
|
-
:searcher => "https://
|
65
|
+
:searcher => "https://google.com/?q=",
|
66
66
|
:bookmarks => HOME +
|
67
67
|
"/Library/Application Support/Google/Chrome/Profile 1/Bookmarks",
|
68
68
|
}
|
data/lib/consts.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
HELP_BANNER = <<-EOS
|
5
5
|
Open browser:
|
6
|
-
$
|
6
|
+
$ booker [option] [arguments]
|
7
7
|
|
8
8
|
Main options:
|
9
9
|
--bookmark, -b: explicity open bookmark
|
@@ -18,17 +18,18 @@ EOS
|
|
18
18
|
|
19
19
|
|
20
20
|
DEF_CONFIG = <<-EOS
|
21
|
-
|
22
|
-
searcher: https://
|
21
|
+
---
|
22
|
+
:searcher: https://google.com/?q=
|
23
|
+
:bookmarks: null
|
23
24
|
EOS
|
24
25
|
|
25
26
|
|
26
27
|
COMPLETION = <<-EOS
|
27
|
-
#compdef
|
28
|
+
#compdef booker
|
28
29
|
#autoload
|
29
30
|
|
30
31
|
|
31
|
-
|
32
|
+
_booker_bookmarks() {
|
32
33
|
#http://zsh.sourceforge.net/Guide/zshguide06.html#l147
|
33
34
|
setopt glob bareglobqual nullglob rcexpandparam extendedglob automenu
|
34
35
|
unsetopt allexport aliases errexit octalzeroes ksharrays cshnullglob
|
@@ -36,9 +37,9 @@ _web_bookmarks() {
|
|
36
37
|
#get chrome bookmarks
|
37
38
|
local -a bookmarks sites search
|
38
39
|
|
39
|
-
#grab all CLI args, remove '
|
40
|
-
search=`echo $@ | sed -e '/^
|
41
|
-
sites=`
|
40
|
+
#grab all CLI args, remove 'booker' from start
|
41
|
+
search=`echo $@ | sed -e '/^booker /d'`
|
42
|
+
sites=`booker --complete $search`
|
42
43
|
bookmarks=("${(f)${sites}}")
|
43
44
|
|
44
45
|
#terminal colors
|
@@ -60,7 +61,7 @@ _web_bookmarks() {
|
|
60
61
|
}
|
61
62
|
|
62
63
|
|
63
|
-
|
64
|
+
_booker() {
|
64
65
|
compstate[insert]=menu
|
65
66
|
local curcontext state line
|
66
67
|
typeset -A opt_args
|
@@ -73,29 +74,29 @@ _web() {
|
|
73
74
|
'(--install)--install[perform installations (bookmarks, completion, config)]'\
|
74
75
|
'(-s)-s[search google for...]'\
|
75
76
|
'(--search)--search[search google for...]'\
|
76
|
-
'(-h)-h[show
|
77
|
-
'(--help)--help[show
|
77
|
+
'(-h)-h[show booker help]'\
|
78
|
+
'(--help)--help[show booker help]'\
|
78
79
|
'(-v)-v[show version]'\
|
79
80
|
'(--version)--version[show version]'\
|
80
81
|
'*::bookmarks:->bookmarks' && return 0
|
81
82
|
|
82
|
-
|
83
|
+
_booker_bookmarks $words
|
83
84
|
}
|
84
85
|
|
85
86
|
|
86
|
-
|
87
|
+
_booker
|
87
88
|
EOS
|
88
89
|
|
89
90
|
|
90
91
|
ZSH_SCRIPT = <<-EOS
|
91
|
-
# load zsh
|
92
|
+
# load zsh booker completions
|
92
93
|
install_loc=~/.oh-my-zsh/completions
|
93
|
-
script=
|
94
|
+
script=_booker
|
94
95
|
|
95
96
|
install:
|
96
|
-
|
97
|
-
|
97
|
+
mkdir -vp $(install_loc)
|
98
|
+
cp -v $(script) $(install_loc)/
|
98
99
|
|
99
100
|
uninstall:
|
100
|
-
|
101
|
+
rm -v $(install_loc)/$(script)
|
101
102
|
EOS
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: booker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.5'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Warner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-terminfo
|
@@ -73,16 +73,16 @@ dependencies:
|
|
73
73
|
description: |2
|
74
74
|
Select your bookmarks from the command line, by their bookmark id number.
|
75
75
|
ZSH users will be able to tab complete through their matches, similar to
|
76
|
-
how the autocompletion for `kill` works. If no bookmark is provided,
|
77
|
-
will check if the argument is a website and visit it, or
|
78
|
-
|
76
|
+
how the autocompletion for `kill` works. If no bookmark is provided, booker
|
77
|
+
will check if the argument is a website and visit it, or go to google
|
78
|
+
(or your preferred search engine) with the string argument.
|
79
79
|
email: jeremywrnr@gmail.com
|
80
80
|
executables:
|
81
|
-
-
|
81
|
+
- booker
|
82
82
|
extensions: []
|
83
83
|
extra_rdoc_files: []
|
84
84
|
files:
|
85
|
-
- bin/
|
85
|
+
- bin/booker
|
86
86
|
- lib/booker.rb
|
87
87
|
- lib/bookmarks.rb
|
88
88
|
- lib/config.rb
|
@@ -93,9 +93,9 @@ licenses:
|
|
93
93
|
metadata: {}
|
94
94
|
post_install_message: |2
|
95
95
|
Thank you for installing booker!
|
96
|
-
To find your bookmarks, run `
|
97
|
-
To add zsh completion, run `
|
98
|
-
To see more help, run `
|
96
|
+
To find your bookmarks, run `booker -i bookmarks`
|
97
|
+
To add zsh completion, run `booker -i completion`
|
98
|
+
To see more help, run `booker --help`
|
99
99
|
rdoc_options: []
|
100
100
|
require_paths:
|
101
101
|
- lib
|
@@ -111,8 +111,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
111
|
version: '0'
|
112
112
|
requirements: []
|
113
113
|
rubyforge_project:
|
114
|
-
rubygems_version: 2.
|
114
|
+
rubygems_version: 2.5.1
|
115
115
|
signing_key:
|
116
116
|
specification_version: 4
|
117
117
|
summary: CLI parser/selector for google chrome bookmarks
|
118
118
|
test_files: []
|
119
|
+
has_rdoc:
|