brew-cask-tools 0.0.1 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 03c8acc0d2ecf0c0b09bb6b60b74ff9aada6ca98
4
- data.tar.gz: cc4a506d08cc5d54eb7761c74be7aa537f692c29
3
+ metadata.gz: 6010383f43797b4cf996aa39b7d1ee542200cfbc
4
+ data.tar.gz: 93df8f9712f6062702729593c33efd93532ed74a
5
5
  SHA512:
6
- metadata.gz: 22ef0ce63826341906cb03f7af8594ae49732c2c1b188359beb5e2ead2cf51591b6fbf8bc7cc646f527fa88a8e666d037f073ff03b59a279c08347d18cb41b6c
7
- data.tar.gz: 801178fa09cf322918e16c6b98ab0f4f5af70b29e39a5268de8b6f8bc7db2addf66056ca06ec3b8fea8988a4bbbb1f3b1f39a68c20f3e422429161dc1606622b
6
+ metadata.gz: f8fe057528b544f3cfa3b778cb7e18046ba8dcdef6ef9110df3de6d2abf78c722537fc057315486583bfa3d9f7d23603d606b3bc12bc18a6c0c2f448920ce90d
7
+ data.tar.gz: 9574fa4a9654cb204b6a7fb38c60cc6e6168cca18c3a0b119edd581bb3e5d420ef03e2c931cf3c33fcde95733c8b47f9d0e088a91d757e19dd63297e90fb43e5
@@ -0,0 +1,34 @@
1
+ require 'pry'
2
+
3
+ module BrewCaskTools
4
+ # Class to keep brittle parsing of `brew cask info #{cask}` localized.
5
+ class Info
6
+ def initialize(arr)
7
+ @info = arr.nil? ? [] : arr
8
+ end
9
+
10
+ def short_name
11
+ @info[0]
12
+ end
13
+
14
+ def url
15
+ @info[1]
16
+ end
17
+
18
+ def path
19
+ @info[2]
20
+ end
21
+
22
+ def cask_url
23
+ @info[3]
24
+ end
25
+
26
+ def name
27
+ @info[5]
28
+ end
29
+
30
+ def app_name
31
+ @info[7]
32
+ end
33
+ end
34
+ end
data/lib/bct/cask.rb CHANGED
@@ -1,113 +1,129 @@
1
1
  require 'fileutils'
2
2
  require 'thor'
3
3
  require 'open3'
4
+ require 'pry'
5
+
6
+ require_relative './cask/info'
4
7
 
5
8
  CASKROOM = '/usr/local/Caskroom'.freeze
6
9
  DIR_BLACKLIST = ['.', '..', '.metadata'].freeze
7
10
 
8
- # Cask control class. Implements operations on a single cask.
9
- class Cask < Thor::Shell::Basic
10
- attr_reader :name, :dir
11
-
12
- def initialize(name)
13
- super()
14
- @name = name
15
- @info = deprecated? ? [] : `brew cask info #{name}`.split("\n")
16
- @name = @name.delete(' (!)') if deprecated?
17
- @deprecated = deprecated?
18
- @dir = File.join(CASKROOM, @name)
19
- # filter_info
20
- end
11
+ module BrewCaskTools
12
+ # Cask control class. Implements operations on a single cask.
13
+ class Cask < Thor::Shell::Basic
14
+ attr_reader :name, :dir
21
15
 
22
- def filter_info
23
- @info.select! { |i| !i.end_with?('(does not exist)') }
24
- end
16
+ def initialize(name)
17
+ super()
25
18
 
26
- def current_version
27
- @info[0].sub("#{@name}: ", '')
28
- end
19
+ @name = name
29
20
 
30
- def installed_version
31
- local_versions.last
32
- end
21
+ if deprecated?
22
+ info = []
23
+ @name = name.delete(' (!)')
24
+ else
25
+ info = `brew cask info #{name}`.split("\n")
26
+ end
33
27
 
34
- def local_versions
35
- Dir.entries(@dir).reject { |i| DIR_BLACKLIST.include?(i) }.sort
36
- end
28
+ @info = Info.new(info)
29
+ @deprecated = deprecated?
30
+ @dir = File.join(CASKROOM, @name)
31
+ end
37
32
 
