gem_check_updates 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f424cad5db49b49cbf966732795dd3f828ab48b17c9a5fb0b348c767461c6495
4
+ data.tar.gz: d415ff27e604837a81a5a7b15c6f0c8ad9da30e718dc13d9d627a9d097527bfc
5
+ SHA512:
6
+ metadata.gz: 6dbe30b347d14bf747f567af88abf3f5a3db91844d7c578adec4ede7c7299875bf5ddbe17f56ed269505fdbfd4d8e7312fe23721d1b8273d0bea5d870818ab71
7
+ data.tar.gz: dcb64602b4f4896f0013542ce0a864347909c5bf93d9bf688d450973f82191588eb4f1c1edc3dcc878fd42192b9e001ce80b0637cc7526453ab6030281feea7e
data/.DS_Store ADDED
Binary file
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ /vendor/bundle
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ sudo: false
2
+ language: ruby
3
+ cache: bundler
4
+ rvm:
5
+ - 2.5.1
6
+ before_install: gem install bundler -v 1.16.3
7
+ deploy:
8
+ provider: rubygems
9
+ api_key:
10
+ secure: Pbe2FUaQIe+pxgVOt6x9I5qA5BZNZHARdHlJpLEPpCjCUtsGQyOiPsjH6LeOACrR3jJhKqoqXacFkC6DfS1zLX8xhqBPoVfZNhuLOnST3hdru1sC3fauCtCym5/WxrGwn7qZvg6x39lUI0LhVp+3wOVw9ZoniYZwW8/mx93FZ8dUaNg567sYcYmFeLyeQKOKWInY8WiEPDU/jEgLMR4oEiwEhTwAgw6jpKwRPvkQfe8OsYASHjxQYRkAByE6Tzoy3PpBHz9tBEEUH1bCy1EWDExMcGXtl421WJw8+s2HjR/RJSHIaVschVD2OsI4xL/mqeSqLJuQdge2DH7p+Y9a7JB0ZYyBscPQW68gEVs5mkQJH9k9gJ3zHJ+DQ+o7rKBmdy+g9LOxcaPFAt1d+Hel4YSfQb2J29n4ydrigYoDz2Cpid3mzEEA8WbfpLGB8rjnw7FnemqoxGEQcSqg7rwAy3i47e3aa+LY5RbFjmCKdvAcbyhiGsbPGeePfqzAWkusP77jRA6P/evqpfLh1nMb284nw5gvWBc/EMvZfkZv3P53DK7Yo6zdrj7a6CBU9VRGN2VbyOdUpFDdS5kxO0xv+O+BgbBj31KAfHXQBgV2Qj983fYiYdjiuum30p1P9thyeYsF0/9mknGHs2sGIkl21hCceA3JasUmyo/I0eZsg/A=
11
+ gem: gem_check_updates
12
+ on:
13
+ branch: master
14
+ tags: true
15
+ repo: mukopikmin/gem_check_updates
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in gem_check_updates.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,65 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gem_check_updates (0.0.1)
5
+ colored (~> 1.2)
6
+ rest-client (~> 2.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ addressable (2.5.2)
12
+ public_suffix (>= 2.0.2, < 4.0)
13
+ colored (1.2)
14
+ crack (0.4.3)
15
+ safe_yaml (~> 1.0.0)
16
+ diff-lcs (1.3)
17
+ domain_name (0.5.20180417)
18
+ unf (>= 0.0.5, < 1.0.0)
19
+ hashdiff (0.3.7)
20
+ http-cookie (1.0.3)
21
+ domain_name (~> 0.5)
22
+ mime-types (3.2.2)
23
+ mime-types-data (~> 3.2015)
24
+ mime-types-data (3.2018.0812)
25
+ netrc (0.11.0)
26
+ public_suffix (3.0.3)
27
+ rake (10.5.0)
28
+ rest-client (2.0.2)
29
+ http-cookie (>= 1.0.2, < 2.0)
30
+ mime-types (>= 1.16, < 4.0)
31
+ netrc (~> 0.8)
32
+ rspec (3.8.0)
33
+ rspec-core (~> 3.8.0)
34
+ rspec-expectations (~> 3.8.0)
35
+ rspec-mocks (~> 3.8.0)
36
+ rspec-core (3.8.0)
37
+ rspec-support (~> 3.8.0)
38
+ rspec-expectations (3.8.1)
39
+ diff-lcs (>= 1.2.0, < 2.0)
40
+ rspec-support (~> 3.8.0)
41
+ rspec-mocks (3.8.0)
42
+ diff-lcs (>= 1.2.0, < 2.0)
43
+ rspec-support (~> 3.8.0)
44
+ rspec-support (3.8.0)
45
+ safe_yaml (1.0.4)
46
+ unf (0.1.4)
47
+ unf_ext
48
+ unf_ext (0.0.7.5)
49
+ webmock (3.4.2)
50
+ addressable (>= 2.3.6)
51
+ crack (>= 0.3.2)
52
+ hashdiff
53
+
54
+ PLATFORMS
55
+ ruby
56
+
57
+ DEPENDENCIES
58
+ bundler (~> 1.16)
59
+ gem_check_updates!
60
+ rake (~> 10.0)
61
+ rspec (~> 3.0)
62
+ webmock (~> 3.4)
63
+
64
+ BUNDLED WITH
65
+ 1.16.3
data/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # Gem Check Updates
2
+
3
+ Update the version of gems in Gemfile.
4
+ This gem is inspired by [tjunnone/npm-check-updates](https://github.com/tjunnone/npm-check-updates).
5
+
6
+ ## Installation
7
+
8
+ $ gem install gem_check_updates
9
+
10
+ ## Usage
11
+
12
+ See references with option `-h` or `--help`.
13
+
14
+ $ gem-check-updates
15
+
16
+ Also you can run command as follows.
17
+
18
+ $ gcu
19
+
20
+ ## Development
21
+
22
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
23
+
24
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
25
+
26
+ ## Contributing
27
+
28
+ Bug reports and pull requests are welcome on GitHub at https://github.com/mukopikmin/gem_check_updates.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "gem_check_updates"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/exe/gcu ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "gem_check_updates"
4
+
5
+ GemCheckUpdates::Runner.run(ARGV)
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "gem_check_updates"
4
+
5
+ GemCheckUpdates::Runner.run(ARGV)
@@ -0,0 +1,40 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "gem_check_updates/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "gem_check_updates"
7
+ spec.version = GemCheckUpdates::VERSION
8
+ spec.authors = ["Yusuke Mukai"]
9
+ spec.email = ["opposite0302@gmail.com"]
10
+
11
+ spec.summary = "Auto update Gemfile"
12
+ spec.description = "Automatically update gems written in Gemfile"
13
+ spec.homepage = "https://github.com/mukopikmin/gem-check-updates"
14
+
15
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
16
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
17
+ if spec.respond_to?(:metadata)
18
+ spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
19
+ else
20
+ raise "RubyGems 2.0 or newer is required to protect against " \
21
+ "public gem pushes."
22
+ end
23
+
24
+ # Specify which files should be added to the gem when it is released.
25
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
26
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
27
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.16"
34
+ spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "rspec", "~> 3.0"
36
+ spec.add_development_dependency "webmock", "~> 3.4"
37
+
38
+ spec.add_dependency "rest-client", "~> 2.0"
39
+ spec.add_dependency "colored", "~> 1.2"
40
+ end
data/lib/.DS_Store ADDED
Binary file
@@ -0,0 +1,33 @@
1
+ module GemCheckUpdates
2
+ RUBYGEMS_API = 'https://rubygems.org/api/v1/versions'.freeze
3
+
4
+ class Gem
5
+ attr_reader :name,
6
+ :latest_version,
7
+ :current_version,
8
+ :version_range
9
+
10
+ def initialize(name: nil, current_version: nil, version_range: nil)
11
+ @name = name
12
+ @current_version = current_version
13
+ @version_range = version_range
14
+
15
+ check_update!
16
+ end
17
+
18
+ def update_available?
19
+ !@latest_version.nil? && @current_version != '0' && @latest_version > @current_version
20
+ end
21
+
22
+ def check_update!
23
+ response = RestClient.get("#{RUBYGEMS_API}/#{name}/latest.json")
24
+ version = JSON.parse(response.body)['version']
25
+
26
+ @latest_version = version
27
+ rescue
28
+ @latest_version = nil
29
+
30
+ puts "Failed to check version \"#{@name}\".".red
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,87 @@
1
+ module GemCheckUpdates
2
+ class Gemfile
3
+ attr_reader :gems
4
+
5
+ def initialize(file)
6
+ @file = file
7
+ @gems = parse
8
+ end
9
+
10
+ def file_backup
11
+ "#{@file}.backup"
12
+ end
13
+
14
+ def backup
15
+ FileUtils.cp(@file, file_backup)
16
+ end
17
+
18
+ def restore
19
+ FileUtils.mv(file_backup, @file)
20
+ remove_backup
21
+ end
22
+
23
+ def remove_backup
24
+ FileUtils.rm(file_backup)
25
+ end
26
+
27
+ def parse
28
+ gems = Bundler::Definition.build(@file, nil, nil).dependencies.map do |gem|
29
+ print '.'
30
+
31
+ name = gem.name
32
+ version_range, version = gem.requirements_list.first.split(' ')
33
+
34
+ Gem.new(name: name,
35
+ current_version: version,
36
+ version_range: version_range)
37
+
38
+ end
39
+
40
+ puts
41
+ puts
42
+
43
+ gems
44
+ end
45
+
46
+ def update
47
+ backup
48
+
49
+ File.open(file_backup) do |current|
50
+ File.open(@file, 'w') do |updated|
51
+ current.each_line do |line|
52
+ if matcher = line.match(/gem ['"](.+?)['"]\s*,\s*['"][>=|~>]*\s+(.+?)['"]/)
53
+ _, name, old_version = *matcher
54
+ target = @gems.find { |gem| gem.name == name }
55
+
56
+ line.gsub!(old_version, target.latest_version) unless target.nil?
57
+ end
58
+
59
+ updated.puts(line)
60
+ end
61
+ end
62
+ end
63
+
64
+ show_version_diff
65
+ remove_backup
66
+ rescue StandardError => e
67
+ restore
68
+ puts e.message.red
69
+ end
70
+
71
+ def show_version_diff
72
+ puts 'Following gems can be updated.'
73
+ puts 'If you want to apply these updates, run command with option \'-a\'.'
74
+ puts ' (Caution: This option will overwrite your Gemfile)'.red
75
+ puts
76
+
77
+ @gems.each do |gem|
78
+ if gem.update_available?
79
+ puts " #{gem.name} \"#{gem.version_range} #{gem.current_version}\" → \"#{gem.version_range} #{gem.latest_version.green}\""
80
+ end
81
+ end
82
+
83
+ puts
84
+ puts
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,9 @@
1
+ module GemCheckUpdates
2
+ module Message
3
+ USAGE = <<-USAGE
4
+ Gem Check Updates
5
+
6
+ Usage: gem-check-updates [path/to/Gemfile]
7
+ USAGE
8
+ end
9
+ end
@@ -0,0 +1,34 @@
1
+ module GemCheckUpdates
2
+ class Runner
3
+ def self.run(argv)
4
+ options = parse_options(argv)
5
+ gemfile = Gemfile.new(options[:file])
6
+
7
+ if options[:apply]
8
+ gemfile.update
9
+ else
10
+ gemfile.show_version_diff
11
+ end
12
+ end
13
+
14
+ def self.parse_options(argv)
15
+ op = OptionParser.new
16
+ options = {
17
+ file: './Gemfile',
18
+ apply: false,
19
+ # major: false,
20
+ # minor: false,
21
+ # patch: false
22
+ }
23
+
24
+ OptionParser.new do |opt|
25
+ opt.on('-f Gemfile', '--file', "Path to Gemfile (default: #{options[:file]})") { |v| options[:file] = v }
26
+ opt.on('-a', '--apply', "Apply updates (default: #{options[:apply]})") { |v| options[:apply] = v }
27
+
28
+ opt.parse!(argv)
29
+ end
30
+
31
+ options
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,3 @@
1
+ module GemCheckUpdates
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,15 @@
1
+ require 'bundler'
2
+ require 'fileutils'
3
+ require 'optparse'
4
+ require 'rest-client'
5
+ require 'colored'
6
+ require 'json'
7
+
8
+ require 'gem_check_updates/version'
9
+ require 'gem_check_updates/message'
10
+ require 'gem_check_updates/gemfile'
11
+ require 'gem_check_updates/gem'
12
+ require 'gem_check_updates/runner'
13
+
14
+ module GemCheckUpdates
15
+ end
data/run.rb ADDED
@@ -0,0 +1,3 @@
1
+ require './lib/gem_check_updates'
2
+
3
+ GemCheckUpdates::Runner.run(ARGV)
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gem_check_updates
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Yusuke Mukai
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-09-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.4'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.4'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rest-client
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: colored
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.2'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.2'
97
+ description: Automatically update gems written in Gemfile
98
+ email:
99
+ - opposite0302@gmail.com
100
+ executables:
101
+ - gcu
102
+ - gem-check-updates
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".DS_Store"
107
+ - ".gitignore"
108
+ - ".rspec"
109
+ - ".travis.yml"
110
+ - Gemfile
111
+ - Gemfile.lock
112
+ - README.md
113
+ - Rakefile
114
+ - bin/console
115
+ - bin/setup
116
+ - exe/gcu
117
+ - exe/gem-check-updates
118
+ - gem_check_updates.gemspec
119
+ - lib/.DS_Store
120
+ - lib/gem_check_updates.rb
121
+ - lib/gem_check_updates/gem.rb
122
+ - lib/gem_check_updates/gemfile.rb
123
+ - lib/gem_check_updates/message.rb
124
+ - lib/gem_check_updates/runner.rb
125
+ - lib/gem_check_updates/version.rb
126
+ - run.rb
127
+ homepage: https://github.com/mukopikmin/gem-check-updates
128
+ licenses: []
129
+ metadata:
130
+ allowed_push_host: 'TODO: Set to ''http://mygemserver.com'''
131
+ post_install_message:
132
+ rdoc_options: []
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ requirements: []
146
+ rubyforge_project:
147
+ rubygems_version: 2.7.7
148
+ signing_key:
149
+ specification_version: 4
150
+ summary: Auto update Gemfile
151
+ test_files: []