purl 1.2.0 → 1.4.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/CHANGELOG.md +20 -0
- data/README.md +170 -1
- data/exe/purl +435 -0
- data/lib/purl/package_url.rb +36 -102
- data/lib/purl/registry_url.rb +146 -21
- data/lib/purl/version.rb +1 -1
- data/purl-types.json +44 -85
- metadata +19 -3
data/purl-types.json
CHANGED
|
@@ -50,10 +50,8 @@
|
|
|
50
50
|
],
|
|
51
51
|
"registry_config": {
|
|
52
52
|
"base_url": "https://crates.io/crates",
|
|
53
|
-
"route_patterns": [
|
|
54
|
-
"https://crates.io/crates/:name"
|
|
55
|
-
],
|
|
56
53
|
"reverse_regex": "^https://crates\\.io/crates/([^/?#]+)",
|
|
54
|
+
"uri_template": "https://crates.io/crates/{name}",
|
|
57
55
|
"components": {
|
|
58
56
|
"namespace": false,
|
|
59
57
|
"version_in_url": false
|
|
@@ -70,10 +68,8 @@
|
|
|
70
68
|
],
|
|
71
69
|
"registry_config": {
|
|
72
70
|
"base_url": "https://cocoapods.org/pods",
|
|
73
|
-
"route_patterns": [
|
|
74
|
-
"https://cocoapods.org/pods/:name"
|
|
75
|
-
],
|
|
76
71
|
"reverse_regex": "^https://cocoapods\\.org/pods/([^/?#]+)",
|
|
72
|
+
"uri_template": "https://cocoapods.org/pods/{name}",
|
|
77
73
|
"components": {
|
|
78
74
|
"namespace": false,
|
|
79
75
|
"version_in_url": false
|
|
@@ -83,6 +79,7 @@
|
|
|
83
79
|
"composer": {
|
|
84
80
|
"description": "Composer PHP packages",
|
|
85
81
|
"default_registry": "https://packagist.org",
|
|
82
|
+
"namespace_requirement": "required",
|
|
86
83
|
"examples": [
|
|
87
84
|
"pkg:composer/symfony/console@6.1.7",
|
|
88
85
|
"pkg:composer/laravel/framework@9.42.2",
|
|
@@ -90,10 +87,8 @@
|
|
|
90
87
|
],
|
|
91
88
|
"registry_config": {
|
|
92
89
|
"base_url": "https://packagist.org/packages",
|
|
93
|
-
"route_patterns": [
|
|
94
|
-
"https://packagist.org/packages/:namespace/:name"
|
|
95
|
-
],
|
|
96
90
|
"reverse_regex": "^https://packagist\\.org/packages/([^/?#]+)/([^/?#]+)",
|
|
91
|
+
"uri_template": "https://packagist.org/packages/{namespace}/{name}",
|
|
97
92
|
"components": {
|
|
98
93
|
"namespace": true,
|
|
99
94
|
"namespace_required": true,
|
|
@@ -111,10 +106,8 @@
|
|
|
111
106
|
],
|
|
112
107
|
"registry_config": {
|
|
113
108
|
"base_url": "https://conan.io/center/recipes",
|
|
114
|
-
"route_patterns": [
|
|
115
|
-
"https://conan.io/center/recipes/:name"
|
|
116
|
-
],
|
|
117
109
|
"reverse_regex": "^https://conan\\.io/center/recipes/([^/?#]+)",
|
|
110
|
+
"uri_template": "https://conan.io/center/recipes/{name}",
|
|
118
111
|
"components": {
|
|
119
112
|
"namespace": false,
|
|
120
113
|
"version_in_url": false
|
|
@@ -131,10 +124,8 @@
|
|
|
131
124
|
],
|
|
132
125
|
"registry_config": {
|
|
133
126
|
"base_url": "https://anaconda.org/conda-forge",
|
|
134
|
-
"route_patterns": [
|
|
135
|
-
"https://anaconda.org/conda-forge/:name"
|
|
136
|
-
],
|
|
137
127
|
"reverse_regex": "^https://anaconda\\.org/conda-forge/([^/?#]+)",
|
|
128
|
+
"uri_template": "https://anaconda.org/conda-forge/{name}",
|
|
138
129
|
"components": {
|
|
139
130
|
"namespace": false,
|
|
140
131
|
"version_in_url": false
|
|
@@ -151,10 +142,8 @@
|
|
|
151
142
|
],
|
|
152
143
|
"registry_config": {
|
|
153
144
|
"base_url": "https://metacpan.org/dist",
|
|
154
|
-
"route_patterns": [
|
|
155
|
-
"https://metacpan.org/dist/:name"
|
|
156
|
-
],
|
|
157
145
|
"reverse_regex": "^https://metacpan\\.org/dist/([^/?#]+)",
|
|
146
|
+
"uri_template": "https://metacpan.org/dist/{name}",
|
|
158
147
|
"components": {
|
|
159
148
|
"namespace": false,
|
|
160
149
|
"version_in_url": false
|
|
@@ -164,6 +153,7 @@
|
|
|
164
153
|
"cran": {
|
|
165
154
|
"description": "CRAN R packages",
|
|
166
155
|
"default_registry": "https://cran.r-project.org",
|
|
156
|
+
"namespace_requirement": "prohibited",
|
|
167
157
|
"examples": [
|
|
168
158
|
"pkg:cran/ggplot2@3.4.0",
|
|
169
159
|
"pkg:cran/dplyr@1.0.10",
|
|
@@ -193,6 +183,7 @@
|
|
|
193
183
|
"gem": {
|
|
194
184
|
"description": "RubyGems",
|
|
195
185
|
"default_registry": "https://rubygems.org",
|
|
186
|
+
"namespace_requirement": "prohibited",
|
|
196
187
|
"examples": [
|
|
197
188
|
"pkg:gem/ruby-advisory-db-check@0.12.4",
|
|
198
189
|
"pkg:gem/rails@7.0.4",
|
|
@@ -200,11 +191,9 @@
|
|
|
200
191
|
],
|
|
201
192
|
"registry_config": {
|
|
202
193
|
"base_url": "https://rubygems.org/gems",
|
|
203
|
-
"route_patterns": [
|
|
204
|
-
"https://rubygems.org/gems/:name",
|
|
205
|
-
"https://rubygems.org/gems/:name/versions/:version"
|
|
206
|
-
],
|
|
207
194
|
"reverse_regex": "^https://rubygems\\.org/gems/([^/?#]+)(?:/versions/([^/?#]+))?",
|
|
195
|
+
"uri_template": "https://rubygems.org/gems/{name}",
|
|
196
|
+
"uri_template_with_version": "https://rubygems.org/gems/{name}/versions/{version}",
|
|
208
197
|
"components": {
|
|
209
198
|
"namespace": false,
|
|
210
199
|
"version_in_url": true,
|
|
@@ -240,11 +229,8 @@
|
|
|
240
229
|
],
|
|
241
230
|
"registry_config": {
|
|
242
231
|
"base_url": "https://pkg.go.dev",
|
|
243
|
-
"route_patterns": [
|
|
244
|
-
"https://pkg.go.dev/:namespace/:name",
|
|
245
|
-
"https://pkg.go.dev/:full_path"
|
|
246
|
-
],
|
|
247
232
|
"reverse_regex": "^https://pkg\\.go\\.dev/(.+)",
|
|
233
|
+
"uri_template": "https://pkg.go.dev/{namespace}/{name}",
|
|
248
234
|
"components": {
|
|
249
235
|
"namespace": true,
|
|
250
236
|
"namespace_required": true,
|
|
@@ -263,11 +249,9 @@
|
|
|
263
249
|
],
|
|
264
250
|
"registry_config": {
|
|
265
251
|
"base_url": "https://hackage.haskell.org/package",
|
|
266
|
-
"route_patterns": [
|
|
267
|
-
"https://hackage.haskell.org/package/:name",
|
|
268
|
-
"https://hackage.haskell.org/package/:name-:version"
|
|
269
|
-
],
|
|
270
252
|
"reverse_regex": "^https://hackage\\.haskell\\.org/package/([^/?#-]+)(?:-([^/?#]+))?",
|
|
253
|
+
"uri_template": "https://hackage.haskell.org/package/{name}",
|
|
254
|
+
"uri_template_with_version": "https://hackage.haskell.org/package/{name}-{version}",
|
|
271
255
|
"components": {
|
|
272
256
|
"namespace": false,
|
|
273
257
|
"version_in_url": true,
|
|
@@ -285,10 +269,8 @@
|
|
|
285
269
|
],
|
|
286
270
|
"registry_config": {
|
|
287
271
|
"base_url": "https://hex.pm/packages",
|
|
288
|
-
"route_patterns": [
|
|
289
|
-
"https://hex.pm/packages/:name"
|
|
290
|
-
],
|
|
291
272
|
"reverse_regex": "^https://hex\\.pm/packages/([^/?#]+)",
|
|
273
|
+
"uri_template": "https://hex.pm/packages/{name}",
|
|
292
274
|
"components": {
|
|
293
275
|
"namespace": false,
|
|
294
276
|
"version_in_url": false
|
|
@@ -299,16 +281,14 @@
|
|
|
299
281
|
"description": "Hugging Face ML models",
|
|
300
282
|
"default_registry": "https://huggingface.co",
|
|
301
283
|
"examples": [
|
|
302
|
-
"pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027",
|
|
284
|
+
"pkg:huggingface/huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027",
|
|
303
285
|
"pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co"
|
|
304
286
|
],
|
|
305
287
|
"registry_config": {
|
|
306
288
|
"base_url": "https://huggingface.co",
|
|
307
|
-
"route_patterns": [
|
|
308
|
-
"https://huggingface.co/:namespace/:name",
|
|
309
|
-
"https://huggingface.co/:name"
|
|
310
|
-
],
|
|
311
289
|
"reverse_regex": "^https://huggingface\\.co/(?:([^/?#]+)/)?([^/?#]+)",
|
|
290
|
+
"uri_template": "https://huggingface.co/{namespace}/{name}",
|
|
291
|
+
"uri_template_no_namespace": "https://huggingface.co/{name}",
|
|
312
292
|
"components": {
|
|
313
293
|
"namespace": true,
|
|
314
294
|
"namespace_required": false,
|
|
@@ -326,11 +306,9 @@
|
|
|
326
306
|
],
|
|
327
307
|
"registry_config": {
|
|
328
308
|
"base_url": "https://luarocks.org/modules",
|
|
329
|
-
"route_patterns": [
|
|
330
|
-
"https://luarocks.org/modules/:namespace/:name",
|
|
331
|
-
"https://luarocks.org/modules/:name"
|
|
332
|
-
],
|
|
333
309
|
"reverse_regex": "^https://luarocks\\.org/modules/(?:([^/?#]+)/)?([^/?#]+)",
|
|
310
|
+
"uri_template": "https://luarocks.org/modules/{namespace}/{name}",
|
|
311
|
+
"uri_template_no_namespace": "https://luarocks.org/modules/{name}",
|
|
334
312
|
"components": {
|
|
335
313
|
"namespace": true,
|
|
336
314
|
"namespace_required": false,
|
|
@@ -341,6 +319,7 @@
|
|
|
341
319
|
"maven": {
|
|
342
320
|
"description": "PURL type for Maven JARs and related artifacts.",
|
|
343
321
|
"default_registry": "https://repo.maven.apache.org/maven2",
|
|
322
|
+
"namespace_requirement": "required",
|
|
344
323
|
"examples": [
|
|
345
324
|
"pkg:maven/org.apache.commons/commons-lang3@3.12.0",
|
|
346
325
|
"pkg:maven/junit/junit@4.13.2",
|
|
@@ -348,11 +327,9 @@
|
|
|
348
327
|
],
|
|
349
328
|
"registry_config": {
|
|
350
329
|
"base_url": "https://mvnrepository.com/artifact",
|
|
351
|
-
"route_patterns": [
|
|
352
|
-
"https://mvnrepository.com/artifact/:namespace/:name",
|
|
353
|
-
"https://mvnrepository.com/artifact/:namespace/:name/:version"
|
|
354
|
-
],
|
|
355
330
|
"reverse_regex": "^https://mvnrepository\\.com/artifact/([^/?#]+)/([^/?#]+)(?:/([^/?#]+))?",
|
|
331
|
+
"uri_template": "https://mvnrepository.com/artifact/{namespace}/{name}",
|
|
332
|
+
"uri_template_with_version": "https://mvnrepository.com/artifact/{namespace}/{name}/{version}",
|
|
356
333
|
"components": {
|
|
357
334
|
"namespace": true,
|
|
358
335
|
"namespace_required": true,
|
|
@@ -372,6 +349,7 @@
|
|
|
372
349
|
"npm": {
|
|
373
350
|
"description": "PURL type for npm packages.",
|
|
374
351
|
"default_registry": "https://registry.npmjs.org",
|
|
352
|
+
"namespace_requirement": "optional",
|
|
375
353
|
"examples": [
|
|
376
354
|
"pkg:npm/@babel/core@7.20.0",
|
|
377
355
|
"pkg:npm/lodash@4.17.21",
|
|
@@ -379,13 +357,11 @@
|
|
|
379
357
|
],
|
|
380
358
|
"registry_config": {
|
|
381
359
|
"base_url": "https://www.npmjs.com/package",
|
|
382
|
-
"route_patterns": [
|
|
383
|
-
"https://www.npmjs.com/package/:namespace/:name",
|
|
384
|
-
"https://www.npmjs.com/package/:name",
|
|
385
|
-
"https://www.npmjs.com/package/:namespace/:name/v/:version",
|
|
386
|
-
"https://www.npmjs.com/package/:name/v/:version"
|
|
387
|
-
],
|
|
388
360
|
"reverse_regex": "^https://(?:www\\.)?npmjs\\.com/package/(?:(@[^/]+)/)?([^/?#]+)(?:/v/([^/?#]+))?",
|
|
361
|
+
"uri_template": "https://www.npmjs.com/package/{namespace}/{name}",
|
|
362
|
+
"uri_template_no_namespace": "https://www.npmjs.com/package/{name}",
|
|
363
|
+
"uri_template_with_version": "https://www.npmjs.com/package/{namespace}/{name}/v/{version}",
|
|
364
|
+
"uri_template_with_version_no_namespace": "https://www.npmjs.com/package/{name}/v/{version}",
|
|
389
365
|
"components": {
|
|
390
366
|
"namespace": true,
|
|
391
367
|
"namespace_required": false,
|
|
@@ -405,11 +381,9 @@
|
|
|
405
381
|
],
|
|
406
382
|
"registry_config": {
|
|
407
383
|
"base_url": "https://www.nuget.org/packages",
|
|
408
|
-
"route_patterns": [
|
|
409
|
-
"https://www.nuget.org/packages/:name",
|
|
410
|
-
"https://www.nuget.org/packages/:name/:version"
|
|
411
|
-
],
|
|
412
384
|
"reverse_regex": "^https://(?:www\\.)?nuget\\.org/packages/([^/?#]+)(?:/([^/?#]+))?",
|
|
385
|
+
"uri_template": "https://www.nuget.org/packages/{name}",
|
|
386
|
+
"uri_template_with_version": "https://www.nuget.org/packages/{name}/{version}",
|
|
413
387
|
"components": {
|
|
414
388
|
"namespace": false,
|
|
415
389
|
"version_in_url": true,
|
|
@@ -437,10 +411,8 @@
|
|
|
437
411
|
],
|
|
438
412
|
"registry_config": {
|
|
439
413
|
"base_url": "https://pub.dev/packages",
|
|
440
|
-
"route_patterns": [
|
|
441
|
-
"https://pub.dev/packages/:name"
|
|
442
|
-
],
|
|
443
414
|
"reverse_regex": "^https://pub\\.dev/packages/([^/?#]+)",
|
|
415
|
+
"uri_template": "https://pub.dev/packages/{name}",
|
|
444
416
|
"components": {
|
|
445
417
|
"namespace": false,
|
|
446
418
|
"version_in_url": false
|
|
@@ -457,11 +429,9 @@
|
|
|
457
429
|
],
|
|
458
430
|
"registry_config": {
|
|
459
431
|
"base_url": "https://pypi.org/project",
|
|
460
|
-
"route_patterns": [
|
|
461
|
-
"https://pypi.org/project/:name/",
|
|
462
|
-
"https://pypi.org/project/:name/:version/"
|
|
463
|
-
],
|
|
464
432
|
"reverse_regex": "^https://pypi\\.org/project/([^/?#]+)/?(?:([^/?#]+)/?)?",
|
|
433
|
+
"uri_template": "https://pypi.org/project/{name}/",
|
|
434
|
+
"uri_template_with_version": "https://pypi.org/project/{name}/{version}/",
|
|
465
435
|
"components": {
|
|
466
436
|
"namespace": false,
|
|
467
437
|
"version_in_url": true,
|
|
@@ -483,7 +453,7 @@
|
|
|
483
453
|
"default_registry": null,
|
|
484
454
|
"examples": [
|
|
485
455
|
"pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25",
|
|
486
|
-
"pkg:rpm/centerim@4.22.10-1.el6?arch=i686&epoch=1&distro=fedora-25"
|
|
456
|
+
"pkg:rpm/fedora/centerim@4.22.10-1.el6?arch=i686&epoch=1&distro=fedora-25"
|
|
487
457
|
]
|
|
488
458
|
},
|
|
489
459
|
"swid": {
|
|
@@ -498,16 +468,15 @@
|
|
|
498
468
|
"swift": {
|
|
499
469
|
"description": "Swift packages",
|
|
500
470
|
"default_registry": "https://swiftpackageindex.com",
|
|
471
|
+
"namespace_requirement": "required",
|
|
501
472
|
"examples": [
|
|
502
473
|
"pkg:swift/github.com/Alamofire/Alamofire@5.6.4",
|
|
503
474
|
"pkg:swift/github.com/apple/swift-package-manager@1.7.0"
|
|
504
475
|
],
|
|
505
476
|
"registry_config": {
|
|
506
477
|
"base_url": "https://swiftpackageindex.com",
|
|
507
|
-
"route_patterns": [
|
|
508
|
-
"https://swiftpackageindex.com/:namespace/:name"
|
|
509
|
-
],
|
|
510
478
|
"reverse_regex": "^https://swiftpackageindex\\.com/([^/?#]+)/([^/?#]+)",
|
|
479
|
+
"uri_template": "https://swiftpackageindex.com/{namespace}/{name}",
|
|
511
480
|
"components": {
|
|
512
481
|
"namespace": true,
|
|
513
482
|
"namespace_required": true,
|
|
@@ -524,11 +493,9 @@
|
|
|
524
493
|
],
|
|
525
494
|
"registry_config": {
|
|
526
495
|
"base_url": "https://clojars.org",
|
|
527
|
-
"route_patterns": [
|
|
528
|
-
"https://clojars.org/:namespace/:name",
|
|
529
|
-
"https://clojars.org/:name"
|
|
530
|
-
],
|
|
531
496
|
"reverse_regex": "^https://clojars\\.org/(?:([^/?#]+)/)?([^/?#]+)",
|
|
497
|
+
"uri_template": "https://clojars.org/{namespace}/{name}",
|
|
498
|
+
"uri_template_no_namespace": "https://clojars.org/{name}",
|
|
532
499
|
"components": {
|
|
533
500
|
"namespace": true,
|
|
534
501
|
"namespace_required": false,
|
|
@@ -545,11 +512,9 @@
|
|
|
545
512
|
],
|
|
546
513
|
"registry_config": {
|
|
547
514
|
"base_url": "https://package.elm-lang.org/packages",
|
|
548
|
-
"route_patterns": [
|
|
549
|
-
"https://package.elm-lang.org/packages/:namespace/:name/latest",
|
|
550
|
-
"https://package.elm-lang.org/packages/:namespace/:name/:version"
|
|
551
|
-
],
|
|
552
515
|
"reverse_regex": "^https://package\\.elm-lang\\.org/packages/([^/?#]+)/([^/?#]+)(?:/([^/?#]+))?",
|
|
516
|
+
"uri_template": "https://package.elm-lang.org/packages/{namespace}/{name}/latest",
|
|
517
|
+
"uri_template_with_version": "https://package.elm-lang.org/packages/{namespace}/{name}/{version}",
|
|
553
518
|
"components": {
|
|
554
519
|
"namespace": true,
|
|
555
520
|
"namespace_required": true,
|
|
@@ -567,11 +532,9 @@
|
|
|
567
532
|
],
|
|
568
533
|
"registry_config": {
|
|
569
534
|
"base_url": "https://deno.land/x",
|
|
570
|
-
"route_patterns": [
|
|
571
|
-
"https://deno.land/x/:name",
|
|
572
|
-
"https://deno.land/x/:name@:version"
|
|
573
|
-
],
|
|
574
535
|
"reverse_regex": "^https://deno\\.land/x/([^/?#@]+)(?:@([^/?#]+))?",
|
|
536
|
+
"uri_template": "https://deno.land/x/{name}",
|
|
537
|
+
"uri_template_with_version": "https://deno.land/x/{name}@{version}",
|
|
575
538
|
"components": {
|
|
576
539
|
"namespace": false,
|
|
577
540
|
"version_in_url": true,
|
|
@@ -588,10 +551,8 @@
|
|
|
588
551
|
],
|
|
589
552
|
"registry_config": {
|
|
590
553
|
"base_url": "https://formulae.brew.sh/formula",
|
|
591
|
-
"route_patterns": [
|
|
592
|
-
"https://formulae.brew.sh/formula/:name"
|
|
593
|
-
],
|
|
594
554
|
"reverse_regex": "^https://formulae\\.brew\\.sh/formula/([^/?#]+)",
|
|
555
|
+
"uri_template": "https://formulae.brew.sh/formula/{name}",
|
|
595
556
|
"components": {
|
|
596
557
|
"namespace": false,
|
|
597
558
|
"version_in_url": false
|
|
@@ -607,10 +568,8 @@
|
|
|
607
568
|
],
|
|
608
569
|
"registry_config": {
|
|
609
570
|
"base_url": "https://bioconductor.org/packages",
|
|
610
|
-
"route_patterns": [
|
|
611
|
-
"https://bioconductor.org/packages/:name"
|
|
612
|
-
],
|
|
613
571
|
"reverse_regex": "^https://bioconductor\\.org/packages/([^/?#]+)",
|
|
572
|
+
"uri_template": "https://bioconductor.org/packages/{name}",
|
|
614
573
|
"components": {
|
|
615
574
|
"namespace": false,
|
|
616
575
|
"version_in_url": false
|
metadata
CHANGED
|
@@ -1,20 +1,35 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: purl
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Nesbitt
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
-
dependencies:
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: addressable
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '2.8'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '2.8'
|
|
12
26
|
description: |-
|
|
13
27
|
This library features comprehensive error handling with namespaced error types, bidirectional registry URL conversion, and JSON-based configuration for cross-language compatibility.
|
|
14
28
|
It supports 37 package types (32 official + 5 additional ecosystems) and is fully compliant with the official PURL specification test suite.
|
|
15
29
|
email:
|
|
16
30
|
- andrewnez@gmail.com
|
|
17
|
-
executables:
|
|
31
|
+
executables:
|
|
32
|
+
- purl
|
|
18
33
|
extensions: []
|
|
19
34
|
extra_rdoc_files: []
|
|
20
35
|
files:
|
|
@@ -26,6 +41,7 @@ files:
|
|
|
26
41
|
- README.md
|
|
27
42
|
- Rakefile
|
|
28
43
|
- SECURITY.md
|
|
44
|
+
- exe/purl
|
|
29
45
|
- lib/purl.rb
|
|
30
46
|
- lib/purl/errors.rb
|
|
31
47
|
- lib/purl/package_url.rb
|