reapack-index 1.0rc2 → 1.0rc3

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
  SHA1:
3
- metadata.gz: 5cbcf419229c7231caca844f3b7f9e6800261b24
4
- data.tar.gz: e3a8eabd17b759e7125f39276371383263130081
3
+ metadata.gz: 67af92b88949837fe5d43e305412534584ec85bc
4
+ data.tar.gz: a03bb75c38a4fe47fdad9dbf355a8fa1df0dc151
5
5
  SHA512:
6
- metadata.gz: 7e04598f176942c766ade75dc7ec901793d3a58383e9e4e648d364f869d3798bdbc7b5239574ccc71b247bd115500c1c6c434de41353adc2611cbda46ed2bbf8
7
- data.tar.gz: 42ebb6abbc5043e80b858d01ec64b94ec8c550e0a11a0c1daa964f3a7823b83a4282ef476d2c1e738b2242e781912d7cfe48bdcbba48bb943becb4bc3382a2f0
6
+ metadata.gz: 14b4b985db8bdb301b460745a63d8016998fd35348be92ce04bc4c9d0839c1d0d992d059c0adf56a4e9c4ebf50121837dfd56fef21c437f654e1fbd582c4a6ec
7
+ data.tar.gz: 4f5096ef94d75eee24eccc12b7fbd78fbd4477b921d2e5f2458dced3a7541652392c8e7c2f3419a8f5d9096f09d8ad3893137717e083372aa5181f5a2ffa31ed
data/README.md CHANGED
@@ -7,6 +7,7 @@ Subproject: [https://github.com/cfillion/metaheader](https://github.com/cfillion
7
7
  [![Build Status](https://travis-ci.org/cfillion/reapack-index.svg?branch=master)](https://travis-ci.org/cfillion/reapack-index)
8
8
  [![Dependency Status](https://gemnasium.com/cfillion/reapack-index.svg)](https://gemnasium.com/cfillion/reapack-index)
9
9
  [![Coverage Status](https://coveralls.io/repos/cfillion/reapack-index/badge.svg?branch=master&service=github)](https://coveralls.io/github/cfillion/reapack-index?branch=master)
10
+ [![Donate](https://www.paypalobjects.com/webstatic/en_US/btn/btn_donate_74x21.png)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=T3DEWBQJAV7WL&lc=CA&item_name=reapack-index%3a%20Package%20indexer%20for%20git-based%20ReaPack%20repositories&no_note=0&cn=Custom%20message&no_shipping=1&currency_code=CAD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted)
10
11
 
11
12
  ### Installation
12
13
 
data/lib/reapack/index.rb CHANGED
@@ -106,7 +106,7 @@ class ReaPack::Index
106
106
  type = self.class.type_of path
107
107
  return unless type
108
108
 
109
- mh = MetaHeader.new contents
109
+ mh = MetaHeader.parse contents
110
110
 
111
111
  if mh[:noindex]
112
112
  remove path
@@ -164,14 +164,19 @@ class ReaPack::Index
164
164
  @metadata.links type
165
165
  end
166
166
 
167
- def eval_link(type, string)
168
- if string.index('-') == 0
169
- @metadata.remove_link type, string[1..-1]
167
+ def eval_link(type, input)
168
+ if input.index('-') == 0
169
+ @metadata.remove_link type, input[1..-1]
170
170
  log_change "removed #{type} link"
171
171
  return
172
172
  end
173
173
 
174
- link = @metadata.push_link type, *string.split('=', 2)
174
+ separator = input.index('=')
175
+ if separator&.< input.index('://')
176
+ input = [input[0...separator], input[separator+1..-1]]
177
+ end
178
+
179
+ link = @metadata.push_link type, *input
175
180
 
176
181
  if link.is_new?
177
182
  log_change "new #{type} link"
@@ -109,23 +109,26 @@ private
109
109
  @index.files = commit.filelist
110
110
 
111
111
  commit.each_diff
112
- .sort_by {|diff| diff.status == :deleted ? 0 : 1 }
112
+ .select {|diff|
113
+ (not ignored? expand_path(diff.file)) &&
114
+ ReaPack::Index.type_of(diff.file)
115
+ }
116
+ .sort_by {|diff|
117
+ diff.status == :deleted || diff.new_header[:noindex] ? 0 : 1
118
+ }
113
119
  .each {|diff| process_diff diff }
114
120
  ensure
115
121
  bump_progress
116
122
  end
117
123
 
118
124
  def process_diff(diff)
119
- return if ignored? expand_path(diff.file)
120
- return unless ReaPack::Index.type_of diff.file
121
-
122
125
  log "-> indexing #{diff.status} file #{diff.file}"
123
126
 
124
127
  if diff.status == :deleted
125
128
  @index.remove diff.file
126
129
  else
127
130
  begin
128
- @index.scan diff.file, diff.new_content
131
+ @index.scan diff.file, diff.new_header
129
132
  rescue ReaPack::Index::Error => e
130
133
  warn "#{diff.file}:\n#{indent e.message}"
131
134
  end
@@ -210,7 +213,7 @@ private
210
213
  # reiterate over the pkg list after registering every file
211
214
  pkgs.each_pair {|abs, rel|
212
215
  begin
213
- @index.scan rel, File.read(abs)
216
+ @index.scan rel, MetaHeader.from_file(abs)
214
217
 
215
218
  if @opts[:verbose]
216
219
  $stderr.puts '%s: passed' % rel
@@ -1,5 +1,5 @@
1
1
  module ReaPack
2
2
  class Index
3
- VERSION = '1.0rc2'
3
+ VERSION = '1.0rc3'
4
4
  end
5
5
  end
@@ -182,12 +182,17 @@ class ReaPack::Index
182
182
  attr_reader :status
183
183
 
184
184
  def file
185
- @file[:path].force_encoding(Encoding::UTF_8)
185
+ @path ||= @file[:path].force_encoding(Encoding::UTF_8)
186
186
  end
187
187
 
188
188
  def new_content
189
189
  return if status == :deleted
190
- @repo.lookup(@file[:oid]).content.force_encoding(Encoding::UTF_8)
190
+ @new_content ||=
191
+ @repo.lookup(@file[:oid]).content.force_encoding(Encoding::UTF_8)
192
+ end
193
+
194
+ def new_header
195
+ @new_header ||= MetaHeader.new @new_content if new_content
191
196
  end
192
197
  end
193
198
  end
@@ -11,7 +11,7 @@ class ReaPack::Index
11
11
  HEADER_RULES = {
12
12
  # package-wide tags
13
13
  :version => [
14
- MetaHeader::REQUIRED, MetaHeader::VALUE, MetaHeader::SINGLELINE, /\d/],
14
+ MetaHeader::REQUIRED, MetaHeader::VALUE, MetaHeader::SINGLELINE, /\A\d/],
15
15
 
16
16
  # version-specific tags
17
17
  :author => [MetaHeader::VALUE, MetaHeader::SINGLELINE],
@@ -21,11 +21,13 @@ class ReaPack::Index
21
21
  :metapackage => [MetaHeader::BOOLEAN],
22
22
  }.freeze
23
23
 
24
- WITH_MAIN = [:script, :effect].freeze
24
+ META_TYPES = [:extension, :data].freeze
25
25
 
26
26
  def initialize(cat, pkg, mh, index)
27
27
  @cat, @pkg, @mh, @index = cat, pkg, mh, index
28
- @is_main = !@mh[:metapackage] && WITH_MAIN.include?(pkg.type)
28
+
29
+ @mh[:metapackage] = META_TYPES.include?(pkg.type) if mh[:metapackage].nil?
30
+
29
31
  @cselector = @index.cdetector[pkg.path]
30
32
  end
31
33
 
@@ -47,7 +49,7 @@ class ReaPack::Index
47
49
  @cselector.clear
48
50
  sources = parse_provides @mh[:provides]
49
51
 
50
- if @is_main && sources.none? {|src| src.file.nil? }
52
+ if !@mh[:metapackage] && sources.none? {|src| src.file.nil? }
51
53
  # add the package itself as a main source
52
54
  src = Source.new make_url(@pkg.path), true
53
55
  sources.unshift src
@@ -112,7 +114,7 @@ class ReaPack::Index
112
114
  line.url_template ? expanded : file
113
115
 
114
116
  if file == @pkg.path
115
- src.main = @is_main if line.main.nil?
117
+ src.main = !@mh[:metapackage] if line.main.nil?
116
118
  else
117
119
  if line.url_template
118
120
  src.file = file
@@ -29,8 +29,8 @@ Gem::Specification.new do |spec|
29
29
  spec.add_runtime_dependency 'addressable', '~> 2.4'
30
30
  spec.add_runtime_dependency 'colorize', '~> 0.7'
31
31
  spec.add_runtime_dependency 'gitable', '~> 0.3'
32
- spec.add_runtime_dependency 'metaheader', '~> 1.2'
33
- spec.add_runtime_dependency 'nokogiri', '~> 1.6.8.rc2'
32
+ spec.add_runtime_dependency 'metaheader', '~> 1.2.1'
33
+ spec.add_runtime_dependency 'nokogiri', '~> 1.6.8'
34
34
  spec.add_runtime_dependency 'pandoc-ruby', '~> 2.0'
35
35
  spec.add_runtime_dependency 'rugged', '~> 0.24'
36
36
  spec.add_runtime_dependency 'stable_sort', '~> 1.1'
@@ -2,7 +2,7 @@
2
2
  !include Sections.nsh
3
3
  !include StrRep.nsh
4
4
 
5
- !define VERSION "1.0rc2"
5
+ !define VERSION "1.0rc3"
6
6
  !define NAME "ReaPack Index ${VERSION}"
7
7
  !define LONG_VERSION "0.1.0.0"
8
8
 
@@ -11,8 +11,8 @@
11
11
  !define RUBYINSTALLER_URL \
12
12
  "http://dl.bintray.com/oneclick/rubyinstaller/${RUBYINSTALLER_FILE}"
13
13
 
14
- !define PANDOC_VERSION "1.17.0.2"
15
- !define PANDOC_FILE "pandoc-${PANDOC_VERSION}-windows.msi"
14
+ !define PANDOC_VERSION "1.17.1"
15
+ !define PANDOC_FILE "pandoc-${PANDOC_VERSION}-1-windows.msi"
16
16
  !define PANDOC_URL \
17
17
  "https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/${PANDOC_FILE}"
18
18
 
@@ -52,7 +52,7 @@ class TestCLI::Scan < MiniTest::Test
52
52
  end
53
53
  end
54
54
 
55
- def test_wd_subdirectory
55
+ def test_workingdir_is_subdirectory
56
56
  wrapper do
57
57
  @git.create_commit 'initial commit',
58
58
  [mkfile('cat/test1.lua', '@version 1.0')]
@@ -193,8 +193,8 @@ processing [a-f0-9]{7}: third commit
193
193
  wrapper ['--ignore=Hello', '--ignore=Chunky/Bacon.lua',
194
194
  '--ignore=test2.lua'], setup: setup do
195
195
  @git.create_commit 'initial commit', [
196
- mkfile('Hello/World.lua', 'konnichiwa'),
197
- mkfile('Chunky/Bacon.lua', 'konnichiwa'),
196
+ mkfile('Hello/World.lua', '@version 1.0'),
197
+ mkfile('Chunky/Bacon.lua', '@version 1.0'),
198
198
  mkfile('Directory/test2.lua', '@version 1.0'),
199
199
  ]
200
200
 
@@ -224,6 +224,51 @@ processing [a-f0-9]{7}: third commit
224
224
  end
225
225
  end
226
226
 
227
+ def test_remove_before_scan
228
+ wrapper do
229
+ contents = "@version 1.0\n@provides file"
230
+
231
+ @git.create_commit 'initial commit', [
232
+ mkfile('cat/testz.lua', contents),
233
+ mkfile('cat/file'),
234
+ ]
235
+
236
+ File.delete mkpath('cat/testz.lua')
237
+ @git.create_commit 'second commit', [
238
+ mkpath('cat/testz.lua'),
239
+ mkfile('cat/testa.lua', contents),
240
+ ]
241
+
242
+ _, stderr = capture_io do
243
+ assert_equal true, @cli.run
244
+ end
245
+
246
+ refute_match 'conflict', stderr
247
+ end
248
+ end
249
+
250
+ def test_noindex_before_scan
251
+ wrapper do
252
+ contents = "@version 1.0\n@provides file"
253
+
254
+ @git.create_commit 'initial commit', [
255
+ mkfile('cat/testz.lua', contents),
256
+ mkfile('cat/file'),
257
+ ]
258
+
259
+ @git.create_commit 'second commit', [
260
+ mkfile('cat/testz.lua', contents .. "\n@noindex"),
261
+ mkfile('cat/testa.lua', contents),
262
+ ]
263
+
264
+ _, stderr = capture_io do
265
+ assert_equal true, @cli.run
266
+ end
267
+
268
+ refute_match 'conflict', stderr
269
+ end
270
+ end
271
+
227
272
  def test_specify_commit
228
273
  # --progress is enabled to check for FloatDomainError: Infinity errors
229
274
  options = ['--progress', '--scan']
@@ -10,9 +10,10 @@ class TestIndex::Metadata < MiniTest::Test
10
10
 
11
11
  assert_equal 0, index.links(:website).size
12
12
  index.eval_link :website, 'http://test.com'
13
- assert_equal 1, index.links(:website).size
13
+ index.eval_link :website, 'http://test.com?query=string'
14
+ assert_equal 2, index.links(:website).size
14
15
 
15
- assert_equal '1 new website link, empty index', index.changelog
16
+ assert_equal '2 new website links, empty index', index.changelog
16
17
 
17
18
  index.write!
18
19
  end
@@ -171,10 +171,10 @@ class TestIndex::Scan < MiniTest::Test
171
171
  refute_match '<category', contents
172
172
  end
173
173
 
174
- def test_metapackage
174
+ def test_metapackage_on
175
175
  index = ReaPack::Index.new @dummy_path
176
176
  index.url_template = 'http://host/$path'
177
- index.files = ['Category/script.lua', 'Category/test']
177
+ index.files = ['Category/script.lua']
178
178
 
179
179
  error = assert_raises ReaPack::Index::Error do
180
180
  index.scan index.files.first, "@version 1.0\n@metapackage"
@@ -183,6 +183,14 @@ class TestIndex::Scan < MiniTest::Test
183
183
  assert_equal 'no files provided', error.message
184
184
  end
185
185
 
186
+ def test_metapackage_off
187
+ index = ReaPack::Index.new @dummy_path
188
+ index.url_template = 'http://host/$path'
189
+ index.files = ['Category/extension.ext']
190
+
191
+ index.scan index.files.first, "@version 1.0\n@metapackage false"
192
+ end
193
+
186
194
  def test_version_time
187
195
  index = ReaPack::Index.new @dummy_path
188
196
  index.url_template = 'http://host/$path'
data/test/test_scanner.rb CHANGED
@@ -6,7 +6,6 @@ class TestScanner < MiniTest::Test
6
6
  @cat = MiniTest::Mock.new
7
7
 
8
8
  @pkg = MiniTest::Mock.new
9
- @pkg.expect :type, :script
10
9
  @pkg.expect :path, 'Hello/World.lua'
11
10
  @pkg.expect :path, 'Hello/World.lua'
12
11
 
@@ -14,7 +13,7 @@ class TestScanner < MiniTest::Test
14
13
  @ver.expect :name, '1.0'
15
14
 
16
15
  @mh = MiniTest::Mock.new
17
- @mh.expect :[], nil, [:metapackage]
16
+ @mh.expect :[], true, [:metapackage]
18
17
 
19
18
  @cdetector = MiniTest::Mock.new
20
19
  @cdetector.expect :[], nil, ['Hello/World.lua']
@@ -140,6 +139,10 @@ class TestScanner < MiniTest::Test
140
139
  error = assert_raises(ReaPack::Index::Error) { @scanner.run }
141
140
  assert_equal "invalid value for tag 'version'", error.message
142
141
 
142
+ @mh[:version] = 'v1.0'
143
+ error = assert_raises(ReaPack::Index::Error) { @scanner.run }
144
+ assert_equal "invalid value for tag 'version'", error.message
145
+
143
146
  @mh[:version] = true
144
147
  error = assert_raises(ReaPack::Index::Error) { @scanner.run }
145
148
  assert_equal "missing value for tag 'version'", error.message
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reapack-index
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0rc2
4
+ version: 1.0rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - cfillion
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-20 00:00:00.000000000 Z
11
+ date: 2016-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -128,28 +128,28 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '1.2'
131
+ version: 1.2.1
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '1.2'
138
+ version: 1.2.1
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: nokogiri
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 1.6.8.rc2
145
+ version: 1.6.8
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 1.6.8.rc2
152
+ version: 1.6.8
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: pandoc-ruby
155
155
  requirement: !ruby/object:Gem::Requirement