rake_github 0.12.0.pre.5 → 0.13.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
  SHA256:
3
- metadata.gz: eefb4078b238e62e43d8981006e9ef4f2c8828907ccb818298d1bc105e024e10
4
- data.tar.gz: ce8500f07372641a5b2b4b97c16c1f4345ccf733261885888f65fc8ab473bfc5
3
+ metadata.gz: e681b119e0871c6a48498ff49f47176c0b8dd5bdd77c5636ce0c7823a64d4ed1
4
+ data.tar.gz: 648b89238400eeff449d6ea5b985d50d193c8b3229f11ca553fd9a45bb3022dc
5
5
  SHA512:
6
- metadata.gz: d93931749dc0d299a79a735d49e56f83acb0d94e672ad1a610ae6f7ac6c0f8ae440c2f7d64ea55cfc7b65a7d71fe3f19a861b1881edd85ce9e0c88d7245cc561
7
- data.tar.gz: 6c793a70446a397c602a2c39f85bb580dc378f478fb1749889bd85b482789bd4809cdd3f91c0e2889fda4d16660ba6e0e24a82ee2b3707691425dbce04f9bc81
6
+ metadata.gz: dd083f46c5b75bef9a89032d4b99657f6e26ed29536931d46b1d7a682ef2c51f19099876fbf22a7ff6b8e4330199f208d05112b7812f7f733ae5463c1ad40d0c
7
+ data.tar.gz: afb1d7b05bba3c8a1fb021b9cca4a5ae4514a1a3882feb6f96b4578b02e73d6131c3fea893438e8afc994f1027ea5a3948311ea2cd3424837c6032d95a941d25
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake_github (0.12.0.pre.5)
4
+ rake_github (0.13.0)
5
5
  colored2 (~> 3.1)
6
- octokit (>= 4.16, < 8.0)
6
+ octokit (>= 4.16, < 9.0)
7
7
  rake_factory (~> 0.23)
8
8
  sshkey (~> 2.0)
9
9
 
@@ -55,7 +55,7 @@ GEM
55
55
  memfs (1.0.0)
56
56
  minitest (5.20.0)
57
57
  mutex_m (0.1.2)
58
- octokit (7.2.0)
58
+ octokit (8.0.0)
59
59
  faraday (>= 1, < 3)
60
60
  sawyer (~> 0.9)
61
61
  open4 (1.3.4)
data/README.md CHANGED
@@ -32,7 +32,7 @@ require 'rake_github'
32
32
  RakeGithub.define_repository_tasks(
33
33
  namespace: :github,
34
34
  repository: 'org/repo', # required
35
- ) do |t, args|
35
+ ) do |t|
36
36
  t.access_token = "your_github_access_token" # required
