compact_index 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e482659a6122776eafafea998d383a1a252c1247
4
- data.tar.gz: f7d608614cf0e5352b802b62c1b49639233b2cba
3
+ metadata.gz: 26a6b9d47c580c53737df7aef9c0e9619a622dfb
4
+ data.tar.gz: f846a31bc5833ff97687da9c6bb2aec1d865f347
5
5
  SHA512:
6
- metadata.gz: 34ca690508948503066eb677d520b367ac8bde9fa08102a692d0921d20afd85ed5e7182f692475c8a197cd03ac0c2d9a5d317c213017c21c58287a66d71192be
7
- data.tar.gz: 61a3ef799c846ceef782d1ca645a9ecc6eb10293456491bd3b1b753e3087356a54507dcc47b6fc080a6a9e0ad410564e931d1d9cdbdbb87c4b78317c877b8dda
6
+ metadata.gz: a2ea035146ce0bcb7eb8c1d227a216dddd6279228c97c180e1f6ef211e969a46bbec6a89e920cd771e3b2fad6ea89de368fa048fdcaeea48e0fb3180986171a8
7
+ data.tar.gz: 86c03f712b8d4f37e84502245abd7d065299eb9f6ff5081ec4dfcdbbe434df859c491b625c2d94fd6ecd9898f00a33c02dd57bf6d9fa29c3cf21a1618e4c19f9
@@ -1,5 +1,12 @@
1
1
  ## 0.10.0 (January 22, 2016)
2
2
 
3
+ Features:
4
+
5
+ - Refactoring big part of the code
6
+ - Change behavior of VersionsFile#create to avoid adding multiple versions per line
7
+
8
+ ## 0.10.0 (January 22, 2016)
9
+
3
10
  Features:
4
11
 
5
12
  - Frozen string literal support
data/README.md CHANGED
@@ -20,7 +20,7 @@ And then execute:
20
20
 
21
21
  ### `/names`
22
22
 
23
- To render the body for this call, all you have to do is generate a list of gems available in alfabetical order and use call `CompactIndex.names`.
23
+ To render the body for this call, all you have to do is generate a list of gems available in alphabetical order and use call `CompactIndex.names`.
24
24
 
25
25
  ```ruby
26
26
  gem 'compact_index'
@@ -37,7 +37,7 @@ gem 'compact_index'
37
37
  versions_file = CompactIndex::VersionsFile.new("/path/to/versions/file")
38
38
 
39
39
  # Get last updated date. This is used to discover what gems aren't in the file yet
40
- from_date = @versions_file.updated_at
40
+ from_date = versions_file.updated_at
41
41
 
42
42
  # Query the extra gems using the from date. Format should be as follows
43
43
  extra_gems = [
@@ -52,7 +52,7 @@ extra_gems = [
52
52
  ]
53
53
 
54
54
  # Render the body for the versions response
55
- CompactIndex.versions(@versions_file, extra_gems)
55
+ CompactIndex.versions(versions_file, extra_gems)
56
56
  ```
57
57
 
58
58
  ### `/info/gem_name`
@@ -69,38 +69,9 @@ module CompactIndex
69
69
  # 1.0.1 requirement:<2.0&>1.0|checksum:abc1
70
70
  # 1.0.2 requirement:<2.0&>1.0,requirement2:=1.1|checksum:abc2,ruby:>1.0,rubygems:>2.0
71
71
  # ```
72
- def self.info(params)
73
- output = String.new("---\n")
74
- params.each do |version|
75
- output << version_line(version) << "\n"
72
+ def self.info(versions)
73
+ versions.inject("---\n".dup) do |output, version|
74
+ output << version.to_line << "\n"
76
75
  end
77
- output
78
- end
79
-
80
- private
81
-
82
- def self.version_line(version)
83
- if version[:dependencies]
84
- version[:dependencies]
85
- deps = version[:dependencies].map do |d|
86
- [
87
- d[:gem],
88
- d.version_and_platform.split(", ").sort.join("&")
89
- ].join(":")
90
- end
91
- else
92
- deps = []
93
- end
94
-
95
- line = version.number_and_platform.dup
96
- line << " "
97
- line << deps.join(",")
98
- line << "|"
99
-
100
- line << "checksum:#{version[:checksum]}"
101
- line << ",ruby:#{version[:ruby_version]}" if version[:ruby_version]
102
- line << ",rubygems:#{version[:rubygems_version]}" if version[:rubygems_version]
103
-
104
- line
105
76
  end
106
77
  end
@@ -1,4 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  module CompactIndex
3
- Gem = Struct.new(:name, :versions)
3
+ Gem = Struct.new(:name, :versions) do
4
+ def <=>(other)
5
+ name <=> other.name
6
+ end
7
+ end
4
8
  end
@@ -9,5 +9,31 @@ module CompactIndex
9
9
  "#{number}-#{platform}"
