Skip to content

Commit 6967045

Browse files
authored
Merge branch 'main' into 541-update-version-range-spec-rst
2 parents 74f796a + 69a0024 commit 6967045

33 files changed

Lines changed: 1620 additions & 305 deletions

PURL-TYPES.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ repository with:
6262

6363
- a new JSON definition file under `types/`.
6464
- a new JSON test file file under `tests/types/`.
65-
66-
65+
66+
6767
Ensure that your proposal follows the **PURL Type Definition Schema** and includes all required
6868
fields. For this see the README-dev.rst for details to run local checks.
6969

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,34 @@
1-
Development setup and instructions
2-
=====================================
1+
# Development setup and instructions
32

43
We use some code:
54

65
- to validate the JSON schemas for correctness and format them, and
76
- to validate that the test suite data files are schema-valid.
87

98
To setup an environment to contribute to the Package-URL spec and standard, follow these
10-
instructions::
9+
instructions:
1110

12-
Setup
13-
-------
11+
## Setup
1412

1513
1. Ensure that you have a recent Python version 3 and Make installed.
16-
2. Configure your environment::
14+
2. Configure your environment:
1715

16+
```bash
1817
make conf
18+
```
1919

20-
Usage
21-
-------
20+
## Usage
2221

23-
To validate that the schemas and data files are correct, run::
24-
25-
make check
22+
To validate that the schemas and data files are correct, run:
2623

24+
```bash
25+
make check
26+
```
2727

2828
To regenerate the Python utility model code from the JSON schemas, then regenerate the
29-
PURL type documentation from the JSON PURL type definition files, run::
30-
31-
make generate
32-
make docs
29+
PURL type documentation from the JSON PURL type definition files, run:
3330

31+
```bash
32+
make generate
33+
make docs
34+
```

README.rst renamed to README.md

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
1-
Context
2-
=======
1+
# Context
32

43
We build and release software by massively consuming and producing software
54
packages such as NPMs, RPMs, Rubygems, etc.
65

76
Each package manager, platform, type or ecosystem has its own conventions and
87
protocols to identify, locate and provision software packages.
98

10-
11-
Problem
12-
=======
9+
# Problem
1310

1411
When tools, APIs and databases process or store multiple package types, it is
1512
difficult to reference the same software package across tools in a uniform way.
@@ -48,9 +45,7 @@ differences in syntax, naming and conventions:
4845
- Sonatype Lifecycle uses a format id followed by format specific coordinates.
4946
https://links.sonatype.com/products/nxiq/doc/component-identifier
5047

51-
52-
Solution
53-
========
48+
# Solution
5449

5550
A `purl` or package URL is an attempt to standardize existing approaches to
5651
reliably identify and locate software packages.
@@ -62,17 +57,14 @@ packaging conventions, tools, APIs and databases.
6257
Such a package URL is useful to reliably reference the same software package
6358
using a simple and expressive syntax and conventions based on familiar URLs.
6459

65-
6660
Check also this short `purl` presentation (with video) at FOSDEM 2018
6761
https://fosdem.org/2018/schedule/event/purl/ for an overview.
6862

69-
70-
purl
71-
~~~~~
63+
## purl
7264

7365
`purl` stands for **package URL**.
7466

75-
A `purl` is a URL composed of seven components::
67+
A `purl` is a URL composed of seven components:
7668

7769
scheme:type/namespace/name@version?qualifiers#subpath
7870

@@ -94,20 +86,14 @@ The definition for each components is:
9486
- **subpath**: extra subpath within a package, relative to the package root.
9587
Optional.
9688

97-
9889
Components are designed such that they form a hierarchy from the most significant component
9990
on the left to the least significant component on the right.
10091

101-
10292
A `purl` must NOT contain a URL Authority i.e. there is no support for
10393
`username`, `password`, `host` and `port` components. A `namespace` segment may
10494
sometimes look like a `host` but its interpretation is specific to a `type`.
10595

106-
107-
Some `purl` examples
108-
~~~~~~~~~~~~~~~~~~~~
109-
110-
::
96+
## Some `purl` examples
11197

11298
pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c
11399

@@ -138,23 +124,19 @@ Some `purl` examples
138124

139125
(NB: some checksums are truncated for brevity)
140126

141-
142-
Specification details
143-
~~~~~~~~~~~~~~~~~~~~~
127+
## Specification details
144128

145129
The `purl` specification consists of a core syntax definition and independent
146130
type definitions:
147131

148132
- `Package URL core <PURL-SPECIFICATION.rst>`_: Defines a versioned and
149133
formalized format, syntax, and rules used to represent and validate `purl`.
150134

