rubygems-generate_index 1.1.2 → 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 +4 -4
- data/Gemfile +5 -5
- data/Manifest.txt +5 -1
- data/lib/compact_index/dependency.rb +13 -0
- data/lib/compact_index/gem.rb +9 -0
- data/lib/compact_index/gem_version.rb +55 -0
- data/lib/compact_index/versions_file.rb +68 -0
- data/lib/compact_index.rb +25 -0
- data/lib/rubygems/indexer.rb +4 -4
- data/rubygems-generate_index.gemspec +1 -3
- metadata +10 -24
- data/Gemfile.lock +0 -66
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 82af697178bb3e3bf31889eb4dd281986463afd2035cd32bfbb5bff1c6113b47
|
|
4
|
+
data.tar.gz: 70d622fb94c8f117b1d8dfe3ade55f20fe8658301406e41d0ac8901e84dd9152
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ea4ddc9ee10815cd5487082873f0e6b9a86448678cc4ccdeb3ab4c2aca1991af7881ad84a4a3b19651b95f34c13fc504b6d7a4cbb1b51ec9b371943fcd2d7b7f
|
|
7
|
+
data.tar.gz: dc547750ade62331fe4adab8999425a0348801f50410413a0d619c03d32186117c39d82e1f6cf89503efe050f51e7d6174d673a56eefb255f2f5716659946463
|
data/Gemfile
CHANGED
|
@@ -5,12 +5,12 @@ 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.
|
|
8
|
+
gem "rake", "~> 13.2"
|
|
9
|
+
gem "rubocop", "~> 1.21"
|
|
10
|
+
gem "rubocop-performance", "~> 1.19"
|
|
11
|
+
gem "rubocop-rake", "~> 0.6.0"
|
|
9
12
|
gem "test-unit", "~> 3.0"
|
|
10
|
-
|
|
11
|
-
gem "rubocop", "~> 1.21"
|
|
12
|
-
gem "rubocop-performance", "~> 1.19"
|
|
13
|
-
end
|
|
13
|
+
|
|
14
14
|
install_if -> { Gem::VERSION < "3.2.0" } do
|
|
15
15
|
gem "builder", "~> 3.2"
|
|
16
16
|
end
|
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,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
|
data/lib/rubygems/indexer.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative "../compact_index"
|
|
4
4
|
require "rubygems"
|
|
5
5
|
require "rubygems/package"
|
|
6
6
|
require "tmpdir"
|
|
@@ -216,7 +216,7 @@ class Gem::Indexer
|
|
|
216
216
|
|
|
217
217
|
Gem.time "Generated compact index files" do
|
|
218
218
|
info_dir = File.join(@directory, "info")
|
|
219
|
-
FileUtils.mkdir_p info_dir
|
|
219
|
+
FileUtils.mkdir_p info_dir
|
|
220
220
|
|
|
221
221
|
gems.each do |gem|
|
|
222
222
|
info = CompactIndex.info(gem.versions)
|
|
@@ -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
|
|
453
|
+
files += update_compact_index specs, @dest_directory, @directory
|
|
454
454
|
end
|
|
455
455
|
end
|
|
456
456
|
|
|
@@ -574,7 +574,7 @@ class Gem::Indexer
|
|
|
574
574
|
spec.platform.to_s,
|
|
575
575
|
checksum,
|
|
576
576
|
nil, # info_checksum
|
|
577
|
-
spec.
|
|
577
|
+
spec.runtime_dependencies.map {|d| CompactIndex::Dependency.new(d.name, d.requirement.to_s) },
|
|
578
578
|
spec.required_ruby_version&.to_s,
|
|
579
579
|
spec.required_rubygems_version&.to_s
|
|
580
580
|
)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = "rubygems-generate_index"
|
|
5
|
-
s.version = "1.
|
|
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.
|
|
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:
|
|
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:
|
|
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,66 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: .
|
|
3
|
-
specs:
|
|
4
|
-
rubygems-generate_index (1.1.2)
|
|
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.6)
|
|
28
|
-
rubocop (1.56.3)
|
|
29
|
-
base64 (~> 0.1.1)
|
|
30
|
-
json (~> 2.3)
|
|
31
|
-
language_server-protocol (>= 3.17.0)
|
|
32
|
-
parallel (~> 1.10)
|
|
33
|
-
parser (>= 3.2.2.3)
|
|
34
|
-
rainbow (>= 2.2.2, < 4.0)
|
|
35
|
-
regexp_parser (>= 1.8, < 3.0)
|
|
36
|
-
rexml (>= 3.2.5, < 4.0)
|
|
37
|
-
rubocop-ast (>= 1.28.1, < 2.0)
|
|
38
|
-
ruby-progressbar (~> 1.7)
|
|
39
|
-
unicode-display_width (>= 2.4.0, < 3.0)
|
|
40
|
-
rubocop-ast (1.29.0)
|
|
41
|
-
parser (>= 3.2.1.0)
|
|
42
|
-
rubocop-performance (1.19.1)
|
|
43
|
-
rubocop (>= 1.7.0, < 2.0)
|
|
44
|
-
rubocop-ast (>= 0.4.0)
|
|
45
|
-
ruby-progressbar (1.13.0)
|
|
46
|
-
test-unit (3.6.1)
|
|
47
|
-
power_assert
|
|
48
|
-
unicode-display_width (2.4.2)
|
|
49
|
-
|
|
50
|
-
PLATFORMS
|
|
51
|
-
arm64-darwin
|
|
52
|
-
arm64-linux
|
|
53
|
-
java
|
|
54
|
-
ruby
|
|
55
|
-
x64-linux
|
|
56
|
-
|
|
57
|
-
DEPENDENCIES
|
|
58
|
-
builder (~> 3.2)
|
|
59
|
-
rake (~> 13.0)
|
|
60
|
-
rubocop (~> 1.21)
|
|
61
|
-
rubocop-performance (~> 1.19)
|
|
62
|
-
rubygems-generate_index!
|
|
63
|
-
test-unit (~> 3.0)
|
|
64
|
-
|
|
65
|
-
BUNDLED WITH
|
|
66
|
-
2.4.22
|