10
10
  end
11
11
  end
12
+
13
+ def <=>(other)
14
+ number_comp = number <=> other.number
15
+
16
+ if number_comp.zero?
17
+ [number, platform].compact <=> [other.number, other.platform].compact
18
+ else
19
+ number_comp
20
+ end
21
+ end
22
+
23
+ def to_line
24
+ line = number_and_platform.dup << " " << deps_line << "|checksum:#{checksum}"
25
+ line << ",ruby:#{ruby_version}" if ruby_version && ruby_version != ">= 0"
26
+ line << ",rubygems:#{rubygems_version}" if rubygems_version && rubygems_version != ">= 0"
27
+ line
28
+ end
29
+
30
+ private
31
+
32
+ def deps_line
33
+ return "" if dependencies.nil?
34
+ dependencies.map do |d|
35
+ [d[:gem], d.version_and_platform.split(", ").sort.join("&")].join(":")
36
+ end.join(",")
37
+ end
12
38
  end
13
39
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module CompactIndex
3
- VERSION = "0.10.0".freeze
3
+ VERSION = "0.11.0".freeze
4
4
  end
@@ -15,80 +15,34 @@ module CompactIndex
15
15
 
16
16
  raise ArgumentError, "Unknown options: #{args.keys.join(", ")}" unless args.empty?
17
17
 
18
- out = File.read(@path)
19
- out << parse_gems(gems) if gems
20
- out
18
+ File.read(@path).tap do |out|
19
+ out << gem_lines(gems) if gems
20
+ end
21
21
  end
22
22
 
23
23
  def updated_at
24
24
  created_at_header(@path) || Time.at(0).to_datetime
25
25
  end
26
26
 
27
- def update_with(gems)
28
- if File.exist?(@path) && !File.zero?(@path)
29
- update(gems)
30
- else
31
- create(gems)
32
- end
33
- end
34
-
35
- private
36
-
37
27
  def create(gems)
38
- content = "created_at: #{Time.now.iso8601}".dup
39
- content << "\n---\n"
40
- content << parse_gems_for_create(gems)
28
+ gems.sort!
41
29
 
42
30
  File.open(@path, "w") do |io|
43
- io.write content
44
- end
45
- end
46
-
47
- def update(gems)
48
- File.open(@path, "a") do |io|
49
- io.write parse_gems(gems)
50
- end
51
- end
52
-
53
- def parse_gems_for_create(gems)
54
- # Join all versions for each gem in one hash
55
- gems_hash = {}
56
- gems.each do |entry|
57
- gems_hash[entry[:name]] ||= []
58
- gems_hash[entry[:name]] += entry[:versions]
59
- end
60
-
61
- # Transform hash in a list of line informations to be printed
62
- gems = gems_hash.map do |gem, versions|
63
- { :name => gem, :versions => versions, :info_checksum => versions.last[:info_checksum] }
64
- end
65
-
66
- # Sort gems by name and versions by number
67
- gems.sort! {|a, b| a[:name] <=> b[:name] }
68
- gems.each do |entry|
69
- entry[:versions].sort! do |a, b|
70
- ::Gem::Version.create(a[:number]) <=> ::Gem::Version.create(b[:number])
71
- end
31
+ io.write "created_at: #{Time.now.iso8601}\n---\n"
32
+ io.write gem_lines(gems)
72
33
  end
73
-
74
- gem_lines(gems)
75
34
  end
76
35
 
77
- def parse_gems(gems)
78
- gem_lines = gems.map do |entry|
79
- {
80
- :name => entry[:name],
81
- :versions => entry[:versions],
82
- :info_checksum => entry[:versions].last[:info_checksum]
83
- }
84
- end
85
- gem_lines(gem_lines)
86
- end
36
+ private
87
37
 
88
38
  def gem_lines(gems)
89
- gems.reduce("".dup) do |concat, entry|
90
- versions = entry[:versions]
91
- concat << "#{entry[:name]} #{versions.map(&:number_and_platform).join(",")} #{entry[:info_checksum]}\n"
39
+ gems.each {|g| g.versions.sort! }
40
+
41
+ gems.reduce("".dup) do |lines, gem|
42
+ version_numbers = gem.versions.map(&:number_and_platform).join(",")
43
+ lines << gem.name <<
44
+ " ".freeze << version_numbers <<
45
+ " #{gem.versions.last.info_checksum}\n"
92
46
  end
93
47
  end
94
48
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: compact_index
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - fotanus@gmail.com
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-22 00:00:00.000000000 Z
11
+ date: 2016-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -95,9 +95,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  version: '0'
96
96
  requirements: []
97
97
  rubyforge_project:
98
- rubygems_version: 2.5.1
98
+ rubygems_version: 2.4.6
99
99
  signing_key:
100
100
  specification_version: 4
101
101
  summary: Backend for compact index
102
102
  test_files: []
103
- has_rdoc: