rubygems-generate_index 1.1.3 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c5591ebf284747467f746d3728cbb865620da553044990bf098452fdb450ba6
4
- data.tar.gz: a99eccaa94d0b9b85cbbf1144f0bcd0ed32ea04365f660081d54f5e6334c428d
3
+ metadata.gz: 82af697178bb3e3bf31889eb4dd281986463afd2035cd32bfbb5bff1c6113b47
4
+ data.tar.gz: 70d622fb94c8f117b1d8dfe3ade55f20fe8658301406e41d0ac8901e84dd9152
5
5
  SHA512:
6
- metadata.gz: cf98e2b6990e4864ad054c60cdc043218e88de0a122eecc4ae43cc2d54d2bdc920ec485d2b903c61858e5cb5625fd45505813e983b50f475e73b76fc4ccb7659
7
- data.tar.gz: d12c9262183995446c66dd68e01f393d0c77e3fcc86c6c75a8958a68ef09a7e2e0bb0171be34d5bd3c9a6eb7e11e8530eaca5c589e19b039881c07af1e02ee94
6
+ metadata.gz: ea4ddc9ee10815cd5487082873f0e6b9a86448678cc4ccdeb3ab4c2aca1991af7881ad84a4a3b19651b95f34c13fc504b6d7a4cbb1b51ec9b371943fcd2d7b7f
7
+ data.tar.gz: dc547750ade62331fe4adab8999425a0348801f50410413a0d619c03d32186117c39d82e1f6cf89503efe050f51e7d6174d673a56eefb255f2f5716659946463
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in rubygems-generate_index.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
8
+ gem "rake", "~> 13.2"
9
9
  gem "rubocop", "~> 1.21"
10
10
  gem "rubocop-performance", "~> 1.19"
11
11
  gem "rubocop-rake", "~> 0.6.0"
data/Manifest.txt CHANGED
@@ -1,10 +1,14 @@
1
1
  CODE_OF_CONDUCT.md
2
2
  Gemfile
3
- Gemfile.lock
4
3
  LICENSE.txt
5
4
  MIT.txt
6
5
  Manifest.txt
7
6
  README.md
7
+ lib/compact_index.rb
8
+ lib/compact_index/dependency.rb
9
+ lib/compact_index/gem.rb
10
+ lib/compact_index/gem_version.rb
11
+ lib/compact_index/versions_file.rb
8
12
  lib/rubygems/commands/generate_index_command.rb
9
13
  lib/rubygems/indexer.rb
