pnu-portstreelint


Namepnu-portstreelint JSON
Version 1.4.2 PyPI version JSON
download
home_pagehttps://github.com/HubTou/portstreelint/
SummaryFreeBSD ports tree lint
upload_time2024-04-14 08:49:54
maintainerNone
docs_urlNone
authorHubert Tournier
requires_python>=3.6
licenseBSD 3-Clause License
keywords pnu-project
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![PyPI package](https://repology.org/badge/version-for-repo/pypi/python:pnu-portstreelint.svg)](https://repology.org/project/python:pnu-portstreelint/versions)
[![FreeBSD port](https://repology.org/badge/version-for-repo/freebsd/python:pnu-portstreelint.svg)](https://repology.org/project/python:pnu-portstreelint/versions)

# Installation
Once you have installed [Python](https://www.python.org/downloads/) and its packages manager [pip](https://pip.pypa.io/en/stable/installation/),
use one of the following commands, depending on if you want only this tool, the full set of PNU tools, or PNU plus a selection of additional third-parties tools:

```
pip install pnu-portstreelint
pip install PNU
pip install 'PNU[freebsd]' # if you use a platform other than FreeBSD
pip install pytnix
```

# PortsTreeLint(8)

## NAME
portstreelint - FreeBSD ports tree lint

## SYNOPSIS
**portstreelint**
\[--nocfg\]
\[--gencfg|-g FILE\]
\[--show-cat|-C\]
\[--show-mnt|-M\]
\[--cat|-c LIST\]
\[--mnt|-m LIST\]
\[--port|-p LIST\]
\[--tree|-t DIR\]
\[--plist NUM\]
\[--broken NUM\]
\[--deprecated NUM\]
\[--forbidden NUM\]
\[--unchanged NUM\]
\[--check-host|-h\]
\[--check-url|-u\]
\[--output|-o FILE\]
\[--debug\]
\[--info\]
\[--version\]
\[--help|-?\]
\[--\]

The aliases **ptlint** and **ptl** are also available to shorten the command name.

## DESCRIPTION
The **portstreelint** utility checks the FreeBSD ports tree Index
and some parts of the ports' Makefiles for errors and warnings.

By default it will scan the whole port tree, but you can select
a subset of the ports with the options *--cat|-c* for categories,
*--mnt|-m* for maintainers and *--port|-p* for ports.
All these options expect a parameter which can be a single item
or a comma-separated list of items.
If you combine several of these operators they will perform as
a logical AND.

The *--mnt|-m* option defaults to @FreeBSD.org for unspecified
domains.

In order to know which categories or maintainers are available
for selection, you can use the *--show-cat|-C* and *--show-mnt|-M*
options to view all the categories and maintainers with their
number of associated ports.

The two costlier analysis are disabled by default.
You can check if the port's www sites hostnames are resolvable
with the *--check-host|-h* option (takes about 15 minutes on the
whole port tree).
And you can check if the port's www sites URL are available
with the *--check-url|-u* option, which implies the previous one
(takes about 6 hours on the whole port tree).

The checks list includes:
* Nonexistent Makefile
* Nonexistent INDEX:port-path
* Unusual INDEX:installation-prefix (warning)
* Too long INDEX:comments (> 70 characters) (warning)
* Uncapitalized INDEX:comments
* INDEX:comments ending with a dot
* INDEX:comments different from Makefile:COMMENT
* Nonexistent INDEX:description-file
* URL ending INDEX:description-file
* INDEX:description-file content same as INDEX:comment
* INDEX:description-file content no longer than INDEX:comment
* Nonexistent pkg-plist, Makefile:PLIST_FILES/PLIST/PLIST_SUB (debug)
* Makefile:PLIST_FILES abuse (warning)
* INDEX:maintainer different from Makefile:MAINTAINER
* Unofficial categories (warning)
* INDEX:categories different from Makefile:CATEGORIES
* Empty INDEX:www-site
* Unresolvable INDEX:www-site (optional)
* Unaccessible INDEX:www-site (optional)
* INDEX:www-site different from Makefile:WWW
* Ports marked as BROKEN, DEPRECATED, FORBIDDEN, IGNORE, RESTRICTED (info)
* Ports marked with an EXPIRATION_DATE (warning)
* Ports marked as BROKEN, FORBIDDEN or DEPRECATED for too long (warning)
* Ports unchanged for a long time (info)
* Makefile:PORTVERSION and Makefile:DISTVERSION used simultaneously
* VuXML vulnerabilities for the current port versions (warning)
* Missing Makefile:LICENSE
* Unofficial licenses (warning)
* Unnecessary Makefile:LICENSE_COMB=single (warning)
* Unnecessary Makefile:LICENSE_COMB=multi (warning)

It's possible to change the default values for PLIST_FILES abuse,
BROKEN_since, DEPRECATED_since, FORBIDDEN_since and Unchanged_since
with the *--plist*, *--broken*, *--deprecated*, *--forbidden* and
*--unchanged* options, followed by a number of files for the first
one and a number of days for the others. And you can select a port
tree in a location other than */usr/ports* with the *--tree|-t*
option.

Finally, there's a *--output|-o* option to generate a CSV delimited
file with the per-maintainer findings to a specified filename. This
allows for automated processing of the results, such as, for example,
sending warning emails, storing results and displaying only diffs
since previous run...

For convenience, you can put your favourite options in a
configuration file, which will be read before processing the
environment and the command line, unless you use the *--nocfg*
option. You can generate a default configuration file with the
*--gencfg|-g* option followed by a filename. This file also offers
full control over the checks to perform, and a way to discard
false-positive vulnerabilities and unwanted licenses report
messages.

### OPTIONS
Options | Use
------- | ---
--nocfg|Don't use the configuration file
--gencfg\|-g FILE|Generate a default configuration file in FILE
--show-cat\|-C|Show categories with ports count
--show-mnt\|-M|Show maintainers with ports count
--cat\|-c LIST|Select only the comma-separated categories in LIST
--mnt\|-m LIST|Select only the comma-separated maintainers in LIST
--port\|-p LIST|Select only the comma-separated ports in LIST
--tree\|-t DIR|Set ports directory (default=/usr/ports)
--plist NUM|Set PLIST_FILES abuse to NUM files
--broken NUM|Set BROKEN since to NUM days
--deprecated NUM|Set DEPRECATED since to NUM days
--forbidden NUM|Set FORBIDDEN since to NUM days
--unchanged NUM|Set Unchanged since to NUM days
--check-host\|-h|Enable checking hostname resolution (long!)
--check-url\|-u|Enable checking URL (very long!)
--output\|-o|Enable per-maintainer CSV output to FILE
--debug|Enable logging at debug level
--info|Enable logging at info level
--version|Print version and exit
--help\|-?|Print usage and this help message and exit
--|Options processing terminator

## ENVIRONMENT
The *PTLINT_DEBUG* environment variable can be set to any value to enable debug mode.

If the system's *PORTSDIR* environment variable is set, it'll be used instead of the
default "/usr/ports". But the *--tree|-t DIR* option will still override it.

## FILES
The whole port tree under */usr/ports*, or the location indicated by the *PORTSDIR*
environment variable, or the *--tree|-t* argument:
- as root, if you have installed portsnap, update to the last version with "portsnap fetch update"
- or, if you have installed git, clone the latest repository with "git clone https://git.FreeBSD.org/ports.git /usr/ports"

[/usr/ports/INDEX-xx](https://wiki.freebsd.org/Ports/INDEX)
: where xx is the major version of FreeBSD that you are using (as I write this xx=14).
- as root, get the last version with "cd /usr/ports ; make fetchindex"
- or rebuild it from your port tree with "cd /usr/ports ; make index"

${HOME}/.ptlint
: an [INI-style](https://docs.python.org/3/library/configparser.html#supported-ini-file-structure) configuration file.
- Generate a default one with the *--gencfg|-g* option and tweak it to your taste.

## EXIT STATUS
The **portstreelint** utility exits 0 on success, and >0 if an error occurs.

## EXAMPLES
To analyze the full port tree in the background, do:
```Shell
$ nohup portstreelint --info -hu > stdout.txt 2> stderr.txt &
```
Results for this example are available there:
* [stdout output](https://www.frbsd.org/xch/stdout.txt),
* [stderr output](https://www.frbsd.org/xch/stderr.txt) for details.

To analyze the full port tree in the background and generate a CSV
file, do:
```Shell
$ nohup portstreelint -huo csv_results.txt > /dev/null 2>&1 &
```
Results for this example are available there:
* [CSV output](https://www.frbsd.org/xch/csv_results.txt) for machine processing.

To analyze the ports of a specific maintainer identified by id@domain, do:
```Shell
$ portstreelint --info -m id@domain
```

## SEE ALSO
[ports(7)](https://man.freebsd.org/cgi/man.cgi?query=ports),
[lint(1)](https://man.freebsd.org/cgi/man.cgi?query=lint&manpath=Unix+Seventh+Edition),
[portlint(1)](https://www.freshports.org/ports-mgmt/portlint/),
[vuxml(3)](https://github.com/HubTou/vuxml)

[FreeBSD Porter's Handbook](https://docs.freebsd.org/en/books/porters-handbook/)

## STANDARDS
The **portstreelint** utility is not a standard UNIX command.

This implementation tries to follow the [PEP 8](https://www.python.org/dev/peps/pep-0008/) style guide for [Python](https://www.python.org/) code.

## PORTABILITY
None. Works only on FreeBSD, but who needs anything else?

Packaged for FreeBSD as *pyXX-pnu-portstreelint*.

## HISTORY
While working on the 4th version of the [pysec2vuxml](https://github.com/HubTou/pysec2vuxml) tool,
I noticed there were errors in the FreeBSD port Index,
so I built the [portlint2](https://github.com/HubTou/portlint2) tool to analyze this more thoroughly...

After discussions on the freebsd-ports mailing list an interest in checking port vulnerabilities arose,
which led me to convert that standalone command into a Python package in order to benefit from my
[vuxml](https://github.com/HubTou/vuxml) library.

## LICENSE
It is available under the [3-clause BSD license](https://opensource.org/licenses/BSD-3-Clause).

## AUTHORS
[Hubert Tournier](https://github.com/HubTou)

## CAVEATS
The IGNORE mark check is not reliable because this tool doesn't parse
the ports' Makefiles, but just loads their variables without regard to
the conditional tests that may surround them.

The nonexistent plist check is not very helpful because there are still
undocumented cases where the list is auto generated.

The ports using exotic versioning schemes will be skipped from the
vulnerability check because the library we use for version comparisons
is geared toward Python ports and limited for this usage.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/HubTou/portstreelint/",
    "name": "pnu-portstreelint",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "pnu-project",
    "author": "Hubert Tournier",
    "author_email": "hubert.tournier@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/fc/d1/0a4eb394cb294f589e77978494bdcac163220619f22de81d1f8a1aa00492/pnu-portstreelint-1.4.2.tar.gz",
    "platform": null,
    "description": "[![PyPI package](https://repology.org/badge/version-for-repo/pypi/python:pnu-portstreelint.svg)](https://repology.org/project/python:pnu-portstreelint/versions)\n[![FreeBSD port](https://repology.org/badge/version-for-repo/freebsd/python:pnu-portstreelint.svg)](https://repology.org/project/python:pnu-portstreelint/versions)\n\n# Installation\nOnce you have installed [Python](https://www.python.org/downloads/) and its packages manager [pip](https://pip.pypa.io/en/stable/installation/),\nuse one of the following commands, depending on if you want only this tool, the full set of PNU tools, or PNU plus a selection of additional third-parties tools:\n\n```\npip install pnu-portstreelint\npip install PNU\npip install 'PNU[freebsd]' # if you use a platform other than FreeBSD\npip install pytnix\n```\n\n# PortsTreeLint(8)\n\n## NAME\nportstreelint - FreeBSD ports tree lint\n\n## SYNOPSIS\n**portstreelint**\n\\[--nocfg\\]\n\\[--gencfg|-g FILE\\]\n\\[--show-cat|-C\\]\n\\[--show-mnt|-M\\]\n\\[--cat|-c LIST\\]\n\\[--mnt|-m LIST\\]\n\\[--port|-p LIST\\]\n\\[--tree|-t DIR\\]\n\\[--plist NUM\\]\n\\[--broken NUM\\]\n\\[--deprecated NUM\\]\n\\[--forbidden NUM\\]\n\\[--unchanged NUM\\]\n\\[--check-host|-h\\]\n\\[--check-url|-u\\]\n\\[--output|-o FILE\\]\n\\[--debug\\]\n\\[--info\\]\n\\[--version\\]\n\\[--help|-?\\]\n\\[--\\]\n\nThe aliases **ptlint** and **ptl** are also available to shorten the command name.\n\n## DESCRIPTION\nThe **portstreelint** utility checks the FreeBSD ports tree Index\nand some parts of the ports' Makefiles for errors and warnings.\n\nBy default it will scan the whole port tree, but you can select\na subset of the ports with the options *--cat|-c* for categories,\n*--mnt|-m* for maintainers and *--port|-p* for ports.\nAll these options expect a parameter which can be a single item\nor a comma-separated list of items.\nIf you combine several of these operators they will perform as\na logical AND.\n\nThe *--mnt|-m* option defaults to @FreeBSD.org for unspecified\ndomains.\n\nIn order to know which categories or maintainers are available\nfor selection, you can use the *--show-cat|-C* and *--show-mnt|-M*\noptions to view all the categories and maintainers with their\nnumber of associated ports.\n\nThe two costlier analysis are disabled by default.\nYou can check if the port's www sites hostnames are resolvable\nwith the *--check-host|-h* option (takes about 15 minutes on the\nwhole port tree).\nAnd you can check if the port's www sites URL are available\nwith the *--check-url|-u* option, which implies the previous one\n(takes about 6 hours on the whole port tree).\n\nThe checks list includes:\n* Nonexistent Makefile\n* Nonexistent INDEX:port-path\n* Unusual INDEX:installation-prefix (warning)\n* Too long INDEX:comments (> 70 characters) (warning)\n* Uncapitalized INDEX:comments\n* INDEX:comments ending with a dot\n* INDEX:comments different from Makefile:COMMENT\n* Nonexistent INDEX:description-file\n* URL ending INDEX:description-file\n* INDEX:description-file content same as INDEX:comment\n* INDEX:description-file content no longer than INDEX:comment\n* Nonexistent pkg-plist, Makefile:PLIST_FILES/PLIST/PLIST_SUB (debug)\n* Makefile:PLIST_FILES abuse (warning)\n* INDEX:maintainer different from Makefile:MAINTAINER\n* Unofficial categories (warning)\n* INDEX:categories different from Makefile:CATEGORIES\n* Empty INDEX:www-site\n* Unresolvable INDEX:www-site (optional)\n* Unaccessible INDEX:www-site (optional)\n* INDEX:www-site different from Makefile:WWW\n* Ports marked as BROKEN, DEPRECATED, FORBIDDEN, IGNORE, RESTRICTED (info)\n* Ports marked with an EXPIRATION_DATE (warning)\n* Ports marked as BROKEN, FORBIDDEN or DEPRECATED for too long (warning)\n* Ports unchanged for a long time (info)\n* Makefile:PORTVERSION and Makefile:DISTVERSION used simultaneously\n* VuXML vulnerabilities for the current port versions (warning)\n* Missing Makefile:LICENSE\n* Unofficial licenses (warning)\n* Unnecessary Makefile:LICENSE_COMB=single (warning)\n* Unnecessary Makefile:LICENSE_COMB=multi (warning)\n\nIt's possible to change the default values for PLIST_FILES abuse,\nBROKEN_since, DEPRECATED_since, FORBIDDEN_since and Unchanged_since\nwith the *--plist*, *--broken*, *--deprecated*, *--forbidden* and\n*--unchanged* options, followed by a number of files for the first\none and a number of days for the others. And you can select a port\ntree in a location other than */usr/ports* with the *--tree|-t*\noption.\n\nFinally, there's a *--output|-o* option to generate a CSV delimited\nfile with the per-maintainer findings to a specified filename. This\nallows for automated processing of the results, such as, for example,\nsending warning emails, storing results and displaying only diffs\nsince previous run...\n\nFor convenience, you can put your favourite options in a\nconfiguration file, which will be read before processing the\nenvironment and the command line, unless you use the *--nocfg*\noption. You can generate a default configuration file with the\n*--gencfg|-g* option followed by a filename. This file also offers\nfull control over the checks to perform, and a way to discard\nfalse-positive vulnerabilities and unwanted licenses report\nmessages.\n\n### OPTIONS\nOptions | Use\n------- | ---\n--nocfg|Don't use the configuration file\n--gencfg\\|-g FILE|Generate a default configuration file in FILE\n--show-cat\\|-C|Show categories with ports count\n--show-mnt\\|-M|Show maintainers with ports count\n--cat\\|-c LIST|Select only the comma-separated categories in LIST\n--mnt\\|-m LIST|Select only the comma-separated maintainers in LIST\n--port\\|-p LIST|Select only the comma-separated ports in LIST\n--tree\\|-t DIR|Set ports directory (default=/usr/ports)\n--plist NUM|Set PLIST_FILES abuse to NUM files\n--broken NUM|Set BROKEN since to NUM days\n--deprecated NUM|Set DEPRECATED since to NUM days\n--forbidden NUM|Set FORBIDDEN since to NUM days\n--unchanged NUM|Set Unchanged since to NUM days\n--check-host\\|-h|Enable checking hostname resolution (long!)\n--check-url\\|-u|Enable checking URL (very long!)\n--output\\|-o|Enable per-maintainer CSV output to FILE\n--debug|Enable logging at debug level\n--info|Enable logging at info level\n--version|Print version and exit\n--help\\|-?|Print usage and this help message and exit\n--|Options processing terminator\n\n## ENVIRONMENT\nThe *PTLINT_DEBUG* environment variable can be set to any value to enable debug mode.\n\nIf the system's *PORTSDIR* environment variable is set, it'll be used instead of the\ndefault \"/usr/ports\". But the *--tree|-t DIR* option will still override it.\n\n## FILES\nThe whole port tree under */usr/ports*, or the location indicated by the *PORTSDIR*\nenvironment variable, or the *--tree|-t* argument:\n- as root, if you have installed portsnap, update to the last version with \"portsnap fetch update\"\n- or, if you have installed git, clone the latest repository with \"git clone https://git.FreeBSD.org/ports.git /usr/ports\"\n\n[/usr/ports/INDEX-xx](https://wiki.freebsd.org/Ports/INDEX)\n: where xx is the major version of FreeBSD that you are using (as I write this xx=14).\n- as root, get the last version with \"cd /usr/ports ; make fetchindex\"\n- or rebuild it from your port tree with \"cd /usr/ports ; make index\"\n\n${HOME}/.ptlint\n: an [INI-style](https://docs.python.org/3/library/configparser.html#supported-ini-file-structure) configuration file.\n- Generate a default one with the *--gencfg|-g* option and tweak it to your taste.\n\n## EXIT STATUS\nThe **portstreelint** utility exits 0 on success, and >0 if an error occurs.\n\n## EXAMPLES\nTo analyze the full port tree in the background, do:\n```Shell\n$ nohup portstreelint --info -hu > stdout.txt 2> stderr.txt &\n```\nResults for this example are available there:\n* [stdout output](https://www.frbsd.org/xch/stdout.txt),\n* [stderr output](https://www.frbsd.org/xch/stderr.txt) for details.\n\nTo analyze the full port tree in the background and generate a CSV\nfile, do:\n```Shell\n$ nohup portstreelint -huo csv_results.txt > /dev/null 2>&1 &\n```\nResults for this example are available there:\n* [CSV output](https://www.frbsd.org/xch/csv_results.txt) for machine processing.\n\nTo analyze the ports of a specific maintainer identified by id@domain, do:\n```Shell\n$ portstreelint --info -m id@domain\n```\n\n## SEE ALSO\n[ports(7)](https://man.freebsd.org/cgi/man.cgi?query=ports),\n[lint(1)](https://man.freebsd.org/cgi/man.cgi?query=lint&manpath=Unix+Seventh+Edition),\n[portlint(1)](https://www.freshports.org/ports-mgmt/portlint/),\n[vuxml(3)](https://github.com/HubTou/vuxml)\n\n[FreeBSD Porter's Handbook](https://docs.freebsd.org/en/books/porters-handbook/)\n\n## STANDARDS\nThe **portstreelint** utility is not a standard UNIX command.\n\nThis implementation tries to follow the [PEP 8](https://www.python.org/dev/peps/pep-0008/) style guide for [Python](https://www.python.org/) code.\n\n## PORTABILITY\nNone. Works only on FreeBSD, but who needs anything else?\n\nPackaged for FreeBSD as *pyXX-pnu-portstreelint*.\n\n## HISTORY\nWhile working on the 4th version of the [pysec2vuxml](https://github.com/HubTou/pysec2vuxml) tool,\nI noticed there were errors in the FreeBSD port Index,\nso I built the [portlint2](https://github.com/HubTou/portlint2) tool to analyze this more thoroughly...\n\nAfter discussions on the freebsd-ports mailing list an interest in checking port vulnerabilities arose,\nwhich led me to convert that standalone command into a Python package in order to benefit from my\n[vuxml](https://github.com/HubTou/vuxml) library.\n\n## LICENSE\nIt is available under the [3-clause BSD license](https://opensource.org/licenses/BSD-3-Clause).\n\n## AUTHORS\n[Hubert Tournier](https://github.com/HubTou)\n\n## CAVEATS\nThe IGNORE mark check is not reliable because this tool doesn't parse\nthe ports' Makefiles, but just loads their variables without regard to\nthe conditional tests that may surround them.\n\nThe nonexistent plist check is not very helpful because there are still\nundocumented cases where the list is auto generated.\n\nThe ports using exotic versioning schemes will be skipped from the\nvulnerability check because the library we use for version comparisons\nis geared toward Python ports and limited for this usage.\n",
    "bugtrack_url": null,
    "license": "BSD 3-Clause License",
    "summary": "FreeBSD ports tree lint",
    "version": "1.4.2",
    "project_urls": {
        "Bug Tracker": "https://github.com/HubTou/portstreelint/issues",
        "Homepage": "https://github.com/HubTou/portstreelint/"
    },
    "split_keywords": [
        "pnu-project"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "be4f4cfea6724490c47060d06b8d94f94089080c5029eecc51da75c672602566",
                "md5": "5385dc9d10ad98df6708fd5dd93aeef5",
                "sha256": "3aa455167923e615fa05d607a780ac2196300d44691db35c6ba6fa189df02f1a"
            },
            "downloads": -1,
            "filename": "pnu_portstreelint-1.4.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5385dc9d10ad98df6708fd5dd93aeef5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 35698,
            "upload_time": "2024-04-14T08:49:53",
            "upload_time_iso_8601": "2024-04-14T08:49:53.408999Z",
            "url": "https://files.pythonhosted.org/packages/be/4f/4cfea6724490c47060d06b8d94f94089080c5029eecc51da75c672602566/pnu_portstreelint-1.4.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fcd10a4eb394cb294f589e77978494bdcac163220619f22de81d1f8a1aa00492",
                "md5": "7836965682f802ea1692c453b1de77bc",
                "sha256": "3bdf468674f0782d95575519d7a3a8d7a0c660d8dd3851e99daac3ac4871e589"
            },
            "downloads": -1,
            "filename": "pnu-portstreelint-1.4.2.tar.gz",
            "has_sig": false,
            "md5_digest": "7836965682f802ea1692c453b1de77bc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 27079,
            "upload_time": "2024-04-14T08:49:54",
            "upload_time_iso_8601": "2024-04-14T08:49:54.742944Z",
            "url": "https://files.pythonhosted.org/packages/fc/d1/0a4eb394cb294f589e77978494bdcac163220619f22de81d1f8a1aa00492/pnu-portstreelint-1.4.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-14 08:49:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "HubTou",
    "github_project": "portstreelint",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "pnu-portstreelint"
}
        
Elapsed time: 3.69390s