unwrappr 0.3.1 → 0.3.2

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
  SHA256:
3
- metadata.gz: c4e1cd568dbe3c7626deb05ad7f66a4f1d87a10ff67fbfc97b0b793031e10943
4
- data.tar.gz: abf1f934ba7260f37d68f7a63cd79cc927fc65500bedd587a43edb66fe9bf960
3
+ metadata.gz: 57128e02d34b1fcc40925c9b351f33facf1151c2e1ebc6487cc287df16503f04
4
+ data.tar.gz: c1f7fac65bedbde6ddcf5229ff97b4337fbf488171dcdfa62acf38dc2e254d85
5
5
  SHA512:
6
- metadata.gz: 436d2319f96351bf50328384c4ffc7c9d61c15d76a7190a6c45722691df4b583106d8622f3c16dbe6d6844bf8f7d997c45b9fd9879cffaa6fa2a8aa1f516b85c
7
- data.tar.gz: 2790650d27ee7c58b0910d093b3478b4a4c8f568b5dd5c13c45a7f091198f16e32a93763378774e37dd5f68e5e22d7dc7c5189c9e823add8fcbdb4612c7e4828
6
+ metadata.gz: c3e26ba787dc0b1bd65debc91dcb9ef9aa771bcee690a96acd7f28c4a62fcd3aca65aa62885129b400baf147338fd74cff627e1f94c1431f4ed08f5df2d0016b
7
+ data.tar.gz: 536437315c3e31dba35eec20a2d6d2cb6b0212cee750519afa6cde9cee75267ee4b814b43f3221daa534b6b353a36610a34a9eb639d578d32ed600cbf4ea4237
data/.rubocop.yml CHANGED
@@ -1,9 +1,12 @@
1
1
  ---
2
2
  AllCops:
3
- TargetRubyVersion: 2.5.1
3
+ TargetRubyVersion: 2.5
4
4
  Exclude:
5
5
  - 'spike/*.rb'
6
6
 
7
+ Gemspec/RequiredRubyVersion:
8
+ Enabled: false
9
+
7
10
  Metrics/BlockLength:
8
11
  Exclude:
9
12
  - 'spec/**/*'
data/CHANGELOG.md CHANGED
@@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.3.2] 2018-11-13
10
+ ### Added
11
+ - Specify Ruby and RubyGems requirements in gemspec.
12
+ - Clone one git repository or more and create an annotated bundle update PR for each.
13
+
9
14
  ## [0.3.1] 2018-11-12
10
15
  ### Changed
11
16
  - Travis CI enabled
data/README.md CHANGED
@@ -50,6 +50,15 @@ export GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
50
50
  unwrappr
