bunchcli 1.1.5 → 1.1.11.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85429d178706578f82263c19457bf79b369efee746ac17172e1b065c6fb4a1eb
4
- data.tar.gz: 12dc65b8c0c8c3b86c3ef050c30e4aa756b8596ca0388d4c4c89b1bdf0db3beb
3
+ metadata.gz: 70d3422a46d0fcef92ba107d45988048e87861e7c43850804ae8f694fc68073a
4
+ data.tar.gz: d0e9a81d6681c68440171064ee6b43890848ae3a598fe5824ac4d879a57de8e2
5
5
  SHA512:
6
- metadata.gz: b38da1ccef956f64112c4aa70f2f195b9200f134cf7415d7ed5651e93719acb2d289462b171d61ff7573566467b6804b0039f27ed681fbaf56e758c0428b713b
7
- data.tar.gz: 57de9a2b54ad9f6de4bc9328c1badd2342e1b7c8ac6683d3aa4ef4a098d9fcdd03f6d6d01bf1b99b49faad27c4b675793256bbcf22c864d901a2bf6f57e64d07
6
+ metadata.gz: ae5f34bb75d84b59e86ed3646a30f5ef86d90ff7e6cf91fac65a31bbc9d505d8b0944c61e2d4f3445504893639f7591ed0b9dc31a2aa17cf7392a0c7585e9663
7
+ data.tar.gz: 27a8b4693967cc09fd11036caa1162454a393907fff8036f6c8decb4ec47759d758dbc8e59201a797c6978df9d9e066d08e0d085edadfe1cc73adc1b37e0ba39
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /vendor/
10
+ Gemfile.lock
data/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
- ### 1.1.5
1
+ ### 1.1.7
2
2
 
3
- - Add some color to the interactive URL generator
3
+ - Bugfix
4
4
 
5
5
  ### 1.1.4
6
6
 
data/Gemfile CHANGED
@@ -4,4 +4,3 @@ source "https://rubygems.org"
4
4
  gemspec
5
5
 
6
6
  gem "rake", "~> 12.0"
7
- gem 'term-colorizer'
data/lib/bunch.rb CHANGED
@@ -1,9 +1,11 @@
1
1
  CACHE_TIME = 86400 #seconds, 1 day = 86400
2
2
  CACHE_FILE = "~/.bunch_cli_cache"
3
+ TARGET_APP = "Bunch Beta"
4
+
5
+ TARGET_URL = TARGET_APP == 'Bunch Beta' ? 'x-bunch-beta' : 'x-bunch'
3
6
 
4
7
  require "bunch/version"
5
8
  require 'yaml'
6
9
  require 'cgi'
7
10
  require 'bunch/url_generator'
8
- require 'term-colorizer'
9
11
  require 'bunch/bunchCLI'
@@ -69,10 +69,11 @@ class Bunch
69
69
  # items.push({title: 0})
70
70
  def generate_bunch_list
71
71
  items = []
72
- Dir.glob(File.join(bunch_dir, '*.bunch')).each do |f|
72
+ `osascript -e 'tell app "#{TARGET_APP}" to list bunches'`.strip.split(/,/).each do |b|
73
+ b.strip!
73
74
  items.push(
74
- path: f,
75
- title: File.basename(f, '.bunch')
75
+ path: File.join(bunch_dir, b + '.bunch'),
76
+ title: b
76
77
  )
77
78
  end
78
79
  items
@@ -80,13 +81,15 @@ class Bunch
80
81
 
81
82
  def bunch_dir
82
83
  @bunch_dir ||= begin
83
- dir = `/usr/bin/defaults read #{ENV['HOME']}/Library/Preferences/com.brettterpstra.Bunch.plist configDir`.strip
84
+ dir = `osascript -e 'tell app "#{TARGET_APP}" to get preference "Folder"'`.strip
85
+ # dir = `/usr/bin/defaults read #{ENV['HOME']}/Library/Preferences/com.brettterpstra.Bunch.plist configDir`.strip
84
86
  File.expand_path(dir)
85
87
  end
86
88
  end
87
89
 
88
90
  def url_method
89
- @url_method ||= `/usr/bin/defaults read #{ENV['HOME']}/Library/Preferences/com.brettterpstra.Bunch.plist toggleBunches`.strip == '1' ? 'toggle' : 'open'
91
+ @url_method ||= `osascript -e 'tell app "#{TARGET_APP}" to get preference "Toggle"'`.strip == '1' ? 'toggle' : 'open'
92
+ # @url_method ||= `/usr/bin/defaults read #{ENV['HOME']}/Library/Preferences/com.brettterpstra.Bunch.plist toggleBunches`.strip == '1' ? 'toggle' : 'open'
90
93
  end