38
- def local_metadata_versions
39
- Dir.entries(File.join(@dir, '.metadata')).reject do |i|
40
- DIR_BLACKLIST.include?(i)
41
- end.sort
42
- end
33
+ def filter_info
34
+ @info.info.select! { |i| !i.end_with?('(does not exist)') }
35
+ end
43
36
 
44
- def deprecated?
45
- @deprecated ||= @name.include?('(!)')
46
- end
37
+ def current_version
38
+ @info.short_name.sub("#{@name}: ", '')
39
+ end
47
40
 
48
- def can_cleanup?
49
- return if @deprecated
50
- (local_versions.length > 1 || local_metadata_versions.length > 1)
51
- end
41
+ def installed_version
42
+ local_versions.last
43
+ end
52
44
 
53
- def outdated?
54
- current_version != installed_version
55
- end
45
+ def local_versions
46
+ Dir.entries(@dir)
47
+ .reject { |i| DIR_BLACKLIST.include?(i) }
48
+ .sort
49
+ end
50
+
51
+ def local_metadata_versions
52
+ Dir.entries(File.join(@dir, '.metadata'))
53
+ .reject { |i| DIR_BLACKLIST.include?(i) }
54
+ .sort
55
+ end
56
+
57
+ def deprecated?
58
+ @deprecated ||= @name.include?('(!)')
59
+ end
60
+
61
+ def can_cleanup?
62
+ return true if @deprecated
63
+ (local_versions.length > 1 || local_metadata_versions.length > 1)
64
+ end
65
+
66
+ def outdated?
67
+ current_version != installed_version
68
+ end
69
+
70
+ def upgrade
71
+ return say "You have the most recent version of #{@name}. " \
72
+ 'It cannot be upgraded', :green unless outdated?
56
73
 
57
- def upgrade
58
- if outdated?
59
74
  say "Installing #{@name} (#{current_version})", :cyan
60
75
  cmd = "brew cask install #{@name} --force"
61
76
  Open3.popen2e(cmd) do |_stdin, stdout_err, _wait_thr|
62
- line = stdout_err.gets
63
- puts line while line
77
+ while line = stdout_err.gets
78
+ puts line
79
+ end
64
80
  end
65
81
  say "Upgraded #{@name} to version #{current_version}", :green
66
- else
67
- say "You have the most recent version of #{@name}. " \
68
- 'It cannot be upgraded', :green
69
82
  end
70
- end
71
83
 
72
- def old_versions
73
- _, *previous = local_versions.reverse
74
- previous
75
- end
84
+ def old_versions
85
+ old(local_versions)
86
+ end
76
87
 
77
- def old_metadata
78
- _, *previous = local_metadata_versions.reverse
79
- previous
80
- end
88
+ def old_metadata
89
+ old(local_metadata_versions)
90
+ end
81
91
 
82
- def cleanup
83
- return unless can_cleanup?
84
- if @deprecated == true
85
- yield self, local_versions
86
- # Delete the whole cask
87
- rm(@dir)
88
- return
92
+ def old(arr)
93
+ _, *previous = arr.reverse
94
+ previous
89
95
  end
90
96
 
91
- yield self, old_versions
92
- rm_old(old_versions, method(:rm_version))
93
- rm_old(old_metadata, method(:rm_metadata))
94
- end
97
+ def cleanup
98
+ return unless can_cleanup?
99
+ if @deprecated == true
100
+ yield self, local_versions
101
+ # Delete the whole cask
102
+ rm(@dir)
103
+ return
104
+ end
95
105
 
96
- def rm_old(versions, method)
97
- versions.each do |version|
98
- method.call(version)
106
+ yield self, old_versions
107
+ rm_old(old_versions, method(:rm_version))
108
+ rm_old(old_metadata, method(:rm_metadata))
99
109
  end
100
- end
101
110
 