51
51
  ```
52
52
 
53
+ To run `unwrappr` against repositories as a part of a time-based job
54
+ scheduler, use the `clone` subcommand and specify as many `--repo` options as
55
+ you need:
56
+
57
+ ```bash
58
+ export GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
59
+ unwrappr clone --repo envato/abc [[--repo envato/xyz] ...]
60
+ ```
61
+
53
62
  See https://github.com/settings/tokens to set up personal access tokens.
54
63
 
55
64
  ## Requirements
data/lib/unwrappr/cli.rb CHANGED
@@ -2,12 +2,13 @@
2
2
 
3
3
  require 'clamp'
4
4
 
5
+ # Welcome to unwrappr...
5
6
  module Unwrappr
6
7
  # Entry point for the app
7
8
  class CLI < Clamp::Command
8
9
  self.default_subcommand = 'all'
9
10
 
10
- option ['--version', '-v'], :flag, 'Show version' do
11
+ option ['-v', '--version'], :flag, 'Show version' do
11
12
  puts "unwrappr v#{Unwrappr::VERSION}"
12
13
  exit(0)
13
14
  end
@@ -15,22 +16,18 @@ module Unwrappr
15
16
  subcommand 'all', 'run bundle update, push to github, '\
16
17
  'create a pr and annotate changes' do
17
18
  def execute
18
- puts 'Doing the unwrappr thing...'
19
- GitCommandRunner.create_branch!
20
- BundlerCommandRunner.bundle_update!
21
- GitCommandRunner.commit_and_push_changes!
22
- GitHub::Client.make_pull_request!
19
+ Unwrappr.run_unwapper_in_pwd
23
20
  end
24
21
  end
25
22
 
26
23
  subcommand 'annotate-pull-request',
27
24
  'Annotate Gemfile.lock changes in a Github pull request' do
28
25
 
29
- option '--repo', 'REPO',
26
+ option ['-r', '--repo'], 'REPO',
30
27
  'The repo in github <owner/project>',
31
28
  required: true
32
29
 
33
- option '--pr', 'PR',
30
+ option ['-p', '--pr'], 'PR',
34
31
  'The github PR number',
35
32
  required: true
36
33
 
@@ -41,5 +38,46 @@ module Unwrappr
41
38
  )
42
39
  end
43
40
  end
41
+
42
+ subcommand('clone', <<~DESCRIPTION) do
43
+ Clone one git repository or more and create an annotated bundle update PR for each.
44
+ DESCRIPTION
45
+
46
+ option(['-r', '--repo'],
47
+ 'REPO',
48
+ <<~DESCRIPTION,
49
+ a repo in github <owner/project>, may be specified multiple times
50
+ DESCRIPTION
51
+ required: true,
52
+ multivalued: true)
53
+
54
+ def execute
55
+ repo_list.each do |repo|
56
+ unless Dir.exist?(repo)
57
+ GitCommandRunner.clone_repository(
58
+ "https://github.com/#{repo}",
59
+ repo
60
+ )
61
+ end
62
+
63
+ Dir.chdir(repo) { Unwrappr.run_unwapper_in_pwd }
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ def self.run_unwapper_in_pwd
70
+ return unless lockfile_present?
71
+
72
+ puts "Doing the unwrappr thing in #{Dir.pwd}"
73
+
74
+ GitCommandRunner.create_branch!
75
+ BundlerCommandRunner.bundle_update!
76
+ GitCommandRunner.commit_and_push_changes!
77
+ GitHub::Client.make_pull_request!
78
+ end
79
+
80
+ def self.lockfile_present?
81
+ GitCommandRunner.file_exist?('Gemfile.lock')
44
82
  end
45
83
  end
@@ -45,13 +45,6 @@ module Unwrappr
45
45
  def segment(index)
46
46
  segment = @version.canonical_segments[index] || 0
47
47
  (segment.is_a?(Numeric) ? segment : nil)
48
- rescue NoMethodError
49
- abort(<<~MESSAGE)
50
- Unwrappr requires RubyGems v2.7.0 or newer.
51
-
52
- To upgrade to the latest RubyGems visit https://rubygems.org/pages/download
53
-
54
- MESSAGE
55
48
  end
56
49
  end
57
50
  end
@@ -36,6 +36,14 @@ module Unwrappr
36
36
  git.current_branch
37
37
  end
38
38
 
39
+ def clone_repository(repo, directory)
40
+ git_wrap { Git.clone(repo, directory) }
41
+ end
42
+
43
+ def file_exist?(filename)
44
+ !git.ls_files(filename).empty?
45
+ end
46
+
39
47
  private
40
48
 
41
49
  def git_dir?
@@ -63,11 +71,17 @@ module Unwrappr
63
71
  end
64
72
 
65
73
  def git
66
- log_options = {}.tap do |opt|
67
- opt[:log] = Logger.new(STDOUT) if ENV['DEBUG']
74
+ if Dir.pwd == @git&.dir&.path
75
+ @git
76
+ else
77
+ Git.open(Dir.pwd, log_options)
68
78
  end
79
+ end
69
80
 
70
- @git ||= Git.open(Dir.pwd, log_options)
81
+ def log_options
82
+ {}.tap do |opt|
83
+ opt[:log] = Logger.new(STDOUT) if ENV['DEBUG']
84
+ end
71
85
  end
72
86
 
73
87
  def git_wrap
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Unwrappr
4
- VERSION = '0.3.1'
4
+ VERSION = '0.3.2'
5
5
  end
data/unwrappr.gemspec CHANGED
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength:
22
22
  spec.description = 'bundle update PRs: Automated. Annotated.'
23
23
  spec.homepage = 'http://www.unwrappr.com.org'
24
24
  spec.license = 'MIT'
25
+ spec.required_ruby_version = '~> 2.3'
26
+ spec.required_rubygems_version = '~> 2.7'
25
27
 
26
28
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
29
  f.match(%r{^(test|spec|features)/})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unwrappr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emilyn Escabarte
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: exe
14
14
  cert_chain: []
15
- date: 2018-11-12 00:00:00.000000000 Z
15
+ date: 2018-11-13 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: bundler
@@ -282,14 +282,14 @@ require_paths:
282
282
  - lib
283
283
  required_ruby_version: !ruby/object:Gem::Requirement
284
284
  requirements:
285
- - - ">="
285
+ - - "~>"
286
286
  - !ruby/object:Gem::Version
287
- version: '0'
287
+ version: '2.3'
288
288
  required_rubygems_version: !ruby/object:Gem::Requirement
289
289
  requirements:
290
- - - ">="
290
+ - - "~>"
291
291
  - !ruby/object:Gem::Version
292
- version: '0'
292
+ version: '2.7'
293
293
  requirements: []
294
294
  rubyforge_project:
295
295
  rubygems_version: 2.7.6