summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-nexus3-cli.spec591
-rw-r--r--sources1
3 files changed, 593 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..63b8bbe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/nexus3-cli-4.1.8.tar.gz
diff --git a/python-nexus3-cli.spec b/python-nexus3-cli.spec
new file mode 100644
index 0000000..7122033
--- /dev/null
+++ b/python-nexus3-cli.spec
@@ -0,0 +1,591 @@
+%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 <Python_Bot@openeuler.org> - 4.1.8-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..7d03c72
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+f0861d21021e3a6268a27928413af683 nexus3-cli-4.1.8.tar.gz