rake-gem-maintenance 0.1.7 → 0.2.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.
@@ -4,110 +4,112 @@ require "rake"
4
4
  require "rake/tasklib"
5
5
 
6
6
  module Rake
7
- module GemMaintenance
8
- # Defines Rake tasks for version bumping with gem-release.
9
- #
10
- # Creates: version:bump[type] and bump[type] (alias)
11
- class VersionBumpTask < ::Rake::TaskLib
12
- VALID_TYPES = %w[patch minor major].freeze
13
-
14
- attr_accessor :namespace_name, :default_type, :commit_message_template,
15
- :create_alias, :amend_with_gemfile_lock
16
-
17
- def initialize
18
- super
19
- @namespace_name = :version
20
- @default_type = "patch"
21
- @commit_message_template = "chore(release): %<version>s"
22
- @create_alias = true
23
- @amend_with_gemfile_lock = true
24
-
25
- yield self if block_given?
26
-
27
- define_tasks
28
- end
7
+ module Gem
8
+ module Maintenance
9
+ # Defines Rake tasks for version bumping with gem-release.
10
+ #
11
+ # Creates: version:bump[type] and bump[type] (alias)
12
+ class VersionBumpTask < ::Rake::TaskLib
13
+ VALID_TYPES = %w[patch minor major].freeze
14
+
15
+ attr_accessor :namespace_name, :default_type, :commit_message_template,
16
+ :create_alias, :amend_with_gemfile_lock
17
+
18
+ def initialize
19
+ super
20
+ @namespace_name = :version
21
+ @default_type = "patch"
22
+ @commit_message_template = "chore(release): %<version>s"
23
+ @create_alias = true
24
+ @amend_with_gemfile_lock = true
25
+
26
+ yield self if block_given?
27
+
28
+ define_tasks
29
+ end
29
30
 
30
- private
31
+ private
31
32
 
32
- def define_tasks
33
- define_version_bump_task
34
- define_alias_task if create_alias
35
- end
33
+ def define_tasks
34
+ define_version_bump_task
35
+ define_alias_task if create_alias
36
+ end
36
37
 
37
- def define_version_bump_task
38
- task_instance = self
39
- bump_desc = "Bump version (patch, minor, major) and update Gemfile.lock. Default: #{default_type}"
38
+ def define_version_bump_task
39
+ task_instance = self
40
+ bump_desc = "Bump version (patch, minor, major) and update Gemfile.lock. Default: #{default_type}"
40
41
 
41
- namespace namespace_name do
42
- desc bump_desc
43
- task :bump, [:type] do |_t, args|
44
- task_instance.send(:run_bump, args)
42
+ namespace namespace_name do
43
+ desc bump_desc
44
+ task :bump, [:type] do |_t, args|
45
+ task_instance.send(:run_bump, args)
46
+ end
45
47
  end
46
48
  end
47
- end
48
49
 
49
- def define_alias_task
50
- ns = namespace_name
50
+ def define_alias_task
51
+ ns = namespace_name
51
52
 
52
- desc "Alias for #{ns}:bump"
53
- task :bump, [:type] => ["#{ns}:bump"]
54
- end
53
+ desc "Alias for #{ns}:bump"
54
+ task :bump, [:type] => ["#{ns}:bump"]
55
+ end
55
56
 
56
- def run_bump(args)
57
- args.with_defaults(type: default_type)
57
+ def run_bump(args)
58
+ args.with_defaults(type: default_type)
58
59
 
59
- validate_version_type(args.type)
60
- execute_version_bump(args.type)
60
+ validate_version_type(args.type)
61
+ execute_version_bump(args.type)
61
62
 
62
- return unless amend_with_gemfile_lock
63
+ return unless amend_with_gemfile_lock
63
64
 
64
- update_gemfile_lock
65
- amend_commit_to_include_gemfile_lock_changes
66
- end
65
+ update_gemfile_lock
66
+ amend_commit_to_include_gemfile_lock_changes
67
+ end
67
68
 
68
- def validate_version_type(type)
69
- return if VALID_TYPES.include?(type)
69
+ def validate_version_type(type)
70
+ return if VALID_TYPES.include?(type)
70
71
 
71
- abort "Error: Version type must be one of: #{VALID_TYPES.join(', ')}"
72
- end
72
+ abort "Error: Version type must be one of: #{VALID_TYPES.join(', ')}"
73
+ end
73
74
 
74
- def execute_version_bump(type)
75
- puts "Bumping #{type} version..."
76
- version_file = detect_version_file
77
- cmd = "bundle exec gem bump --version #{type}"
78
- cmd += " --file #{version_file}" if version_file
79
- bump_result = system("#{cmd} --message '#{commit_message_template}'")
80
- return if bump_result
75
+ def execute_version_bump(type)
76
+ puts "Bumping #{type} version..."
77
+ version_file = detect_version_file
78
+ cmd = "bundle exec gem bump --version #{type}"
79
+ cmd += " --file #{version_file}" if version_file
80
+ bump_result = system("#{cmd} --message '#{commit_message_template}'")
81
+ return if bump_result
81
82
 
82
- abort "Error: Failed to bump version"
83
- end
83
+ abort "Error: Failed to bump version"
84
+ end
84
85
 
85
- def detect_version_file
86
- gemspec_path = Dir.glob("*.gemspec").first
87
- return nil unless gemspec_path
86
+ def detect_version_file
87
+ gemspec_path = Dir.glob("*.gemspec").first
88
+ return nil unless gemspec_path
88
89
 
89
- gem_name = Gem::Specification.load(gemspec_path).name
90
- version_rb = File.join("lib", gem_name.tr("-", "/"), "version.rb")
91
- return version_rb if File.exist?(version_rb)
90
+ gem_name = ::Gem::Specification.load(gemspec_path).name
91
+ version_rb = File.join("lib", gem_name.tr("-", "/"), "version.rb")
92
+ return version_rb if File.exist?(version_rb)
92
93
 
93
- version_rb = File.join("lib", gem_name.split("-").first, gem_name.split("-")[1..].join("_"), "version.rb")
94
- return version_rb if File.exist?(version_rb)
94
+ version_rb = File.join("lib", gem_name.split("-").first, gem_name.split("-")[1..].join("_"), "version.rb")
95
+ return version_rb if File.exist?(version_rb)
95
96
 
96
- nil
97
- end
97
+ nil
98
+ end
98
99
 
99
- def update_gemfile_lock
100
- puts "Updating Gemfile.lock..."
101
- bundle_result = system("bundle install")
102
- return if bundle_result
100
+ def update_gemfile_lock
101
+ puts "Updating Gemfile.lock..."
102
+ bundle_result = system("bundle install")
103
+ return if bundle_result
103
104
 
104
- abort "Error: Failed to update Gemfile.lock"
105
- end
105
+ abort "Error: Failed to update Gemfile.lock"
106
+ end
106
107
 
107
- def amend_commit_to_include_gemfile_lock_changes
108
- puts "Amending commit to include Gemfile.lock update..."
109
- system("git add .")
110
- system("git commit --amend --no-edit")
108
+ def amend_commit_to_include_gemfile_lock_changes
109
+ puts "Amending commit to include Gemfile.lock update..."
110
+ system("git add .")
111
+ system("git commit --amend --no-edit")
112
+ end
111
113
  end
112
114
  end
113
115
  end
@@ -1,88 +1,90 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rake
4
- module GemMaintenance
5
- # Creates or updates an org-level secret in a Woodpecker CI server.
6
- # SSL verification is disabled because Woodpecker is typically served
7
- # on an internal network with a private CA.
8
- class WoodpeckerSecretStore
9
- def initialize(server:, org:, token:)
10
- @server = server
11
- @org = org
12
- @token = token
13
- end
4
+ module Gem
5
+ module Maintenance
6
+ # Creates or updates an org-level secret in a Woodpecker CI server.
7
+ # SSL verification is disabled because Woodpecker is typically served
8
+ # on an internal network with a private CA.
9
+ class WoodpeckerSecretStore
10
+ def initialize(server:, org:, token:)
11
+ @server = server
12
+ @org = org
13
+ @token = token
14
+ end
14
15
 
15
- def store(secret_name, value, events: %w[push tag manual])
16
- org_id = find_org_id
17
- abort "[ERROR] Woodpecker org '#{@org}' not found on #{@server}." unless org_id
16
+ def store(secret_name, value, events: %w[push tag manual])
17
+ org_id = find_org_id
18
+ abort "[ERROR] Woodpecker org '#{@org}' not found on #{@server}." unless org_id
18
19
 
19
- if secret_exists?(org_id, secret_name)
20
- patch("/api/orgs/#{org_id}/secrets/#{secret_name}",
21
- { value: value, events: events, images: [] })
22
- else
23
- post("/api/orgs/#{org_id}/secrets",
24
- { name: secret_name, value: value, events: events, images: [] })
20
+ if secret_exists?(org_id, secret_name)
21
+ patch("/api/orgs/#{org_id}/secrets/#{secret_name}",
22
+ { value: value, events: events, images: [] })
23
+ else
24
+ post("/api/orgs/#{org_id}/secrets",
25
+ { name: secret_name, value: value, events: events, images: [] })
26
+ end
25
27
  end
26
- end
27
28
 
28
- private
29
+ private
29
30
 
30
- def find_org_id
31
- orgs = get("/api/orgs")
32
- orgs&.find { |o| o["name"] == @org }&.fetch("id", nil)
33
- end
31
+ def find_org_id
32
+ orgs = get("/api/orgs")
33
+ orgs&.find { |o| o["name"] == @org }&.fetch("id", nil)
34
+ end
34
35
 