151-
- `Type definitions <PURL-TYPES.rst>`_: Defines `purl` types (e.g. maven, npm,
135+
- `Type definitions <PURL-TYPES.md>`_: Defines `purl` types (e.g. maven, npm,
152136
cargo, rpm, etc) independent of the core specification. Definitions also
153137
include types reserved for future use.
154138

155-
156-
Known implementations
157-
~~~~~~~~~~~~~~~~~~~~~
139+
## Known implementations
158140

159141
- .NET: https://github.com/package-url/packageurl-dotnet
160142
- Erlang / Elixir: https://github.com/erlef/purl
@@ -170,14 +152,6 @@ Known implementations
170152
- Rust: https://github.com/package-url/packageurl.rs
171153
- Swift: https://github.com/package-url/packageurl-swift
172154

173-
174-
Users, adopters and links
175-
~~~~~~~~~~~~~~~~~~~~~~~~~
155+
## Users, adopters and links
176156

177157
See the `dedicated adopters list <ADOPTERS.md>`_.
178-
179-
180-
License
181-
~~~~~~~
182-
183-
This document is licensed under the MIT license

docs/candidate-purl-types.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
## Other candidate types to define
2+
3+
- ``android`` for Android apk packages
4+
- ``apache`` for Apache projects packages
5+
- ``atom`` for Atom packages
6+
- ``bower`` for Bower JavaScript packages
7+
- ``brew`` for Homebrew packages
8+
- ``buildroot`` for Buildroot packages
9+
- ``carthage`` for Cocoapods Cocoa packages
10+
- ``chef`` for Chef packages
11+
- ``chocolatey`` for Chocolatey packages
12+
- ``clojars`` for Clojure packages
13+
- ``coreos`` for CoreOS packages
14+
- ``crystal`` for Crystal Shards packages
15+
- ``ctan`` for CTAN TeX packages
16+
- ``drupal`` for Drupal packages
17+
- ``dtype`` for DefinitelyTyped TypeScript type definitions
18+
- ``dub`` for D packages
19+
- ``ebuild`` for Gentoo Linux portage packages
20+
- ``eclipse`` for Eclipse projects packages
21+
- ``elm`` for Elm packages
22+
- ``gitea`` for Gitea-based packages
23+
- ``gitlab`` for GitLab-based packages
24+
- ``gradle`` for Gradle plugins
25+
- ``guix`` for Guix packages
26+
- ``haxe`` for Haxe packages
27+
- ``helm`` for Kubernetes packages
28+
- ``julia`` for Julia packages
29+
- ``melpa`` for Emacs packages
30+
- ``meteor`` for Meteor JavaScript packages
31+
- ``nim`` for Nim packages
32+
- ``nix`` for Nixos packages
33+
- ``opam`` for OCaml packages
34+
- ``openwrt`` for OpenWRT packages
35+
- ``osgi`` for OSGi bundle packages
36+
- ``p2`` for Eclipse p2 packages
37+
- ``pear`` for Pear PHP packages
38+
- ``pecl`` for PECL PHP packages
39+
- ``perl6`` for Perl 6 module packages
40+
- ``platformio`` for PlatformIO packages
41+
- ``puppet`` for Puppet Forge packages
42+
- ``sourceforge`` for Sourceforge-based packages
43+
- ``sublime`` for Sublime packages
44+
- ``terraform`` for Terraform modules
45+
- ``vagrant`` for Vagrant boxes
46+
- ``vim`` for Vim scripts packages
47+
- ``wordpress`` for Wordpress packages
48+
- ``yocto`` for Yocto recipe packages

docs/maintain-purl-types.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
## How PURL Types are maintained
2+
3+
PURL type definitions are maintained as JSON definition files and JSON
4+
test files in the PURL specification repository. These JSON files serve as
5+
the source of truth and define the structure of each PURL type, including:
6+
7+
- Namespace and name formatting rules
8+
- Supported qualifiers
9+
- Repository requirements
10+
- Mapping of PURL concepts to the native ecosystem concepts
11+
12+
On commit, a job automatically:
13+
14+
- Checks that all JSON files are schema-valid
15+
- Formats all the JSON files
16+
- Generates the ``purl-types-index.json`` file containing a list of defined
17+
registered PURL types
18+
- Generates human-readable documentation for each type
19+
20+
## How to Propose a New PURL Type
21+
22+
To propose a new PURL type, create an **issue** and a corresponding
23+
**pull request** in the repository with:
24+
25+
- a new JSON definition file under `types/`.
26+
- a new JSON test file file under `tests/types/`.
27+
28+
Ensure that your proposal follows the **PURL Type Definition Schema** and
29+
includes all required fields. For this see the README-dev.md for details to
30+
run local checks.

docs/standard/about.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ This specification is developed on GitHub with the help of the Package-URL commu
1919
* Community:
2020
* Chat: [Slack Channel](https://cyclonedx.slack.com/archives/C06KTE3BWEB)
2121

22-
Refer to the [colophon](https://ecma-tc54.github.io/ECMA-xxx-PURL/#sec-colophon) for more information on how this document is created.
22+
Refer to the [colophon](https://ecma-tc54.github.io/ECMA-xxx-PURL/#sec-colophon) for more information on how this document was created.
2323

0 commit comments

Comments
 (0)