bcupgrade 0.3.4 → 0.9.0

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: 62ef06e34dafb01a0e4408a4458b19fb3c499d01
4
- data.tar.gz: 81798fc4f1c13b996eaffbf75fb81e5e1fa1e9d3
3
+ metadata.gz: 4d02aa6fbe8176bcb88a17d40877724a4f49cade
4
+ data.tar.gz: ff09d7809e349783f69fc4eaf16ecca45112ddc9
5
5
  SHA512:
6
- metadata.gz: 710305a629112018302a9726614b2c782b1b56e8a9c8197d33d2b1ceaa91cdff3f5ff6fb1a8db8bda185f65a9d2984ed5d3583ced33112b011b7ed59a7490da5
7
- data.tar.gz: 8be95512d367c25931958720f3c4b9ed5f722b2cc5a28c430666d0919cd2227eec21757349fef4becefa6e47cd9724d57cce44bb26158fa10681d10483fe722f
6
+ metadata.gz: 21c38cc9d64e52add4775323904a6973609a40b3e5b2e9fd345841e971759da1040d315e0ef2c8797a36aac34a22cae39ca2aa853c5822e5ce7c5f5d668fe440
7
+ data.tar.gz: 07a82eceb2859e9f06ef3e3ab1fa28447dfff7f47e4a3a3dfe03bdd72db233e0dca973a4e40df065f12679bb2e952b164ae182daac367ec38e3159d4b196465a
data/.rubocop_todo.yml CHANGED
@@ -1,12 +1,12 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2017-04-18 20:35:19 +0900 using RuboCop version 0.48.1.
3
+ # on 2018-01-06 13:26:21 +0900 using RuboCop version 0.52.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 3
9
+ # Offense count: 1
10
10
  # Configuration parameters: CountComments.
11
11
  Metrics/MethodLength:
12
12
  Max: 15
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  source 'https://rubygems.org'
3
4
 
4
5
  # Specify your gem's dependencies in bcupgrade.gemspec
data/README.md CHANGED
@@ -7,6 +7,14 @@ Awesome `brew cask upgrade` command.
7
7
 
8
8
 
9
9
 