91
94
 
92
95
  def bunches
@@ -96,15 +99,15 @@ class Bunch
96
99
  def url(bunch)
97
100
  params = "&x-success=#{@success}" if @success
98
101
  if url_method == 'file'
99
- %(x-bunch://raw?file=#{bunch}#{params})
102
+ %(#{TARGET_URL}://raw?file=#{bunch}#{params})
100
103
  elsif url_method == 'raw'
101
- %(x-bunch://raw?txt=#{bunch}#{params})
104
+ %(#{TARGET_URL}://raw?txt=#{bunch}#{params})
102
105
  elsif url_method == 'snippet'
103
- %(x-bunch://snippet?file=#{bunch}#{params})
106
+ %(#{TARGET_URL}://snippet?file=#{bunch}#{params})
104
107
  elsif url_method == 'setPref'
105
- %(x-bunch://setPref?#{bunch})
108
+ %(#{TARGET_URL}://setPref?#{bunch})
106
109
  else
107
- %(x-bunch://#{url_method}?bunch=#{bunch[:title]}#{params})
110
+ %(#{TARGET_URL}://#{url_method}?bunch=#{bunch}#{params})
108
111
  end
109
112
  end
110
113
 
@@ -150,7 +153,7 @@ EOF
150
153
  launch_if_needed
151
154
  # get front app
152
155
  front_app = %x{osascript -e 'tell application "System Events" to return name of first application process whose frontmost is true'}.strip
153
- bid = bundle_id(front_app)
156
+ bid = bundle_id(front_app) rescue false
154
157
  @success = bid if (bid)
155
158
 
156
159
  if @url_method == 'raw'
@@ -187,25 +190,32 @@ EOF
187
190
  end
188
191
  else
189
192
  bunch = find_bunch(str)
193
+ params = []
194
+ params << "fragment=#{CGI.escape(@fragment)}" if @fragment
195
+ params.concat(variable_query) if @variables
190
196
  unless bunch
191
197
  if File.exists?(str)
192
198
  @url_method = 'file'
199
+ _url = url(str)
200
+ _url += '&' + params.join('&') if params.length
193
201
  if @show_url
194
- $stdout.puts url(str)
202
+ $stdout.puts _url
195
203
  else
196
204
  warn "Opening file"
197
- `open '#{url(str)}'`
205
+ `open '#{_url}'`
198
206
  end
199
207
  else
200
208
  warn 'No matching Bunch found'
201
209
  Process.exit 1
202
210
  end
203
211
  else
212
+ _url = url(bunch[:title])
213
+ _url += '&' + params.join('&') if params.length
204
214
  if @show_url
205
- $stdout.puts url(str)
215
+ $stdout.puts _url
206
216
  else
207
217
  warn "#{human_action} #{bunch[:title]}"
208
- `open '#{url(bunch)}'`
218
+ `open '#{_url}'`
209
219
  end
210
220
  end
211
221
  end
@@ -15,9 +15,17 @@ end
15
15
  module Util
16
16
  def bundle_id(app)
17
17
  shortname = app.sub(/\.app$/, '')
18
- apps = `mdfind -onlyin /Applications -onlyin /Applications/Setapp -onlyin /Applications/Utilities -onlyin ~/Applications -onlyin /Developer/Applications 'kMDItemKind==Application'`
18
+ apps = `mdfind -onlyin /Applications -onlyin /Applications/Setapp -onlyin /Applications/Utilities -onlyin ~/Applications -onlyin /Developer/Applications -onlyin /System/Applications 'kMDItemKind==Application'`
19
19
 
20
- foundapp = apps.split(/\n/).select! { |line| line.chomp =~ /#{shortname}\.app$/i }[0]
20
+ return false if !apps || apps.strip.length == 0
21
+
22
+ foundapps = apps.split(/\n/).select! { |line| line.chomp =~ /#{shortname}\.app$/i }
23
+
24
+ if foundapps.length > 0
25
+ foundapp = foundapps[0]
26
+ else
27
+ return false
28
+ end
21
29
 
22
30
  if foundapp
23
31
  bid = `mdls -name kMDItemCFBundleIdentifier -r "#{foundapp}"`.chomp
@@ -49,8 +57,7 @@ module Prompt
49
57
  def get_line(query = '->')
50
58
  stty_save = `stty -g`.chomp
51
59
  begin
52
- print query.bright_green
53
- line = Readline.readline(": ", true)
60
+ line = Readline.readline("#{query}: ", true)
54
61
  rescue Interrupt
55
62
  system('stty', stty_save) # Restore
56
63
  exit
@@ -61,7 +68,7 @@ module Prompt
61
68
  def get_text(query = 'Enter text, ^d to end')
62
69
  stty_save = `stty -g`.chomp
63
70
  lines = []
64
- puts query.bright_green
71
+ puts query
65
72
  begin
66
73
  while (line = Readline.readline)
67
74
  lines << line
@@ -103,15 +110,15 @@ class Menu
103
110
  def choose(query = 'Select an item')
104
111
  throw 'No items initialized' if @items.nil?
105
112
  STDERR.puts
106
- STDERR.puts "┌#{("─" * 74)}┐".yellow
113
+ STDERR.puts "┌#{("─" * 74)}┐"
107
114
  intpad = Math::log10(@items.length).to_i + 1
108
115
  @items.each_with_index do |item, idx|
109
116
  idxstr = "%#{intpad}d" % (idx + 1)
110
117
  line = "#{idxstr}: #{item.title}"
111
118
  pad = 74 - line.length
112
- STDERR.puts "│".yellow + "#{line}#{" " * pad}".bright_white + "│".yellow
119
+ STDERR.puts "│#{line}#{" " * pad}│"
113
120
  end
114
- STDERR.puts "└┤".yellow + " #{query} ".bright_green + "├#{"─" * (70 - query.length)}┘".yellow
121
+ STDERR.puts "└┤ #{query} ├#{"─" * (70 - query.length)}┘"
115
122
  sel = choose_number("> ", @items.length)
116
123
  sel ? @items[sel.to_i - 1] : nil
117
124
  end
@@ -159,7 +166,7 @@ class BunchFinder
159
166
  attr_accessor :config_dir
160
167
 
161
168
  def initialize
162
- config_dir = `defaults read com.brettterpstra.bunch configDir`.strip
169
+ config_dir = `osascript -e 'tell app "#{TARGET_APP}" to get preference "Folder"'`.strip
163
170
  config_dir = File.expand_path(config_dir)
164
171
  if File.directory?(config_dir)
165
172
  @config_dir = config_dir
@@ -168,6 +175,15 @@ class BunchFinder
168
175
  end
169
176
  end
170
177
 
178
+ def bunches_to_items
179
+ items = []
180
+ `osascript -e 'tell app "#{TARGET_APP}" to list bunches'`.strip.split(/,/).each do |b|
181
+ filename = b.strip
182
+ items << MenuItem.new(filename, filename, filename)
183
+ end
184
+ items
185
+ end
186
+
171
187
  def files_to_items(dir, pattern)
172
188
  Dir.chdir(dir)
173
189
  items = []
@@ -181,12 +197,12 @@ class BunchFinder
181
197
  end
182
198
 
183
199
  def choose_bunch
184
- items = files_to_items(@config_dir, '*.bunch')
185
- items.map! do |item|
186
- item.title = File.basename(item.title, '.bunch')
187
- item.value = File.basename(item.title, '.bunch')
188
- item
189
- end
200
+ items = bunches_to_items
201
+ # items.map! do |item|
202
+ # item.title = File.basename(item.title, '.bunch')
203
+ # item.value = File.basename(item.title, '.bunch')
204
+ # item
205
+ # end
190
206
  menu = Menu.new(items)
191
207
  menu.choose('Select a Bunch')
192
208
  end
data/lib/bunch/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module BunchCLI
2
- VERSION = "1.1.5"
2
+ VERSION = "1.1.11.pre"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bunchcli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.11.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-03 00:00:00.000000000 Z
11
+ date: 2021-05-31 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -21,7 +21,6 @@ files:
21
21
  - ".gitignore"
22
22
  - CHANGELOG.md
23
23
  - Gemfile
24
- - Gemfile.lock
25
24
  - LICENSE.txt
26
25
  - README.md
27
26
  - Rakefile
@@ -49,11 +48,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
48
  version: 2.0.0
50
49
  required_rubygems_version: !ruby/object:Gem::Requirement
51
50
  requirements:
52
- - - ">="
51
+ - - ">"
53
52
  - !ruby/object:Gem::Version
54
- version: '0'
53
+ version: 1.3.1
55
54
  requirements: []
56
- rubygems_version: 3.1.4
55
+ rubygems_version: 3.2.16
57
56
  signing_key:
58
57
  specification_version: 4
59
58
  summary: A CLI for use with Bunch.app (macOS)
data/Gemfile.lock DELETED
@@ -1,21 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- bunchcli (1.1.4)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- rake (12.3.3)
10
- term-colorizer (0.2.1)
11
-
12
- PLATFORMS
13
- x86_64-darwin-19
14
-
15
- DEPENDENCIES
16
- bunchcli!
17
- rake (~> 12.0)
18
- term-colorizer
19
-
20
- BUNDLED WITH
21
- 2.2.4