102
- def rm_version(version)
103
- rm(File.join(@dir, version))
104
- end
111
+ def rm_old(versions, method)
112
+ versions.each do |version|
113
+ method.call(version)
114
+ end
115
+ end
105
116
 
106
- def rm_metadata(version)
107
- rm(File.join(@dir, '.metadata', version))
108
- end
117
+ def rm_version(version)
118
+ rm(File.join(@dir, version))
119
+ end
109
120
 
110
- def rm(dir)
111
- ::FileUtils.rm_rf(dir, secure: true, verbose: true)
121
+ def rm_metadata(version)
122
+ rm(File.join(@dir, '.metadata', version))
123
+ end
124
+
125
+ def rm(dir)
126
+ ::FileUtils.rm_rf(dir, secure: true, verbose: true)
127
+ end
112
128
  end
113
129
  end
data/lib/bct/caskroom.rb CHANGED
@@ -1,31 +1,32 @@
1
- require_relative './cask'
2
1
  require 'thor'
2
+ require 'pry'
3
+
4
+ require_relative './cask'
3
5
 
4
6
  module BrewCaskTools
5
7
  # Represents a list of Casks.
6
8
  class Caskroom < Thor::Shell::Basic
7
- attr_reader :casklist
8
-
9
9
  def initialize
10
10
  super
11
- @casks = `brew cask ls`.split("\n")
12
- @casklist = @casks.map { |cask| Cask.new(cask) }
13
11
  end
14
12
 
15
- def deprecated
16
- output = @casklist.select(&:deprecated?)
17
- yield output
13
+ def casks
14
+ @casks ||= `brew cask ls`.split("\n")
15
+ end
16
+
17
+ def casklist
18
+ @casklist ||= casks.map { |cask| yield cask }
18
19
  end
19
20
 
20
- def outdated
21
- output = @casklist.select(&:outdated?).map do |cask|
22
- [cask.name, cask.installed_version, cask.current_version]
21
+ def enumerate
22
+ casklist do |c|
23
+ yield Cask.new(c)
23
24
  end
24
- yield output
25
25
  end
26
26
 
27
27
  def get(cask_name)
28
- @casklist.select { |e| e.name == cask_name }.first
28
+ c = casks.select { |e| e == cask_name }.first
29
+ Cask.new(c)
29
30
  end
30
31
  end
31
32
  end
data/lib/bct/metadata.rb CHANGED
@@ -1,7 +1,7 @@
1
- require_relative './util'
1
+ require 'git-version-bump'
2
2
 
3
3
  # :nodoc:
4
4
  module BrewCaskTools
5
- VERSION = Util.source_path('VERSION').read rescue '0.0.1'
5
+ VERSION = GVB.version
6
6
  DESCRIPTION = 'A tiny tool that provides some missing functionality in Homebrew Cask.'.freeze
7
7
  end
@@ -0,0 +1,19 @@
1
+ require 'thor'
2
+ require 'ruby-progressbar'
3
+
4
+ require_relative '../caskroom'
5
+
6
+ module BrewCaskTools
7
+ module Tasks
8
+ # Base class for Tasks that interact with the Caskroom
9
+ class Caskroom < Thor::Shell::Basic
10
+ def caskroom
11
+ @caskroom ||= BrewCaskTools::Caskroom.new
12
+ end
13
+
14
+ def progressbar
15
+ @progressbar ||= ProgressBar.create(title: ' Progress ')
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,58 +1,59 @@
1
1
  require 'thor'
2
+ require 'pry'
3
+
4
+ require_relative './caskroom'
2
5
 
3
6
  module BrewCaskTools
4
7
  module Tasks
5
- # Upgrade tasks
6
- class Cleanup < Thor
7
- desc 'cleanup CASK', 'clean up old versions of a specific cask. If a ' \
8
- 'cask name is omitted, this task will cleanup all outdated casks.'
9
- def cleanup(cask_name, *args)
10
- @caskroom = args.first
11
- cask = @caskroom.get(cask_name) unless cask_name.nil?
12
-
13
- if cask.nil? && !cask_name.nil?
14
- return say 'Invalid cask specified', :red
15
- end
8
+ # Cleanup tasks
9
+ class Cleanup < Caskroom
10
+ def initialize(cask_name)
11
+ super()
16
12
 