10
+ ## Requirement
11
+
12
+ - [Homebrew Cask](https://caskroom.github.io/) v1.4.2 or later.
13
+ - Ruby v2.3.3 or later. (System ruby on macOS High Sierra)
14
+
15
+
16
+
17
+
10
18
  ## Installation
11
19
 
12
20
  ```
@@ -20,35 +28,32 @@ Awesome `brew cask upgrade` command.
20
28
 
21
29
  `bcupgrade` with no arguments to check & upgrade all casks.
22
30
 
23
- - Displays a confirmation prompt `[y/n]` when it attempts to re-install.
24
- - Install latest version. (`brew cask install --force #{cask}`)
31
+ - Displays confirmation prompts `[y/n]`.
32
+ - Install latest version. (`brew cask reinstall #{cask}`)
25
33
 
26
34
  ```
27
35
  % bcupgrade
28
36
 
29
- ==> Check 'brew cask list'...
30
- ["1password", "alfred", "atom", "bartender"]
31
-
32
- ==> Check 'brew cask info' for the latest available version...
33
- 1password (6.3.2)
34
- atom (1.10.2)
37
+ ==> Outdated cask...
38
+ omnioutliner (4.6.1) != 5.2
39
+ scrivener (2.81.2,106) != 3.0.1,966
35
40
 
36
- Upgrade 1password? [y/n] n
41
+ Not upgrading pinned package:
42
+ ["iterm2", "omniplan1", "omnioutliner", "sketch"]
37
43
 
38
- Upgrade atom? [y/n] y
44
+ Upgrade scrivener? [y/n] yes
39
45
 
40
- ==> Install atom
46
+ ==> Upgrade scrivener
41
47
  ==> Satisfying dependencies
42
- complete
43
- ==> Downloading https://github.com/atom/atom/releases/download/v1.10.2/atom-mac.zip
44
- ############################################################################################################################## 100.0%
45
- ==> Verifying checksum for Cask atom
46
- ==> It seems there is already an App at '/Applications/Atom.app'; overwriting.
47
- ==> Removing App: '/Applications/Atom.app'
48
- ==> Moving App 'Atom.app' to '/Applications/Atom.app'
49
- ==> Symlinking Binary 'apm' to '/usr/local/bin/apm'
50
- ==> Symlinking Binary 'atom.sh' to '/usr/local/bin/atom'
51
- 🍺 atom was successfully installed!
48
+ ==> Downloading https://scrivener.s3.amazonaws.com/mac_updates/Scrivener_1012_966.zip
49
+ ######################################################################## 100.0%
50
+ ==> Verifying checksum for Cask scrivener
51
+ ==> Uninstalling Cask scrivener
52
+ ==> Moving App 'Scrivener.app' back to '/usr/local/Caskroom/scrivener/2.81.2,106/Scrivener.app'.
53
+ ==> Purging files for version 2.81.2,106 of Cask scrivener
54
+ ==> Installing Cask scrivener
55
+ ==> Moving App 'Scrivener.app' to '/Applications/Scrivener.app'.
56
+ 🍺 scrivener was successfully installed!
52
57
  ```
53
58
 
54
59
  `bcupgrade` with arguments to check & upgrade selected casks.
@@ -62,10 +67,9 @@ complete
62
67
 
63
68
  ```
64
69
  % bcupgrade --help
65
- Usage: bcupgrade [options] [cask1 cask2 ...]
66
- -d, --dry-run Check version without installing
67
- -r, --remove Remove previous version with installing
68
- -y, --yes Install cask without prompt
70
+ Usage: bcupgrade [options] [cask1 cask2...]
71
+ -d, --dry-run Check outdated cask without upgrading
72
+ -y, --yes Automatic yes to prompts
69
73
  -v, --version Show version number
70
74
  ```
71
75
 
@@ -77,34 +81,12 @@ If you want to ignore upgrade casks, you can add settings in the user's `~/.bcup
77
81
  ```
78
82
  ignore:
79
83
  - iterm2
84
+ - omniplan1
85
+ - omnioutliner
80
86
  - sketch
81
87
  ```
82
88
 
83
-
84
-
85
-
86
- ## Requirement
87
-
88
- - [Homebrew Cask](https://caskroom.github.io/) v0.60.1+
89
-
90
-
91
- This script uses `brew cask info` result.
92
-
93
- ```
94
- % brew cask info atom
95
- atom: 1.10.2
96
- https://atom.io/
97
- /usr/local/Caskroom/atom/1.7.3 (does not exist)
98
- /usr/local/Caskroom/atom/1.8.0 (68B)
99
- /usr/local/Caskroom/atom/1.9.0 (2,546 files, 224.9M)
100
- From: https://github.com/caskroom/homebrew-cask/blob/master/Casks/atom.rb
101
- ==> Name
102
- Github Atom
103
- ==> Artifacts
104
- Atom.app (app)
105
- /Applications/Atom.app/Contents/Resources/app/apm/node_modules/.bin/apm (binary)
106
- /Applications/Atom.app/Contents/Resources/app/atom.sh (binary)
107
- ```
89
+ To stop from being upgraded: like `brew cask pin`
108
90
 
109
91
 
110
92
 
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'bundler/gem_tasks'
3
4
  require 'rspec/core/rake_task'
4
5
  require 'rubocop/rake_task'
@@ -6,4 +7,4 @@ require 'rubocop/rake_task'
6
7
  RSpec::Core::RakeTask.new(:spec)
7
8
  RuboCop::RakeTask.new
8
9
 
9
- task default: %i(rubocop spec)
10
+ task default: %i[rubocop spec]
data/bcupgrade.gemspec CHANGED
@@ -1,4 +1,3 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  lib = File.expand_path('../lib', __FILE__)
@@ -15,7 +14,7 @@ Gem::Specification.new do |spec|
15
14
  spec.description = 'Upgrade all installed brew casks.'
16
15
  spec.homepage = 'https://github.com/DriftwoodJP/bcupgrade'
17
16
  spec.license = 'MIT'
18
- spec.required_ruby_version = '>= 2.0.0.648'
17
+ spec.required_ruby_version = '>= 2.3.3'
19
18
 
20
19
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
21
20
  # to allow pushing to a single host or delete this section to allow pushing to any host.
@@ -33,11 +32,11 @@ Gem::Specification.new do |spec|
33
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
33
  spec.require_paths = ['lib']
35
34
 
36
- spec.add_development_dependency 'bundler', '~> 1.16.0'
35
+ spec.add_development_dependency 'bundler', '~> 1.16.1'
36
+ spec.add_development_dependency 'pry', '~> 0.11.3'
37
+ spec.add_development_dependency 'pry-byebug', '~> 3.5.1'
37
38
  spec.add_development_dependency 'rake', '~> 12.3.0'
38
39
  spec.add_development_dependency 'rspec', '~> 3.7.0'
39
- spec.add_development_dependency 'rubocop', '~> 0.51.0'
40
- spec.add_development_dependency 'rubocop-rspec', '~> 1.20.1'
41
- spec.add_development_dependency 'pry', '~> 0.11.3'
42
- spec.add_development_dependency 'pry-byebug', '~> 3.5.0'
40
+ spec.add_development_dependency 'rubocop', '~> 0.52.1'
41
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.21.0'
43
42
  end
data/exe/bcupgrade CHANGED
@@ -8,16 +8,13 @@ require 'readline'
8
8
  OptionParser.new do |opt|
9
9
  begin
10
10
  opt.program_name = File.basename($PROGRAM_NAME)
11
- opt.banner = "Usage: #{opt.program_name} [options] [cask1 cask2 ...]"
11
+ opt.banner = "Usage: #{opt.program_name} [options] [cask1 cask2...]"
12
12
 
13
13
  options = {}
14
- opt.on('-d', '--dry-run', 'Check version without installing') do |v|
14
+ opt.on('-d', '--dry-run', 'Check outdated cask without upgrading') do |v|
15
15
  options[:dry_run] = v
16
16
  end
17
- opt.on('-r', '--remove', 'Remove previous version with installing') do |v|
18
- options[:remove] = v
19
- end
20
- opt.on('-y', '--yes', 'Install cask without prompt') do |v|
17
+ opt.on('-y', '--yes', 'Automatic yes to prompts') do |v|
21
18
  options[:install] = v
22
19
  end
23
20
  opt.on('-v', '--version', 'Show version number') do
@@ -28,7 +25,7 @@ OptionParser.new do |opt|
28
25
  args = opt.parse!(ARGV)
29
26
 
30
27
  Bcupgrade.run(options, args)
31
- rescue => e
28
+ rescue StandardError => e
32
29
  puts "Error: #{e}.\nSee #{opt}"
33
30
  exit
34
31
  end
@@ -1,20 +1,17 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Bcupgrade
3
4
  module BrewCask
4
- def self.list
5
- `brew cask list`
6
- end
7
-
8
- def self.info(cask)
9
- `brew cask info #{cask}`
5
+ def self.outdated
6
+ `brew cask outdated --quiet`
10
7
  end
11
8
 
12
- def self.remove(cask)
13
- system "brew cask uninstall --force #{cask}"
9
+ def self.output_outdated
10
+ system 'brew cask outdated'
14
11
  end
15
12
 
16
13
  def self.install(cask)
17
- system "brew cask install --force #{cask}"
14
+ system "brew cask reinstall #{cask}"
18
15
  end
19
16
  end
20
17
  end
@@ -1,101 +1,65 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'yaml'
3
4
 
4
5
  module Bcupgrade
5
6
  class Cask
6
- attr_reader :installed_casks, :error_casks
7
+ attr_reader :config, :args, :target
7
8
 
8
9
  def initialize(options, args)
9
- @config = config
10
+ @config = load_config
10
11
  @options = options
11
- @args = args.uniq
12
- @list = upgrade_target
13
- @installed_casks = @list[0]
14
- @error_casks = @list[1]
15
- end
16
-
17
- def check_version
18
- update_casks = []
19
-
20
- @installed_casks.each do |name|
21
- cask_info = BrewCask.info(name)
22
- version_number = trim_latest_version(cask_info)
23
-
24
- string = "/#{name}/#{version_number}"
25
- latest_version = cask_info.include?(string) ? nil : version_number
26
-
27
- if latest_version
28
- puts "#{name} (#{latest_version})"
29
- update_casks.push(name)
30
- end
31
- end
32
-
33
- update_casks
12
+ @args = args.uniq
13
+ @target = upgrade_target
34
14
  end
35
15
 
36
16
  def upgrade_version(casks)
37
17
  return if @options[:dry_run]
38
18
 
39
19
  casks.each do |cask|
40
- input = if @options[:install]
41
- 'y'
42
- else
43
- Readline.readline("\nUpgrade #{cask}? [y/n] ")
44
- end
45
- next unless input == 'y'
20
+ next unless prompt_answer_yes?(cask)
46
21
 
47
- if @options[:remove]
48
- puts "\n==> Remove #{cask}"
49
- BrewCask.remove(cask)
50
- end
51
-
52
- puts "\n==> Install #{cask}"
22
+ puts "\n==> Upgrade #{cask}"
53
23
  BrewCask.install(cask)
54
24
  end
55
25
  end
56
26
 
57
27
  private
58
28
 
59
- def config
29
+ def load_config
60
30
  file = File.join(ENV['HOME'], '.bcupgrade')
61
31
  YAML.load_file(file) if File.exist?(file)
62
32
  end
63
33
 
64
34
  def upgrade_target
65
35
  if @args.any?
66
- trim_target_to_a(@args)
36
+ @args
67
37
  else
68
- check_target = trim_target_to_a(BrewCask.list.split(/\n/))
69
- [trim_ignore_casks(check_target[0]), check_target[1]]
70
- end
71
- end
72
-
73
- def trim_target_to_a(array)
74
- installed_casks = []
75
- error_casks = []
76
-
77
- array.each do |cask|
78
- if cask.include?(' (!)')
79
- error_casks.push(cask.delete(' (!)'))
80
- else
81
- installed_casks.push(cask)
82
- end
38
+ outdated = BrewCask.outdated.split(/\n/)
39
+ exclude_ignore_casks(outdated)
83
40
  end
84
-
85
- [installed_casks, error_casks]
86
41
  end
87
42
 
88
- def trim_ignore_casks(casks)
43
+ def exclude_ignore_casks(casks)
89
44
  if @config.nil?
90
45
  casks
91
46
  else
92
- casks - Array(@config['ignore'])
47
+ ignore = Array(@config['ignore'])
48
+ casks - ignore
93
49
  end
94
50
  end
95
51
 
96
- def trim_latest_version(cask_info)
97
- lines = cask_info.split(/\n/)
98
- lines[0]&.gsub(/.+: (.+)/, '\1')
52
+ def prompt_answer_yes?(cask)
53
+ input = if @options[:install]
54
+ 'y'
55
+ else
56
+ Readline.readline("\nUpgrade #{cask}? [y/n] ")
57
+ end
58
+ if input.casecmp('y').zero? || input.casecmp('yes').zero?
59
+ true
60
+ else
61
+ false
62
+ end
99
63
  end
100
64
  end
101
65
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Bcupgrade
3
- VERSION = '0.3.4'
4
+ VERSION = '0.9.0'
4
5
  end
data/lib/bcupgrade.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative 'bcupgrade/version'
3
4
  require_relative 'bcupgrade/brew_cask'
4
5
  require_relative 'bcupgrade/cask'
@@ -7,22 +8,15 @@ module Bcupgrade
7
8
  def self.run(options, args)
8
9
  cask = Cask.new(options, args)
9
10
 
10
- # Check cask list
11
- puts "\n==> Check 'brew cask list'...\n"
12
-
13
- installed_casks = cask.installed_casks
14
- error_casks = cask.error_casks
11
+ unless cask.args.any?
12
+ puts "\n==> Outdated cask...\n"
13
+ BrewCask.output_outdated
15
14
 
16
- puts "#{installed_casks}\n"
17
- if error_casks.any?
18
- puts "\nSkip re-install: can't found brew cask info\n#{error_casks}\n"
15
+ ignore = cask.config['ignore']
16
+ puts "\nNot upgrading pinned package:\n#{ignore}" if ignore
19
17
  end
20
18
 
21
- # Check cask version
22
- puts "\n==> Check 'brew cask info'...\n"
23
- update_casks = cask.check_version
24
-
25
- # Upgrade cask
19
+ update_casks = cask.target
26
20
  if update_casks.any?
27
21
  cask.upgrade_version(update_casks)
28
22
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcupgrade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DriftwoodJP
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-20 00:00:00.000000000 Z
11
+ date: 2018-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,98 +16,98 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.16.0
19
+ version: 1.16.1
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.16.0
26
+ version: 1.16.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 12.3.0
33
+ version: 0.11.3
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 12.3.0
40
+ version: 0.11.3
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: pry-byebug
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.7.0
47
+ version: 3.5.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.7.0
54
+ version: 3.5.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: rubocop
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.51.0
61
+ version: 12.3.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.51.0
68
+ version: 12.3.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubocop-rspec
70
+ name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.20.1
75
+ version: 3.7.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.20.1
82
+ version: 3.7.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: pry
84
+ name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.11.3
89
+ version: 0.52.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.11.3
96
+ version: 0.52.1
97
97
  - !ruby/object:Gem::Dependency
98
- name: pry-byebug
98
+ name: rubocop-rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 3.5.0
103
+ version: 1.21.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 3.5.0
110
+ version: 1.21.0
111
111
  description: Upgrade all installed brew casks.
112
112
  email:
113
113
  - DriftwoodJP@users.noreply.github.com
@@ -147,7 +147,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
147
  requirements:
148
148
  - - ">="
149
149
  - !ruby/object:Gem::Version
150
- version: 2.0.0.648
150
+ version: 2.3.3
151
151
  required_rubygems_version: !ruby/object:Gem::Requirement
152
152
  requirements:
153
153
  - - ">="