35
- def secret_exists?(org_id, secret_name)
36
- secrets = get("/api/orgs/#{org_id}/secrets")
37
- secrets&.any? { |s| s["name"] == secret_name }
38
- end
36
+ def secret_exists?(org_id, secret_name)
37
+ secrets = get("/api/orgs/#{org_id}/secrets")
38
+ secrets&.any? { |s| s["name"] == secret_name }
39
+ end
39
40
 
40
- def get(path)
41
- require "json"
42
- response = request(Net::HTTP::Get, path)
43
- JSON.parse(response.body) if response.is_a?(Net::HTTPSuccess)
44
- end
41
+ def get(path)
42
+ require "json"
43
+ response = request(Net::HTTP::Get, path)
44
+ JSON.parse(response.body) if response.is_a?(Net::HTTPSuccess)
45
+ end
45
46
 
46
- def post(path, body)
47
- request(Net::HTTP::Post, path, body)
48
- end
47
+ def post(path, body)
48
+ request(Net::HTTP::Post, path, body)
49
+ end
49
50
 
50
- def patch(path, body)
51
- request(Net::HTTP::Patch, path, body)
52
- end
51
+ def patch(path, body)
52
+ request(Net::HTTP::Patch, path, body)
53
+ end
53
54
 
54
- def request(klass, path, body = nil)
55
- require "net/http"
56
- require "json"
57
- require "openssl"
55
+ def request(klass, path, body = nil)
56
+ require "net/http"
57
+ require "json"
58
+ require "openssl"
58
59
 
59
- uri = URI("#{@server}#{path}")
60
- http.request(build_req(klass, uri, body))
61
- end
60
+ uri = URI("#{@server}#{path}")
61
+ http.request(build_req(klass, uri, body))
62
+ end
62
63
 
63
- def http
64
- uri = URI(@server)
65
- h = Net::HTTP.new(uri.hostname, uri.port)
66
- h.use_ssl = (uri.scheme == "https")
67
- h.verify_mode = OpenSSL::SSL::VERIFY_NONE
68
- h
69
- end
64
+ def http
65
+ uri = URI(@server)
66
+ h = Net::HTTP.new(uri.hostname, uri.port)
67
+ h.use_ssl = (uri.scheme == "https")
68
+ h.verify_mode = OpenSSL::SSL::VERIFY_NONE
69
+ h
70
+ end
70
71
 
71
- def build_req(klass, uri, body)
72
- req = klass.new(uri)
73
- req["Authorization"] = "Bearer #{@token}"
74
- if body
75
- req["Content-Type"] = "application/json"
76
- req.body = JSON.generate(body)
72
+ def build_req(klass, uri, body)
73
+ req = klass.new(uri)
74
+ req["Authorization"] = "Bearer #{@token}"
75
+ if body
76
+ req["Content-Type"] = "application/json"
77
+ req.body = JSON.generate(body)
78
+ end
79
+ req
77
80
  end
78
- req
79
- end
80
81
 
81
- def build_http(uri)
82
- http = Net::HTTP.new(uri.hostname, uri.port)
83
- http.use_ssl = (uri.scheme == "https")
84
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
85
- http
82
+ def build_http(uri)
83
+ http = Net::HTTP.new(uri.hostname, uri.port)
84
+ http.use_ssl = (uri.scheme == "https")
85
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
86
+ http
87
+ end
86
88
  end
87
89
  end
88
90
  end
@@ -9,8 +9,8 @@
9
9
  $LOAD_PATH.unshift File.join(__dir__, "..", "lib")
10
10
  require "rake/gem/maintenance"
11
11
 
12
- Rake::GemMaintenance::Repos.rubygems_api_key_env_var = "GEM_HOST_API_KEY"
13
- Rake::GemMaintenance::Repos.rubygems_otp_seed_env_var = "RUBYGEMS_OTP_SEED"
12
+ Rake::Gem::Maintenance::Repos.rubygems_api_key_env_var = "GEM_HOST_API_KEY"
13
+ Rake::Gem::Maintenance::Repos.rubygems_otp_seed_env_var = "RUBYGEMS_OTP_SEED"
14
14
 
15
15
  gemspec_file = Dir["*.gemspec"].first
16
16
  abort "ERROR: No gemspec found in #{Dir.pwd}" unless gemspec_file
@@ -21,7 +21,7 @@ gem_file = Dir["*.gem"].max_by { |f| File.mtime(f) }
21
21
  abort "ERROR: No .gem file found after build" unless gem_file
22
22
 
23
23
  puts "Publishing #{gem_file} to rubygems.org..."
24
- publisher = Rake::GemMaintenance::GemPublisher.new(Rake::GemMaintenance::Repos.rubygems)
24
+ publisher = Rake::Gem::Maintenance::GemPublisher.new(Rake::Gem::Maintenance::Repos.rubygems)
25
25
  publisher.publish(gem_file)
26
26
 
27
27
  abort "ERROR: Failed to publish #{gem_file} to rubygems.org" if publisher.successful_repos.empty?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-gem-maintenance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christophe Broult