17
- unless cask_name.nil?
18
- clean_single_cask(cask)
19
- return
13
+ if cask_name.nil?
14
+ progressbar.total = caskroom.casks.length
15
+ progressbar.log "\nLooking for outdated casks..."
16
+
17
+ return clean_all # Clean all casks
20
18
  end
21
19
 
22
- clean_all_casks if cask_name.nil? # Cleanup everything
20
+ cask = caskroom.get(cask_name)
21
+ return say 'Invalid cask specified', :red if cask.nil?
22
+
23
+ clean_one(cask)
23
24
  end
24
25
 
25
- no_tasks do
26
- def clean_block
27
- proc do |c, versions|
28
- say "Cleaning up #{c.name}", :yellow
29
- dep_q = "#{c.name} has been deprecated. Ok to remove all versions?"
30
- if c.deprecated? && no?(dep_q, :red)
31
- say 'No action taken.', :red
32
- next
33
- end
34
- say "Removed #{versions.length} old version(s)", :yellow
35
- end
36
- end
26
+ def clean_one(cask)
27
+ return say "#{cask.name.capitalize} does not have any outdated " \
28
+ 'versions. No cleanup operations are necessary', :green unless cask.can_cleanup?
37
29
 
38
- def clean_single_cask(cask)
39
- unless cask.can_cleanup?
40
- say "#{cask.name.capitalize} does not have any outdated " \
41
- 'versions. No cleanup operations are necessary', :green
42
- return
43
- end
30
+ cask.cleanup(&clean_block)
31
+ end
32
+
33
+ def clean_all
34
+ cleaned_casks = []
35
+
36
+ caskroom.enumerate do |cask|
37
+ progressbar.title = " #{cask.name.capitalize} "
38
+ progressbar.increment
44
39
 
45
- cask.cleanup(&clean_block)
40
+ cleaned_casks << cask if cask.can_cleanup?
46
41
  end
47
42
 
48
- def clean_all_casks
49
- cleaned_casks = @caskroom.casklist.select(&:can_cleanup?)
43
+ return say "\nNo cleanup operations are necessary", :green if cleaned_casks.empty?
50
44
 
51
- cleaned_casks.each do |c|
52
- c.cleanup(&clean_block)
53
- end
45
+ cleaned_casks.each { |c| c.cleanup(&clean_block) }
46
+ end
54
47
 
55
- say 'No cleanup operations are necessary', :green if cleaned_casks.empty?
48
+ def clean_block
49
+ proc do |c, versions|
50
+ say "Cleaning up #{c.name}", :yellow
51
+ dep_q = "#{c.name} has been deprecated. Ok to remove all versions?"
52
+ if c.deprecated? && no?(dep_q, :red)
53
+ say 'No action taken.', :red
54
+ next
55
+ end
56
+ say "Removed #{versions.length} old version(s)", :yellow
56
57
  end
57
58
  end
58
59
  end
@@ -1,42 +1,60 @@
1
- require 'thor'
1
+ require_relative './caskroom'
2
2
 
3
3
  module BrewCaskTools
4
4
  module Tasks
5
- # Upgrade tasks
6
- class Outdated < Thor
7
- desc 'outdated', 'list outdated casks'
8
- def outdated(*args)
9
- @caskroom = args.first
10
- @caskroom.outdated(&outdated_output)
11
- @caskroom.deprecated(&deprecated_output)
5
+ # Outdated cask tasks
6
+ class Outdated < Caskroom
7
+ def initialize
8
+ super
9
+ progressbar.total = caskroom.casks.length
10
+ progressbar.log "\nLooking for outdated casks..."
11
+ outdated, deprecated = compile
12
+
13
+ outdated(outdated)
14
+ deprecated(deprecated)
12
15
  end
13
16
 
14
- no_tasks do
15
- def outdated_output
16
- proc do |casks|
17
- say 'There are no outdated casks', :yellow if casks.empty?
18
- next if casks.empty?
19
-
20
- puts "Outdated packages\n------------------"
21
- headers = ['Package', 'Installed Version', 'New Version']
22
- output = casks.unshift(headers)
23
- print_table(output)
24
- puts "\n"
25
- end
26
- end
17
+ def compile
18
+ outdated = []
19
+ deprecated = []
27
20
 
28
- def deprecated_output
29
- proc do |casks|
30
- next if casks.empty?
21
+ caskroom.enumerate do |cask|
22
+ progressbar.title = " #{cask.name.capitalize} "
23
+ progressbar.increment
24
+
25
+ outdated << cask if cask.outdated?
26
+ deprecated << cask if cask.deprecated?
27
+ end
28
+ [outdated, deprecated]
29
+ end
31
30
 
32
- puts "Deprecated packages\n------------------"
33
- casks.each do |cask|
34
- puts cask.name
35
- end
36
- puts "\n"
31
+ def outdated(casks)
32
+ return say "\nThere are no outdated casks", :yellow if casks.empty?
33
+ handle(casks, 'outdated') do |outdated_casks|
34
+ outdated_casks.map! do |c|
35
+ [c.name, c.installed_version, c.current_version]
37
36
  end
37
+
38
+ headers = ['Package', 'Installed Version', 'New Version']
39
+ output = outdated_casks.unshift(headers)
40
+ print_table(output)
41
+ end
42
+ end
43
+
44
+ def deprecated(casks)
45
+ return if casks.empty?
46
+ handle(casks, 'deprecated') do |dep_casks|
47
+ dep_casks.map! { |c| [c.name] }
48
+ output = dep_casks.unshift(['Package'])
49
+ print_table(output)
38
50
  end
39
51
  end
52
+
53
+ def handle(casks, adverb)
54
+ puts "#{adverb.capitalize} packages\n------------------"
55
+ yield casks
56
+ puts "\n"
57
+ end
40
58
  end
41
59
  end
42
60
  end
@@ -1,45 +1,52 @@
1
1
  require 'thor'
2
2
 
3
+ require_relative './caskroom'
3
4
  require_relative './cleanup'
4
5
 
5
6
  module BrewCaskTools
6
7
  module Tasks
7
8
  # Upgrade tasks
8
- class Upgrade < Thor
9
- desc 'upgrade CASK', 'Upgrade a specific cask.' \
10
- ' If a cask name is omitted, this task will update all outdated casks.'
11
- def upgrade(cask_name, *args)
12
- @caskroom = args.first
13
- cask = @caskroom.get(cask_name) unless cask_name.nil?
14
-
15
- if cask.nil? && !cask_name.nil?
16
- return say 'Invalid cask specified', :red
17
- end
9
+ class Upgrade < Caskroom
10
+ def initialize(cask_name)
11
+ super()
12
+
13
+ if cask_name.nil?
14
+ progressbar.total = caskroom.casks.length
15
+ progressbar.log "\nLooking for outdated casks..."
18
16
 
19
- if cask_name.nil? # Upgrade everything
20
- upgrade_all
21
- else # Upgrade one cask
22
- upgrade_one(cask_name, cask)
17
+ return upgrade_all # Clean all casks
23
18
  end
19
+
20
+ cask = caskroom.get(cask_name)
21
+ return say 'Invalid cask specified', :red if cask.nil?
22
+
23
+ upgrade_one(cask)
24
24
  end
25
25
 
26
- no_tasks do
27
- def upgrade_one(cask_name, cask)
28
- cask.upgrade
29
- invoke Tasks::Cleanup, :cleanup, [cask_name]
30
- end
26
+ def upgrade_all
27
+ to_upgrade = []
31
28
 
32
- def upgrade_all
33
- to_upgrade = @caskroom.casklist.select(&:outdated?)
29
+ caskroom.enumerate do |cask|
30
+ progressbar.title = " #{cask.name.capitalize} "
31
+ progressbar.increment
34
32
 
35
- if to_upgrade.empty?
36
- say 'There are no casks to be upgraded', :green
37
- else
38
- to_upgrade.each(&:upgrade)
39
- end
33
+ next unless cask.outdated?
40
34
 