10
14
  lib/rubygems_plugin.rb
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CompactIndex
4
+ Dependency = Struct.new(:gem, :version, :platform, :checksum) do
5
+ def version_and_platform
6
+ if platform.nil? || platform == "ruby"
7
+ version
8
+ else
9
+ "#{version}-#{platform}"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CompactIndex
4
+ Gem = Struct.new(:name, :versions) do
5
+ def <=>(other)
6
+ name <=> other.name
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CompactIndex
4
+ GemVersion = Struct.new(:number, :platform, :checksum, :info_checksum,
5
+ :dependencies, :ruby_version, :rubygems_version) do
6
+ def number_and_platform
7
+ if platform.nil? || platform == "ruby"
8
+ number
9
+ else
10
+ "#{number}-#{platform}"
11
+ end
12
+ end
13
+
14
+ def <=>(other)
15
+ number_comp = number <=> other.number
16
+
17
+ if number_comp.zero?
18
+ [number, platform].compact <=> [other.number, other.platform].compact
19
+ else
20
+ number_comp
21
+ end
22
+ end
23
+
24
+ def to_line
25
+ line = "#{number_and_platform} #{deps_line}|checksum:#{checksum}"
26
+ line << ",ruby:#{ruby_version_line}" if ruby_version && ruby_version != ">= 0"
27
+ line << ",rubygems:#{rubygems_version_line}" if rubygems_version && rubygems_version != ">= 0"
28
+ line
29
+ end
30
+
31
+ private
32
+
33
+ def ruby_version_line
34
+ join_multiple(ruby_version)
35
+ end
36
+
37
+ def rubygems_version_line
38
+ join_multiple(rubygems_version)
39
+ end
40
+
41
+ def deps_line
42
+ return "" if dependencies.nil?
43
+
44
+ dependencies.map do |d|
45
+ [d[:gem], join_multiple(d.version_and_platform)].join(":")
46
+ end.join(",")
47
+ end
48
+
49
+ def join_multiple(requirements)
50
+ requirements = requirements.split(", ")
51
+ requirements.sort!
52
+ requirements.join("&")
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "time"
4
+ require "date"
5
+ require "digest"
6
+
7
+ module CompactIndex
8
+ class VersionsFile
9
+ def initialize(file = nil)
10
+ @path = file || "/versions.list"
11
+ end
12
+
13
+ def contents(gems = nil, args = {})
14
+ gems = calculate_info_checksums(gems) if args.delete(:calculate_info_checksums) { false }
15
+
16
+ raise ArgumentError, "Unknown options: #{args.keys.join(', ')}" unless args.empty?
17
+
18
+ File.read(@path).tap do |out|
19
+ out << gem_lines(gems) if gems
20
+ end
21
+ end
22
+
23
+ def updated_at
24
+ created_at_header(@path) || Time.at(0).utc.to_datetime
25
+ end
26
+
27
+ def create(gems, timestamp = Time.now.iso8601)
28
+ gems.sort!
29
+
30
+ File.open(@path, "w") do |io|
31
+ io.write "created_at: #{timestamp}\n---\n"
32
+ io.write gem_lines(gems)
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def gem_lines(gems)
39
+ gems.reduce(+"") do |lines, gem|
40
+ version_numbers = gem.versions.map(&:number_and_platform).join(",")
41
+ lines << gem.name <<
42
+ " " << version_numbers <<
43
+ " #{gem.versions.last.info_checksum}\n"
44
+ end
45
+ end
46
+
47
+ def calculate_info_checksums(gems)
48
+ gems.each do |gem|
49
+ info_checksum = Digest::MD5.hexdigest(CompactIndex.info(gem[:versions]))
50
+ gem[:versions].last[:info_checksum] = info_checksum
51
+ end
52
+ end
53
+
54
+ def created_at_header(path)
55
+ return unless File.exist? path
56
+
57
+ File.open(path) do |file|
58
+ file.each_line do |line|
59
+ line.match(/created_at: (.*)\n|---\n/) do |match|
60
+ return match[1] && DateTime.parse(match[1])
61
+ end
62
+ end
63
+ end
64
+
65
+ nil
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Vendored from https://github.com/rubygems/compact_index v0.15.0
4
+
5
+ require_relative "compact_index/gem"
6
+ require_relative "compact_index/gem_version"
7
+ require_relative "compact_index/dependency"
8
+
9
+ require_relative "compact_index/versions_file"
10
+
11
+ module CompactIndex
12
+ def self.names(gem_names)
13
+ gem_names.join("\n").prepend("---\n") << "\n"
14
+ end
15
+
16
+ def self.versions(versions_file, gems = nil, args = {})
17
+ versions_file.contents(gems, args)
18
+ end
19
+
20
+ def self.info(versions)
21
+ versions.inject(+"---\n") do |output, version|
22
+ output << version.to_line << "\n"
23
+ end
24
+ end
25
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "compact_index"
3
+ require_relative "../compact_index"
4
4
  require "rubygems"
5
5
  require "rubygems/package"
6
6
  require "tmpdir"
@@ -450,7 +450,7 @@ class Gem::Indexer
450
450
 
451
451
  if @build_compact
452
452
  Gem.time "Updated compact index files" do
453
- files += update_compact_index released, @dest_directory, @directory
453
+ files += update_compact_index specs, @dest_directory, @directory
454
454
  end
455
455
  end
456
456
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rubygems-generate_index"
5
- s.version = "1.1.3"
5
+ s.version = "1.2.0"
6
6
  s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
7
7
  s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
8
8
 
@@ -28,6 +28,4 @@ Gem::Specification.new do |s|
28
28
 
29
29
  s.required_ruby_version = Gem::Requirement.new(">= 3.0.0")
30
30
  s.required_rubygems_version = Gem::Requirement.new(">= 0")
31
-
32
- s.add_dependency "compact_index", "~> 0.15.0"
33
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubygems-generate_index
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
@@ -13,26 +13,10 @@ authors:
13
13
  - André Arko
14
14
  - Evan Phoenix
15
15
  - Hiroshi SHIBATA
16
- autorequire:
17
16
  bindir: exe
18
17
  cert_chain: []
19
- date: 2024-07-03 00:00:00.000000000 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: compact_index
23
- requirement: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: 0.15.0
28
- type: :runtime
29
- prerelease: false
30
- version_requirements: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: 0.15.0
35
- description:
18
+ date: 1980-01-02 00:00:00.000000000 Z
19
+ dependencies: []
36
20
  email:
37
21
  - ''
38
22
  - ''
@@ -46,19 +30,23 @@ email:
46
30
  executables: []
47
31
  extensions: []
48
32
  extra_rdoc_files:
33
+ - CODE_OF_CONDUCT.md
49
34
  - LICENSE.txt
50
35
  - MIT.txt
51
36
  - Manifest.txt
52
37
  - README.md
53
- - CODE_OF_CONDUCT.md
54
38
  files:
55
39
  - CODE_OF_CONDUCT.md
56
40
  - Gemfile
57
- - Gemfile.lock
58
41
  - LICENSE.txt
59
42
  - MIT.txt
60
43
  - Manifest.txt
61
44
  - README.md
45
+ - lib/compact_index.rb
46
+ - lib/compact_index/dependency.rb
47
+ - lib/compact_index/gem.rb
48
+ - lib/compact_index/gem_version.rb
49
+ - lib/compact_index/versions_file.rb
62
50
  - lib/rubygems/commands/generate_index_command.rb
63
51
  - lib/rubygems/indexer.rb
64
52
  - lib/rubygems_plugin.rb
@@ -71,7 +59,6 @@ metadata:
71
59
  homepage_uri: https://github.com/rubygems/rubygems-generate_index
72
60
  source_code_uri: https://github.com/rubygems/rubygems-generate_index
73
61
  changelog_uri: https://github.com/rubygems/rubygems-generate_index
74
- post_install_message:
75
62
  rdoc_options:
76
63
  - "--main"
77
64
  - README.md
@@ -89,8 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
76
  - !ruby/object:Gem::Version
90
77
  version: '0'
91
78
  requirements: []
92
- rubygems_version: 3.5.11
93
- signing_key:
79
+ rubygems_version: 4.0.6
94
80
  specification_version: 4
95
81
  summary: Generates the index files for a gem server directory
96
82
  test_files: []
data/Gemfile.lock DELETED
@@ -1,72 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- rubygems-generate_index (1.1.3)
5
- compact_index (~> 0.15.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- ast (2.4.2)
11
- base64 (0.1.1)
12
- builder (3.2.4)
13
- compact_index (0.15.0)
14
- json (2.6.3)
15
- json (2.6.3-java)
16
- language_server-protocol (3.17.0.3)
17
- parallel (1.23.0)
18
- parser (3.2.2.3)
19
- ast (~> 2.4.1)
20
- racc
21
- power_assert (2.0.3)
22
- racc (1.7.1)
23
- racc (1.7.1-java)
24
- rainbow (3.1.1)
25
- rake (13.0.6)
26
- regexp_parser (2.8.1)
27
- rexml (3.2.8)
28
- strscan (>= 3.0.9)
29
- rubocop (1.56.3)
30
- base64 (~> 0.1.1)
31
- json (~> 2.3)
32
- language_server-protocol (>= 3.17.0)
33
- parallel (~> 1.10)
34
- parser (>= 3.2.2.3)
35
- rainbow (>= 2.2.2, < 4.0)
36
- regexp_parser (>= 1.8, < 3.0)
37
- rexml (>= 3.2.5, < 4.0)
38
- rubocop-ast (>= 1.28.1, < 2.0)
39
- ruby-progressbar (~> 1.7)
40
- unicode-display_width (>= 2.4.0, < 3.0)
41
- rubocop-ast (1.29.0)
42
- parser (>= 3.2.1.0)
43
- rubocop-performance (1.19.1)
44
- rubocop (>= 1.7.0, < 2.0)
45
- rubocop-ast (>= 0.4.0)
46
- rubocop-rake (0.6.0)
47
- rubocop (~> 1.0)
48
- ruby-progressbar (1.13.0)
49
- strscan (3.1.0)
50
- strscan (3.1.0-java)
51
- test-unit (3.6.1)
52
- power_assert
53
- unicode-display_width (2.4.2)
54
-
55
- PLATFORMS
56
- arm64-darwin
57
- arm64-linux
58
- java
59
- ruby
60
- x64-linux
61
-
62
- DEPENDENCIES
63
- builder (~> 3.2)
64
- rake (~> 13.0)
65
- rubocop (~> 1.21)
66
- rubocop-performance (~> 1.19)
67
- rubocop-rake (~> 0.6.0)
68
- rubygems-generate_index!
69
- test-unit (~> 3.0)
70
-
71
- BUNDLED WITH
72
- 2.5.14