Skip to content

Commit 84dcafd

Browse files
committed
Merge branch 'main' into 593-set-character-lines-to-78
- Fix merge conflicts. Reference: #593 Signed-off-by: johnmhoran <johnmhoran@gmail.com>
2 parents 6a60de0 + d396ad2 commit 84dcafd

File tree

123 files changed

+1837
-3610
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

123 files changed

+1837
-3610
lines changed

PURL-SPECIFICATION.rst

Lines changed: 5 additions & 559 deletions
Large diffs are not rendered by default.

PURL-TYPES.rst

Lines changed: 2 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -1,126 +1,2 @@
1-
Package-URL Type definitions
2-
============================
3-
4-
Each package manager, platform, type, or ecosystem has its own conventions and
5-
protocols to identify, locate, and provision software packages.
6-
7-
The package **type** is the component of a Package-URL that is used to capture
8-
this information with a short string such as ``maven``, ``npm``, ``nuget``, ``gem``,
9-
``pypi``, etc.
10-
11-
These are registered ``PURL`` package type definitions.
12-
13-
Definitions can also include types reserved for future use.
14-
15-
See also https://github.com/package-url/purl-spec and
16-
`<PURL-SPECIFICATION.rst>`_ for the Package URL specification.
17-
18-
This document no longer contains a manually maintained list of PURL types.
19-
20-
Instead, all PURL type definitions are now maintained in a simple JSON document with
21-
automatically generated documentation.
22-
23-
24-
Where to find PURL Type information
25-
--------------------------------------
26-
27-
- In the JSON Index listing of all defined PURL types at:
28-
`/purl-types-index.json <https://github.com/package-url/purl-spec/tree/main/purl-types-index.json>`_
29-
30-
- In individual JSON files, one for each PURL type definition at:
31-
`/types <https://github.com/package-url/purl-spec/tree/main/types>`_
32-
33-
- As Markdown documentation, generated from for each PURL type JSON definition at:
34-
`/types-doc <https://github.com/package-url/purl-spec/tree/main/types-doc>`_
35-
36-
37-
How PURL Types are maintained
38-
------------------------------
39-
40-
All PURL type definitions are maintained as JSON definition files and JSON test files in the PURL
41-
specification repository. These JSON files serve as the source of truth and define the
42-
structure of each PURL type, including:
43-
44-
- Namespace and name formatting rules
45-
- Supported qualifiers
46-
- Repository requirements
47-
- Mapping of PURL concepts to the native ecosystem concepts
48-
49-
On commit, a job automatically:
50-
51-
- Checks that all JSON files are schema-valid
52-
- Formats all the JSON files
53-
- Generates the ``purl-types-index.json`` file containing a list of defined registered PURL types
54-
- Generates human-readable documentation for each type
55-
56-
57-
How to Propose a New PURL Type
58-
------------------------------
59-
60-
To propose a new PURL type, create an **issue** and a corresponding **pull request** to the
61-
repository with:
62-
63-
- a new JSON definition file under `types/`.
64-
- a new JSON test file file under `tests/types/`.
65-
66-
67-
Ensure that your proposal follows the **PURL Type Definition Schema** and includes all required
68-
fields. For this see the README-dev.rst for details to run local checks.
69-
70-
71-
72-
Other candidate types to define
73-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74-
75-
- ``android`` for Android apk packages:
76-
- ``apache`` for Apache projects packages:
77-
- ``atom`` for Atom packages:
78-
- ``bower`` for Bower JavaScript packages:
79-
- ``brew`` for Homebrew packages:
80-
- ``buildroot`` for Buildroot packages
81-
- ``carthage`` for Cocoapods Cocoa packages:
82-
- ``chef`` for Chef packages:
83-
- ``chocolatey`` for Chocolatey packages
84-
- ``clojars`` for Clojure packages:
85-
- ``coreos`` for CoreOS packages:
86-
- ``crystal`` for Crystal Shards packages:
87-
- ``ctan`` for CTAN TeX packages:
88-
- ``drupal`` for Drupal packages:
89-
- ``dtype`` for DefinitelyTyped TypeScript type definitions:
90-
- ``dub`` for D packages:
91-
- ``ebuild`` for Gentoo Linux portage packages:
92-
- ``eclipse`` for Eclipse projects packages:
93-
- ``elm`` for Elm packages:
94-
- ``gitea`` for Gitea-based packages:
95-
- ``gitlab`` for GitLab-based packages:
96-
- ``gradle`` for Gradle plugins
97-
- ``guix`` for Guix packages:
98-
- ``haxe`` for Haxe packages:
99-
- ``helm`` for Kubernetes packages
100-
- ``julia`` for Julia packages:
101-
- ``melpa`` for Emacs packages
102-
- ``meteor`` for Meteor JavaScript packages:
103-
- ``nim`` for Nim packages:
104-
- ``nix`` for Nixos packages:
105-
- ``opam`` for OCaml packages:
106-
- ``openwrt`` for OpenWRT packages:
107-
- ``osgi`` for OSGi bundle packages:
108-
- ``p2`` for Eclipse p2 packages:
109-
- ``pear`` for Pear PHP packages:
110-
- ``pecl`` for PECL PHP packages:
111-
- ``perl6`` for Perl 6 module packages:
112-
- ``platformio`` for PlatformIO packages:
113-
- ``puppet`` for Puppet Forge packages:
114-
- ``sourceforge`` for Sourceforge-based packages:
115-
- ``sublime`` for Sublime packages:
116-
- ``terraform`` for Terraform modules
117-
- ``vagrant`` for Vagrant boxes
118-
- ``vim`` for Vim scripts packages:
119-
- ``wordpress`` for Wordpress packages:
120-
- ``yocto`` for Yocto recipe packages:
121-
122-
123-
License
124-
~~~~~~~
125-
126-
This document is licensed under the MIT license.
1+
The contents of this file: purl-spec/PURL-TYPES.rst have been moved to:
2+
purl-spec/docs/standard/types.md and purl-spec/docs/maintain-purl-types.md.
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

0 commit comments

Comments
 (0)