41
- invoke Tasks::Cleanup, :cleanup
35
+ to_upgrade << cask
36
+ progressbar.log "#{cask.info.name}: " \
37
+ "#{cask.installed_version} ==> #{cask.current_version}"
42
38
  end
39
+
40
+ return say 'There are no casks to be upgraded', :green if to_upgrade.empty?
41
+
42
+ to_upgrade.each(&:upgrade)
43
+
44
+ Tasks::Cleanup.new(nil)
45
+ end
46
+
47
+ def upgrade_one(cask)
48
+ cask.upgrade
49
+ Tasks::Cleanup.new(cask_name)
43
50
  end
44
51
  end
45
52
  end
data/lib/bct/tasks.rb CHANGED
@@ -12,8 +12,8 @@ module BrewCaskTools
12
12
  class CLI < Thor
13
13
  def initialize(args, opts, config)
14
14
  super
15
- @caskroom = Caskroom.new unless
16
- %w(help version).include?(config[:current_command].name)
15
+ return if %w(help version).include?(config[:current_command].name)
16
+ `brew tap` # Update Caskroom tap so the latest formulae are pulled down
17
17
  end
18
18
 
19
19
  def self.exit_on_failure?
@@ -27,19 +27,19 @@ module BrewCaskTools
27
27
 
28
28
  desc 'outdated', 'list outdated casks'
29
29
  def outdated
30
- invoke Tasks::Outdated, :outdated, [], [@caskroom]
30
+ Tasks::Outdated.new
31
31
  end
32
32
 
33
33
  desc 'upgrade CASK', 'Upgrade a specific cask.' \
34
34
  ' If a cask name is omitted, this task will update all outdated casks.'
35
35
  def upgrade(cask_name = nil)
36
- invoke Tasks::Upgrade, :upgrade, [cask_name], [@caskroom]
36
+ Tasks::Upgrade.new(cask_name)
37
37
  end
38
38
 
39
39
  desc 'cleanup CASK', 'clean up old versions of a specific cask. If a ' \
40
40
  'cask name is omitted, this task will cleanup all outdated casks.'
41
41
  def cleanup(cask_name = nil)
42
- invoke Tasks::Cleanup, :cleanup, [cask_name], [@caskroom]
42
+ Tasks::Cleanup.new(cask_name)
43
43
  end
44
44
  end
45
45
  end
data/lib/bct/util.rb CHANGED
@@ -19,11 +19,11 @@ module BrewCaskTools
19
19
  # Relative path from working directory
20
20
  ##
21
21
  def relative_path(*relative)
22
- Pathname.pwd.join(*(relative.flatten.map(&:to_s))).expand_path
22
+ Pathname.pwd.join(*relative.flatten.map(&:to_s)).expand_path
23
23
  end
24
24
 
25
25
  def source_path(*relative)
26
- GEM_PATH.join(*(relative.flatten.map(&:to_s))).expand_path
26
+ GEM_PATH.join(*relative.flatten.map(&:to_s)).expand_path
27
27
  end
28
28
  end
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brew-cask-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Greene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-28 00:00:00.000000000 Z
11
+ date: 2016-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.19'
83
+ - !ruby/object:Gem::Dependency
84
+ name: ruby-progressbar
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.8'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: git-version-bump
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.15'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.15'
83
111
  description: A tiny tool that provides some missing functionality in Homebrew Cask.
84
112
  email:
85
113
  - davepgreene@gmail.com
@@ -93,9 +121,11 @@ files:
93
121
  - bin/bct
94
122
  - lib/bct.rb
95
123
  - lib/bct/cask.rb
124
+ - lib/bct/cask/info.rb
96
125
  - lib/bct/caskroom.rb
97
126
  - lib/bct/metadata.rb
98
127
  - lib/bct/tasks.rb
128
+ - lib/bct/tasks/caskroom.rb
99
129
  - lib/bct/tasks/cleanup.rb
100
130
  - lib/bct/tasks/outdated.rb
101
131
  - lib/bct/tasks/upgrade.rb