37
37
  t.deploy_keys = [
38
38
  {
@@ -40,25 +40,22 @@ RakeGithub.define_repository_tasks(
40
40
  public_key: File.read('path/to/your_deploy_key.public')
41
41
  }
42
42
  ]
43
- t.branch_name = args.branch_name
44
- t.commit_message = args.commit_message
45
43
  end
46
44
  ```
47
45
 
48
46
  | Parameter | Type | Required | Description | Example | Default |
49
47
  |---------------------------------|--------|----------|------------------------------------------------------------|--------------------------------------------------------|--------------------------------------|
50
- | repository | string | Y | Repository to perform tasks upon | 'organisation/repository_name' | N/A |
51
- | access_token | string | Y | Github token for authorisation | 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' | N/A |
52
- | deploy_keys | array | N | Keys to deploy to repository | { title: string, public_key: string, read_only: bool } | [ ] |
53
- | deploy_keys_namespace | symbol | N | Namespace to contain deploy keys tasks | :deploy_tasks | :deploy_keys |
54
- | deploy_keys_destroy_task_name | symbol | N | Option to change the destroy task name | :obliterate | :destroy |
55
- | deploy_keys_provision_task_name | symbol | N | Option to change the provision task name | :add | :provision |
56
- | deploy_keys_ensure_task_name | symbol | N | Option to change the ensure task name | :destroy_and_provision | :ensure |
57
- | namespace | symbol | N | Namespace for tasks to live in, defaults to root namespace | :rake_github | N/A |
58
- | branch_name | string | N | Branch that can be merged | 'cool_new_feature' | N/A |
59
- | commit_message | string | N | Merge commit message | 'merged PR using Rake Github' | "" (retains original commit message) |
48
+ | repository | string | Y | Repository to perform tasks upon | 'organisation/repository_name' | N/A |
49
+ | access_token | string | Y | Github token for authorisation | 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' | N/A |
50
+ | deploy_keys | array | N | Keys to deploy to repository | { title: string, public_key: string, read_only: bool } | [ ] |
51
+ | deploy_keys_namespace | symbol | N | Namespace to contain deploy keys tasks | :deploy_tasks | :deploy_keys |
52
+ | deploy_keys_destroy_task_name | symbol | N | Option to change the destroy task name | :obliterate | :destroy |
53
+ | deploy_keys_provision_task_name | symbol | N | Option to change the provision task name | :add | :provision |
54
+ | deploy_keys_ensure_task_name | symbol | N | Option to change the ensure task name | :destroy_and_provision | :ensure |
55
+ | namespace | symbol | N | Namespace for tasks to live in, defaults to root namespace | :rake_github | N/A |
60
56
 
61
57
  Exposes tasks:
58
+
62
59
  ```shell
63
60
  $ rake -T
64
61
 
@@ -69,18 +66,23 @@ rake github:pull_requests:merge[branch_name,commit_message]
69
66
  ```
70
67
 
71
68
  #### deploy_keys:provision
69
+
72
70
  Provisions deploy keys to the specified repository.
73
71
 
74
72
  #### deploy_keys:destroy
73
+
75
74
  Destroys deploy keys from the specified repository.
76
75
 
77
76
  #### deploy_keys:ensure
77
+
78
78
  Destroys and then provisions deploy keys on the specified repository.
79
79
 
80
80
  #### pull_requests:merge[branch_name,commit_message]
81
+
81
82
  Merges the PR associated with the `branch_name`. Branch name is required.
82
83
 
83
- `commit_message` is optional, and can contain the original commit message with the `%s` placeholder, e.g. `pull_requests:merge[new_feature,"%s [skip ci]"]`.
84
+ `commit_message` is optional, and can contain the original commit message with
85
+ the `%s` placeholder, e.g. `pull_requests:merge[new_feature,"%s [skip ci]"]`.
84
86
 
85
87
  ### define_release_task
86
88
 
@@ -121,13 +123,12 @@ openssl aes-256-cbc \
121
123
 
122
124
  ## Contributing
123
125
 
124
- Bug reports and pull requests are welcome on GitHub at
125
- https://github.com/infrablocks/rake_github. This project is intended to be a
126
- safe, welcoming space for collaboration, and contributors are expected to
127
- adhere to the [Contributor Covenant](http://contributor-covenant.org) code of
128
- conduct.
126
+ Bug reports and pull requests are welcome on GitHub at
127
+ https://github.com/infrablocks/rake_github. This project is intended to be a
128
+ safe, welcoming space for collaboration, and contributors are expected to adhere
129
+ to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
129
130
 
130
131
  ## License
131
132
 
132
- The gem is available as open source under the terms of the
133
+ The gem is available as open source under the terms of the
133
134
  [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile CHANGED
@@ -146,7 +146,7 @@ end
146
146
  RakeGithub.define_repository_tasks(
147
147
  namespace: :github,
148
148
  repository: 'infrablocks/rake_github'
149
- ) do |t, args|
149
+ ) do |t|
150
150
  github_config =
151
151
  YAML.load_file('config/secrets/github/config.yaml')
152
152
 
@@ -157,8 +157,6 @@ RakeGithub.define_repository_tasks(
157
157
  public_key: File.read('config/secrets/ci/ssh.public')
158
158
  }
159
159
  ]
160
- t.branch_name = args.branch_name
161
- t.commit_message = args.commit_message
162
160
  end
163
161
 
164
162
  namespace :pipeline do
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RakeGithub
4
+ module Exceptions
5
+ class NoPullRequest < StandardError
6
+ attr_reader :branch_name
7
+
8
+ def initialize(branch_name)
9
+ @branch_name = branch_name
10
+
11
+ super(format('No pull request associated with branch %s', branch_name))
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RakeGithub
4
+ module Exceptions
5
+ class RequiredArgumentUnset < ::StandardError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'exceptions/no_pull_request'
4
+ require_relative 'exceptions/required_argument_unset'
@@ -17,8 +17,6 @@ module RakeGithub
17
17
  parameter :deploy_keys_destroy_task_name, default: :destroy
18
18
  parameter :deploy_keys_provision_task_name, default: :provision
19
19
  parameter :deploy_keys_ensure_task_name, default: :ensure
20
- parameter :branch_name
21
- parameter :commit_message, default: ''
22
20
 
23
21
  task Tasks::DeployKeys::Provision,
24
22
  name: RakeFactory::DynamicValue.new { |ts|
@@ -38,14 +36,7 @@ module RakeGithub
38
36
  destroy_task_name: RakeFactory::DynamicValue.new { |ts|
39
37
  ts.deploy_keys_destroy_task_name
40
38
  }
41
- task Tasks::PullRequests::Merge,
42
- argument_names: %i[branch_name commit_message],
43
- branch_name: RakeFactory::DynamicValue.new { |ts|
44
- ts.branch_name
45
- },
46
- commit_message: RakeFactory::DynamicValue.new { |ts|
47
- ts.commit_message
48
- }
39
+ task Tasks::PullRequests::Merge
49
40
 
50
41
  def define_on(application)
51
42
  around_define(application) do
@@ -3,6 +3,9 @@
3
3
  require 'rake_factory'
4
4
  require 'octokit'
5
5
 
6
+ require_relative '../../exceptions/no_pull_request'
7
+ require_relative '../../exceptions/required_argument_unset'
8
+
6
9
  module RakeGithub
7
10
  module Tasks
8
11
  module PullRequests
@@ -12,41 +15,57 @@ module RakeGithub
12
15
  "#{t.repository} repository"
13
16
  end)
14
17
 
15
- default_argument_names %i[branch_name commit_message]
18
+ parameter :default_argument_names,
19
+ default: %i[branch_name commit_message]
16
20
 
17
21
  parameter :repository, required: true
18
22
  parameter :access_token, required: true
19
- parameter :branch_name, required: true
20
- parameter :commit_message, default: '%s'
21
23
 
22
- action do |t, _args|
24
+ def argument_names
25
+ @argument_names + default_argument_names
26
+ end
27
+
28
+ action do |t, args|
29
+ branch_name = resolve_branch_name(args)
30
+ commit_message = resolve_commit_message(args)
31
+
23
32
  client = Octokit::Client.new(access_token: access_token)
24
33
 
25
34
  open_prs = client.pull_requests(t.repository)
26
- current_pr = open_prs.find { |pr| pr[:head][:ref] == t.branch_name }
35
+ current_pr = open_prs.find { |pr| pr[:head][:ref] == branch_name }
27
36
 
28
- raise NoPullRequestError, t.branch_name if current_pr.nil?
37
+ # rubocop:disable Style/RaiseArgs
38
+ raise Exceptions::NoPullRequest.new(branch_name) if current_pr.nil?
39
+ # rubocop:enable Style/RaiseArgs
29
40
 
30
41
  client.merge_pull_request(
31
42
  t.repository,
32
43
  current_pr[:number],
33
- format(t.commit_message, current_pr[:title])
44
+ format(commit_message, current_pr[:title])
34
45
  )
35
46
  end
36
- end
37
- end
38
- end
39
- end
40
47
 
41
- class NoPullRequestError < StandardError
42
- attr_reader :branch_name
48
+ private
43
49
 
44
- def initialize(branch_name)
45
- super()
46
- @branch_name = branch_name
47
- end
50
+ def resolve_branch_name(args)
51
+ if !args.branch_name || args.branch_name.strip.empty?
52
+ raise(
53
+ Exceptions::RequiredArgumentUnset,
54
+ 'Must provide a branch name argument.'
55
+ )
56
+ end
57
+
58
+ args.branch_name.strip
59
+ end
48
60
 
49
- def message
50
- format('No pull request associated with branch %s', branch_name)
61
+ def resolve_commit_message(args)
62
+ if !args.commit_message || args.commit_message.strip.empty?
63
+ '%s'
64
+ else
65
+ args.commit_message.strip
66
+ end
67
+ end
68
+ end
69
+ end
51
70
  end
52
71
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RakeGithub
4
- VERSION = '0.12.0.pre.5'
4
+ VERSION = '0.13.0'
5
5
  end
data/lib/rake_github.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'rake_github/exceptions'
3
4
  require 'rake_github/version'
4
5
  require 'rake_github/tasks'
5
6
  require 'rake_github/task_sets'
data/rake_github.gemspec CHANGED
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
36
36
  spec.required_ruby_version = '>= 2.7'
37
37
 
38
38
  spec.add_dependency 'colored2', '~> 3.1'
39
- spec.add_dependency 'octokit', '>= 4.16', '< 8.0'
39
+ spec.add_dependency 'octokit', '>= 4.16', '< 9.0'
40
40
  spec.add_dependency 'rake_factory', '~> 0.23'
41
41
  spec.add_dependency 'sshkey', '~> 2.0'
42
42
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake_github
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0.pre.5
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfraBlocks Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-31 00:00:00.000000000 Z
11
+ date: 2023-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored2
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '4.16'
34
34
  - - "<"
35
35
  - !ruby/object:Gem::Version
36
- version: '8.0'
36
+ version: '9.0'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '4.16'
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
- version: '8.0'
46
+ version: '9.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake_factory
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -312,6 +312,9 @@ files:
312
312
  - bin/console
313
313
  - bin/setup
314
314
  - lib/rake_github.rb
315
+ - lib/rake_github/exceptions.rb
316
+ - lib/rake_github/exceptions/no_pull_request.rb
317
+ - lib/rake_github/exceptions/required_argument_unset.rb
315
318
  - lib/rake_github/task_sets.rb
316
319
  - lib/rake_github/task_sets/deploy_keys.rb
317
320
  - lib/rake_github/task_sets/repository.rb
@@ -342,9 +345,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
342
345
  version: '2.7'
343
346
  required_rubygems_version: !ruby/object:Gem::Requirement
344
347
  requirements:
345
- - - ">"
348
+ - - ">="
346
349
  - !ruby/object:Gem::Version
347
- version: 1.3.1
350
+ version: '0'
348
351
  requirements: []
349
352
  rubygems_version: 3.1.6
350
353
  signing_key: