%global _empty_manifest_terminate_build 0 Name: python-nexus3-cli Version: 4.1.8 Release: 1 Summary: A python-based CLI for Sonatype Nexus OSS 3 License: MIT URL: https://gitlab.com/thiagocsf/nexus3-cli Source0: https://mirrors.nju.edu.cn/pypi/web/packages/7d/c2/aa4ff27f198b89ac87a5e6f768b27745c5d604eaeac81c7b632eba0c25ca/nexus3-cli-4.1.8.tar.gz BuildArch: noarch Requires: python3-click Requires: python3-click-aliases Requires: python3-clint Requires: python3-inflect Requires: python3-requests[security] Requires: python3-semver Requires: python3-texttable Requires: python3-twine Requires: python3-codecov Requires: python3-flake8 Requires: python3-pytest Requires: python3-pytest-cov Requires: python3-pytest-helpers-namespace Requires: python3-pytest-mock Requires: python3-pytest-faker %description # nexus3-cli A python-based command-line interface and API client for Sonatype's [Nexus OSS 3](https://www.sonatype.com/download-oss-sonatype). ## Features 1. Compatible with [Nexus 3 OSS](https://www.sonatype.com/download-oss-sonatype) 1. [Nexus versions tested](https://gitlab.com/thiagocsf/nexus3-cli/-/blob/master/.gitlab-ci.yml#L103-116) 1. Python API and command-line support. 1. Artefact management: list, delete, bulk upload and download. 1. Repository management: 1. Create hosted and proxy. 1. Create apt, bower, docker, maven, npm, nuget, pypi, raw, rubygems, yum. 1. Content type validation, version and write policy. 1. Delete. 1. Groovy script management: list, upload, delete, run. 1. Clean-up policy management: create, list. 1. Task management: list, run, show stop. 1. Security management: realms. 1. Blob store management: list, show, create, delete, update (API only). The actions above are performed using the Nexus REST API if the endpoint is available, otherwise a groovy script is used. Please note that some Nexus 3 features are not currently supported. Assistance implementing missing support is very welcome. Please have a look at the [issues](https://gitlab.com/thiagocsf/nexus3-cli/-/issues) and [contribution guidelines](https://gitlab.com/thiagocsf/nexus3-cli/-/blob/master/CONTRIBUTING.md). ## Installation The nexus3-cli package is available on PyPi. You can install using pip/pip3: ```bash pip install nexus3-cli ``` There's also a [docker image with nexus3-cli pre-installed](https://gitlab.com/thiagocsf/docker-nexus3-cli). ### Enable Groovy scripts Some of the functionality in this client was written before the Nexus REST API exposed the necessary endpoints. For this reason, you may need to enable Groovy script execution in your instance. See the [FAQ in this blog post](https://support.sonatype.com/hc/en-us/articles/360045220393-Scripting-Nexus-Repository-Manager-3) and the [example `nexus.properties`](https://gitlab.com/thiagocsf/nexus3-cli/-/blob/master/tests/fixtures/nexus-data/etc/nexus.properties) in this project. If you decide to leave groovy scripts disabled in your Nexus 3 instance, you need to disable its use in this client. This can be done by editing the `~/.nexus-cli` configuration and changing `groovy_enabled` to `false`. Alternatively, you can export the `NEXUS3_GROOVY_ENABLED=false` environment variable. ## Usage ### Command line For a quick start, use the [sonatype/nexus3 Docker image](https://hub.docker.com/r/sonatype/nexus3/): ```bash docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3 ``` Nexus will take a little while to start-up the first time you run it. You can tell when it's available by looking at the Docker instance logs or browsing to [http://localhost:8081](http://localhost:8081). On older versions of the nexus3 Docker image, the default `admin` password is `admin123`; on newer versions it's automatically generated and you can find it by running `docker exec nexus cat /nexus-data/admin.password`. The `login` command will store the service URL and your credentials in `~/.nexus-cli` (warning: restrictive file permissions are set but the contents are saved in plain-text). Setup CLI credentials: ```bash $ nexus3 login Nexus OSS URL (http://localhost:8081): Nexus admin username (admin): Nexus admin password (admin123): Verify server certificate (True): Configuration saved to /Users/thiago/.nexus-cli ``` List repositories: ```bash $ nexus3 repository list Name Format Type URL maven-snapshots maven2 hosted http://localhost:8081/repository/maven-snapshots maven-central maven2 proxy http://localhost:8081/repository/maven-central nuget-group nuget group http://localhost:8081/repository/nuget-group nuget.org-proxy nuget proxy http://localhost:8081/repository/nuget.org-proxy maven-releases maven2 hosted http://localhost:8081/repository/maven-releases nuget-hosted nuget hosted http://localhost:8081/repository/nuget-hosted maven-public maven2 group http://localhost:8081/repository/maven-public ``` Create a repository: ```bash nexus3 repository create hosted raw reponame ``` Do a recursive directory upload: ```bash $ mkdir -p /tmp/some/deep/test/path $ touch /tmp/some/deep/test/file.txt /tmp/some/deep/test/path/other.txt $ cd /tmp; nexus3 up some/ reponame/path/ Uploading some/ to reponame/path/ [################################] 2/2 - 00:00:00 Uploaded 2 files to reponame/path/ ``` Nota Bene: nexus3-cli interprets a path ending in `/` as a directory. List repository contents: ```bash $ nexus3 ls reponame/path/ path/some/deep/test/path/other.txt path/some/deep/test/file.txt ``` For all commands, subcommands and options, run `nexus3 -h`. [CLI documentation](https://nexus3-cli.readthedocs.io/en/latest/cli.html) ### API See [API documentation](https://nexus3-cli.readthedocs.io/en/latest/api.html). ## Development The automated tests are configured in `.gitlab-ci.yml`. To run tests locally, install the package with test dependencies and run pytest: ```bash pip install [--user] -e .[test] pip install [--user] pytest faker pytest -m 'not integration' ``` Integration tests require a local Nexus instance listening on 8081 or as configured in `~/.nexus-cli`. The configuration file can be created using [nexus3 login](https://nexus3-cli.readthedocs.io/en/latest/cli.html#nexus3-login). ```bash docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3 ./tests/wait-for-nexus.sh # the Nexus instance takes a while to be ready # use the random admin password generated by the Nexus container to login ./tests/nexus-login $(docker exec nexus cat /nexus-data/admin.password) pytest -m integration docker kill nexus ``` Nota Bene: if you re-run integration tests without re-creating or cleaning-up the dev Nexus instance, test will fail because some objects created during tests will already exist. Pull requests are welcome; please see [CONTRIBUTING.md](CONTRIBUTING.md). %package -n python3-nexus3-cli Summary: A python-based CLI for Sonatype Nexus OSS 3 Provides: python-nexus3-cli BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-nexus3-cli # nexus3-cli A python-based command-line interface and API client for Sonatype's [Nexus OSS 3](https://www.sonatype.com/download-oss-sonatype). ## Features 1. Compatible with [Nexus 3 OSS](https://www.sonatype.com/download-oss-sonatype) 1. [Nexus versions tested](https://gitlab.com/thiagocsf/nexus3-cli/-/blob/master/.gitlab-ci.yml#L103-116) 1. Python API and command-line support. 1. Artefact management: list, delete, bulk upload and download. 1. Repository management: 1. Create hosted and proxy. 1. Create apt, bower, docker, maven, npm, nuget, pypi, raw, rubygems, yum. 1. Content type validation, version and write policy. 1. Delete. 1. Groovy script management: list, upload, delete, run. 1. Clean-up policy management: create, list. 1. Task management: list, run, show stop. 1. Security management: realms. 1. Blob store management: list, show, create, delete, update (API only). The actions above are performed using the Nexus REST API if the endpoint is available, otherwise a groovy script is used. Please note that some Nexus 3 features are not currently supported. Assistance implementing missing support is very welcome. Please have a look at the [issues](https://gitlab.com/thiagocsf/nexus3-cli/-/issues) and [contribution guidelines](https://gitlab.com/thiagocsf/nexus3-cli/-/blob/master/CONTRIBUTING.md). ## Installation The nexus3-cli package is available on PyPi. You can install using pip/pip3: ```bash pip install nexus3-cli ``` There's also a [docker image with nexus3-cli pre-installed](https://gitlab.com/thiagocsf/docker-nexus3-cli). ### Enable Groovy scripts Some of the functionality in this client was written before the Nexus REST API exposed the necessary endpoints. For this reason, you may need to enable Groovy script execution in your instance. See the [FAQ in this blog post](https://support.sonatype.com/hc/en-us/articles/360045220393-Scripting-Nexus-Repository-Manager-3) and the [example `nexus.properties`](https://gitlab.com/thiagocsf/nexus3-cli/-/blob/master/tests/fixtures/nexus-data/etc/nexus.properties) in this project. If you decide to leave groovy scripts disabled in your Nexus 3 instance, you need to disable its use in this client. This can be done by editing the `~/.nexus-cli` configuration and changing `groovy_enabled` to `false`. Alternatively, you can export the `NEXUS3_GROOVY_ENABLED=false` environment variable. ## Usage ### Command line For a quick start, use the [sonatype/nexus3 Docker image](https://hub.docker.com/r/sonatype/nexus3/): ```bash docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3 ``` Nexus will take a little while to start-up the first time you run it. You can tell when it's available by looking at the Docker instance logs or browsing to [http://localhost:8081](http://localhost:8081). On older versions of the nexus3 Docker image, the default `admin` password is `admin123`; on newer versions it's automatically generated and you can find it by running `docker exec nexus cat /nexus-data/admin.password`. The `login` command will store the service URL and your credentials in `~/.nexus-cli` (warning: restrictive file permissions are set but the contents are saved in plain-text). Setup CLI credentials: ```bash $ nexus3 login Nexus OSS URL (http://localhost:8081): Nexus admin username (admin): Nexus admin password (admin123): Verify server certificate (True): Configuration saved to /Users/thiago/.nexus-cli ``` List repositories: ```bash $ nexus3 repository list Name Format Type URL maven-snapshots maven2 hosted http://localhost:8081/repository/maven-snapshots maven-central maven2 proxy http://localhost:8081/repository/maven-central nuget-group nuget group http://localhost:8081/repository/nuget-group nuget.org-proxy nuget proxy http://localhost:8081/repository/nuget.org-proxy maven-releases maven2 hosted http://localhost:8081/repository/maven-releases nuget-hosted nuget hosted http://localhost:8081/repository/nuget-hosted maven-public maven2 group http://localhost:8081/repository/maven-public ``` Create a repository: ```bash nexus3 repository create hosted raw reponame ``` Do a recursive directory upload: ```bash $ mkdir -p /tmp/some/deep/test/path $ touch /tmp/some/deep/test/file.txt /tmp/some/deep/test/path/other.txt $ cd /tmp; nexus3 up some/ reponame/path/ Uploading some/ to reponame/path/ [################################] 2/2 - 00:00:00 Uploaded 2 files to reponame/path/ ``` Nota Bene: nexus3-cli interprets a path ending in `/` as a directory. List repository contents: ```bash $ nexus3 ls reponame/path/ path/some/deep/test/path/other.txt path/some/deep/test/file.txt ``` For all commands, subcommands and options, run `nexus3 -h`. [CLI documentation](https://nexus3-cli.readthedocs.io/en/latest/cli.html) ### API See [API documentation](https://nexus3-cli.readthedocs.io/en/latest/api.html). ## Development The automated tests are configured in `.gitlab-ci.yml`. To run tests locally, install the package with test dependencies and run pytest: ```bash pip install [--user] -e .[test] pip install [--user] pytest faker pytest -m 'not integration' ``` Integration tests require a local Nexus instance listening on 8081 or as configured in `~/.nexus-cli`. The configuration file can be created using [nexus3 login](https://nexus3-cli.readthedocs.io/en/latest/cli.html#nexus3-login). ```bash docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3 ./tests/wait-for-nexus.sh # the Nexus instance takes a while to be ready # use the random admin password generated by the Nexus container to login ./tests/nexus-login $(docker exec nexus cat /nexus-data/admin.password) pytest -m integration docker kill nexus ``` Nota Bene: if you re-run integration tests without re-creating or cleaning-up the dev Nexus instance, test will fail because some objects created during tests will already exist. Pull requests are welcome; please see [CONTRIBUTING.md](CONTRIBUTING.md). %package help Summary: Development documents and examples for nexus3-cli Provides: python3-nexus3-cli-doc %description help # nexus3-cli A python-based command-line interface and API client for Sonatype's [Nexus OSS 3](https://www.sonatype.com/download-oss-sonatype). ## Features 1. Compatible with [Nexus 3 OSS](https://www.sonatype.com/download-oss-sonatype) 1. [Nexus versions tested](https://gitlab.com/thiagocsf/nexus3-cli/-/blob/master/.gitlab-ci.yml#L103-116) 1. Python API and command-line support. 1. Artefact management: list, delete, bulk upload and download. 1. Repository management: 1. Create hosted and proxy. 1. Create apt, bower, docker, maven, npm, nuget, pypi, raw, rubygems, yum. 1. Content type validation, version and write policy. 1. Delete. 1. Groovy script management: list, upload, delete, run. 1. Clean-up policy management: create, list. 1. Task management: list, run, show stop. 1. Security management: realms. 1. Blob store management: list, show, create, delete, update (API only). The actions above are performed using the Nexus REST API if the endpoint is available, otherwise a groovy script is used. Please note that some Nexus 3 features are not currently supported. Assistance implementing missing support is very welcome. Please have a look at the [issues](https://gitlab.com/thiagocsf/nexus3-cli/-/issues) and [contribution guidelines](https://gitlab.com/thiagocsf/nexus3-cli/-/blob/master/CONTRIBUTING.md). ## Installation The nexus3-cli package is available on PyPi. You can install using pip/pip3: ```bash pip install nexus3-cli ``` There's also a [docker image with nexus3-cli pre-installed](https://gitlab.com/thiagocsf/docker-nexus3-cli). ### Enable Groovy scripts Some of the functionality in this client was written before the Nexus REST API exposed the necessary endpoints. For this reason, you may need to enable Groovy script execution in your instance. See the [FAQ in this blog post](https://support.sonatype.com/hc/en-us/articles/360045220393-Scripting-Nexus-Repository-Manager-3) and the [example `nexus.properties`](https://gitlab.com/thiagocsf/nexus3-cli/-/blob/master/tests/fixtures/nexus-data/etc/nexus.properties) in this project. If you decide to leave groovy scripts disabled in your Nexus 3 instance, you need to disable its use in this client. This can be done by editing the `~/.nexus-cli` configuration and changing `groovy_enabled` to `false`. Alternatively, you can export the `NEXUS3_GROOVY_ENABLED=false` environment variable. ## Usage ### Command line For a quick start, use the [sonatype/nexus3 Docker image](https://hub.docker.com/r/sonatype/nexus3/): ```bash docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3 ``` Nexus will take a little while to start-up the first time you run it. You can tell when it's available by looking at the Docker instance logs or browsing to [http://localhost:8081](http://localhost:8081). On older versions of the nexus3 Docker image, the default `admin` password is `admin123`; on newer versions it's automatically generated and you can find it by running `docker exec nexus cat /nexus-data/admin.password`. The `login` command will store the service URL and your credentials in `~/.nexus-cli` (warning: restrictive file permissions are set but the contents are saved in plain-text). Setup CLI credentials: ```bash $ nexus3 login Nexus OSS URL (http://localhost:8081): Nexus admin username (admin): Nexus admin password (admin123): Verify server certificate (True): Configuration saved to /Users/thiago/.nexus-cli ``` List repositories: ```bash $ nexus3 repository list Name Format Type URL maven-snapshots maven2 hosted http://localhost:8081/repository/maven-snapshots maven-central maven2 proxy http://localhost:8081/repository/maven-central nuget-group nuget group http://localhost:8081/repository/nuget-group nuget.org-proxy nuget proxy http://localhost:8081/repository/nuget.org-proxy maven-releases maven2 hosted http://localhost:8081/repository/maven-releases nuget-hosted nuget hosted http://localhost:8081/repository/nuget-hosted maven-public maven2 group http://localhost:8081/repository/maven-public ``` Create a repository: ```bash nexus3 repository create hosted raw reponame ``` Do a recursive directory upload: ```bash $ mkdir -p /tmp/some/deep/test/path $ touch /tmp/some/deep/test/file.txt /tmp/some/deep/test/path/other.txt $ cd /tmp; nexus3 up some/ reponame/path/ Uploading some/ to reponame/path/ [################################] 2/2 - 00:00:00 Uploaded 2 files to reponame/path/ ``` Nota Bene: nexus3-cli interprets a path ending in `/` as a directory. List repository contents: ```bash $ nexus3 ls reponame/path/ path/some/deep/test/path/other.txt path/some/deep/test/file.txt ``` For all commands, subcommands and options, run `nexus3 -h`. [CLI documentation](https://nexus3-cli.readthedocs.io/en/latest/cli.html) ### API See [API documentation](https://nexus3-cli.readthedocs.io/en/latest/api.html). ## Development The automated tests are configured in `.gitlab-ci.yml`. To run tests locally, install the package with test dependencies and run pytest: ```bash pip install [--user] -e .[test] pip install [--user] pytest faker pytest -m 'not integration' ``` Integration tests require a local Nexus instance listening on 8081 or as configured in `~/.nexus-cli`. The configuration file can be created using [nexus3 login](https://nexus3-cli.readthedocs.io/en/latest/cli.html#nexus3-login). ```bash docker run -d --rm -p 127.0.0.1:8081:8081 --name nexus sonatype/nexus3 ./tests/wait-for-nexus.sh # the Nexus instance takes a while to be ready # use the random admin password generated by the Nexus container to login ./tests/nexus-login $(docker exec nexus cat /nexus-data/admin.password) pytest -m integration docker kill nexus ``` Nota Bene: if you re-run integration tests without re-creating or cleaning-up the dev Nexus instance, test will fail because some objects created during tests will already exist. Pull requests are welcome; please see [CONTRIBUTING.md](CONTRIBUTING.md). %prep %autosetup -n nexus3-cli-4.1.8 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-nexus3-cli -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 4.1.8-1 - Package Spec generated