mirror of
				https://github.com/KevinMidboe/delugeClient.git
				synced 2025-10-29 12:00:13 +00:00 
			
		
		
		
	CI: Build and pypi publish (#8)
* Split wheel and tarball dist into separate make cmds * Add build for amd64 & arm64 arch + start of publish steps * test step indentation fking with lint * add missing pipenv command * test explicitly defining wheel version * try install requirements first * sync pipenv after install * fixed typo in pacakge name * Publish depends on build * Install python dependencies before publish * Twince check command before upload * If source is newer than pypi, exit 0 and continue pipeline * If source is newer than pypi, exit 0 and continue pipeline * Clearer output text for publish version * Clearer output text for publish version * Only run public package when interacting with master * Updated readme and license in setup.py * Remove test pypi publish ci step * Exclude publish step when PR towards master * Bumped package version to 0.3.2 * Try install built wheel with wildcard * Sign drone config file View docs for more info on signing: https://docs.drone.io/signature/
This commit is contained in:
		
							
								
								
									
										58
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								.drone.yml
									
									
									
									
									
								
							| @@ -1,14 +1,66 @@ | |||||||
| --- | --- | ||||||
| kind: pipeline | kind: pipeline | ||||||
| type: docker | type: docker | ||||||
| name: delugeClient | name: Build and test amd64 | ||||||
|  |  | ||||||
| platform: | platform: | ||||||
|   os: linux |   os: linux | ||||||
|   arch: amd64 |   arch: amd64 | ||||||
|  |  | ||||||
| steps: | steps: | ||||||
|   - name: Build package |   - name: Build source | ||||||
|     image: python:3.10 |     image: python:3.10 | ||||||
|     commands: |     commands: | ||||||
|       - make build |     - make build | ||||||
|  |  | ||||||
|  |   - name: Install | ||||||
|  |     image: python:3.10 | ||||||
|  |     commands: | ||||||
|  |     - make dist | ||||||
|  |     - pip3 install -r requirements.txt | ||||||
|  |     - pip3 install dist/*.whl | ||||||
|  | #     - pipenv install pytest | ||||||
|  |  | ||||||
|  | #   - name: Run tests | ||||||
|  | #     image: python:3.10 | ||||||
|  | #     commands: | ||||||
|  | #       pipenv run pytest | ||||||
|  |  | ||||||
|  | --- | ||||||
|  | kind: pipeline | ||||||
|  | type: docker | ||||||
|  | name: Publish package to PyPi | ||||||
|  |  | ||||||
|  | platform: | ||||||
|  |   os: linux | ||||||
|  |   arch: amd64 | ||||||
|  |  | ||||||
|  | steps: | ||||||
|  |   - name: Newer version to publish? | ||||||
|  |     image: python:3.10 | ||||||
|  |     commands: | ||||||
|  |       - pip3 install delugeClient-kevin -q -q | ||||||
|  |       - bash publish_version?.sh | ||||||
|  |  | ||||||
|  |   - name: PyPi publish | ||||||
|  |     image: python:3.10 | ||||||
|  |     commands:  | ||||||
|  |     - make dist | ||||||
|  |     - pip3 install twine | ||||||
|  |     - twine upload dist/* | ||||||
|  |  | ||||||
|  | depends_on: | ||||||
|  |   - Build and test amd64 | ||||||
|  |  | ||||||
|  | trigger: | ||||||
|  |   branch: | ||||||
|  |     - master | ||||||
|  |   event: | ||||||
|  |     exclude: | ||||||
|  |       - pull_request | ||||||
|  |  | ||||||
|  | --- | ||||||
|  | kind: signature | ||||||
|  | hmac: 08793426ddd2274e2de166144dc15cd63fe6a2c0fd47382d28f20ececee84898 | ||||||
|  |  | ||||||
|  | ... | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								Makefile
									
									
									
									
									
								
							| @@ -7,9 +7,14 @@ install: | |||||||
| build: | build: | ||||||
| 	python3 setup.py build | 	python3 setup.py build | ||||||
|  |  | ||||||
| dist: | tarball: | ||||||
| 	python3 setup.py sdist | 	python3 setup.py sdist | ||||||
|  |  | ||||||
|  | wheel: | ||||||
|  | 	python3 setup.py bdist_wheel | ||||||
|  |  | ||||||
|  | dist: tarball wheel | ||||||
|  |  | ||||||
| upload: clean dist | upload: clean dist | ||||||
| 	twine upload dist/* | 	twine upload dist/* | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										104
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										104
									
								
								README.md
									
									
									
									
									
								
							| @@ -4,23 +4,20 @@ | |||||||
|  |  | ||||||
| <h4 align="center"> A easy to use Deluge CLI that can connect to Deluge RPC (even over ssh) written entirely in python.</h4> | <h4 align="center"> A easy to use Deluge CLI that can connect to Deluge RPC (even over ssh) written entirely in python.</h4> | ||||||
|  |  | ||||||
| | Tested version | PyPi package | Drone CI | | | Tested version | PyPi package | License | | ||||||
| |:--------|:------|:------| | |:--------|:------|:------| | ||||||
| | [](https://www.python.org/downloads/release/python-3100/) | [](https://pypi.org/project/delugeClient_kevin/) | [](https://drone.schleppe.cloud/KevinMidboe/delugeClient) | | [](https://www.python.org/downloads/release/python-3100/) | [](https://pypi.org/project/delugeClient_kevin/) |[](LICENSE) | ||||||
|  |  | ||||||
|  | | Drone CI | Known vulnerabilities | | ||||||
| | Known vulnerabilities | License | |  | ||||||
| |:--------|:------| | |:--------|:------| | ||||||
| | [](https://snyk.io/test/github/kevinmidboe/delugeClient?targetFile=requirements.txt) |[](LICENSE) | | [](https://drone.schleppe.cloud/KevinMidboe/delugeClient) | [](https://snyk.io/test/github/kevinmidboe/delugeClient?targetFile=requirements.txt) | ||||||
|  |  | ||||||
|  |  | ||||||
| <p align="center"> | <p align="center"> | ||||||
|   <a href="#abstract">Abstract</a> • |   <a href="#abstract">Abstract</a> • | ||||||
|   <a href="#setup_virtualenv">Setup virtualenv</a> • |   <a href="#install">Install</a> • | ||||||
|   <a href="#configure">Configure</a> • |  | ||||||
|   <a href="#installation">Install dependencies</a> • |  | ||||||
|   <a href="#usage">Usage</a> • |   <a href="#usage">Usage</a> • | ||||||
|   <a href="#running">Running</a> • |   <a href="#setup_virtualenv">Setup Virtual Environment</a> • | ||||||
|  |   <a href="#configure">Configure</a> • | ||||||
|   <a href="#contributing">Contributing</a> |   <a href="#contributing">Contributing</a> | ||||||
| </p> | </p> | ||||||
|  |  | ||||||
| @@ -28,6 +25,44 @@ | |||||||
| ## <a name="abstract"></a> Abstract | ## <a name="abstract"></a> Abstract | ||||||
| Create a deluge python client for interfacing with deluge for common tasks like listing, adding, removing and setting download directory for torrents.  | Create a deluge python client for interfacing with deluge for common tasks like listing, adding, removing and setting download directory for torrents.  | ||||||
|  |  | ||||||
|  | ## <a name="install"></a> Install | ||||||
|  | Install from source: | ||||||
|  | ```bash | ||||||
|  | python3 setup.py install | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Install from pip: | ||||||
|  | ```bash | ||||||
|  | pip3 install delugeClient-kevin | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## <a name="usage"></a> Usage | ||||||
|  | View delugeClient cli options with `delugeClient --help`: | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  |  Usage: python -m delugeclient [OPTIONS] COMMAND [ARGS]... | ||||||
|  |  | ||||||
|  | ╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────╮ | ||||||
|  | │ --debug                       Set log level to debug                                                            │ | ||||||
|  | │ --info                        Set log level to info                                                             │ | ||||||
|  | │ --warning                     Set log level to warning                                                          │ | ||||||
|  | │ --error                       Set log level to error                                                            │ | ||||||
|  | │ --install-completion          Install completion for the current shell.                                         │ | ||||||
|  | │ --show-completion             Show completion for the current shell, to copy it or customize the installation.  │ | ||||||
|  | │ --help                        Show this message and exit.                                                       │ | ||||||
|  | ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ | ||||||
|  | ╭─ Commands ──────────────────────────────────────────────────────────────────────────────────────────────────────╮ | ||||||
|  | │ add                Add magnet torrent                                                                           │ | ||||||
|  | │ disk               Get free disk space                                                                          │ | ||||||
|  | │ get                Get torrent by id or hash                                                                    │ | ||||||
|  | │ ls                 List all torrents                                                                            │ | ||||||
|  | │ remove             Remove torrent by id or hash                                                                 │ | ||||||
|  | │ rm                 Remove torrent by name                                                                       │ | ||||||
|  | │ search             Search for string segment in torrent name                                                    │ | ||||||
|  | │ toggle             Toggle torrent download state                                                                │ | ||||||
|  | │ version            Print package version                                                                        │ | ||||||
|  | ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ | ||||||
|  | ``` | ||||||
|  |  | ||||||
| ## <a name="setup_virtualenv"></a> Setup Virtual Environment | ## <a name="setup_virtualenv"></a> Setup Virtual Environment | ||||||
| Virtual environment allows us to create a local environment for the requirements needed. Because pip does not download packages already downloaded to your system, we can use virtualenv to save our packages in the project folder. | Virtual environment allows us to create a local environment for the requirements needed. Because pip does not download packages already downloaded to your system, we can use virtualenv to save our packages in the project folder. | ||||||
| @@ -41,7 +76,7 @@ To install virtualenv, simply run: | |||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  |  | ||||||
| ### Usage | ### Virtualenv setup | ||||||
| After you have downloaded this project go to it in your terminal by going to the folder you downloaded and typing the following: | After you have downloaded this project go to it in your terminal by going to the folder you downloaded and typing the following: | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -58,8 +93,6 @@ The to setup a virtual environment enter this: | |||||||
|  > If you get an error now it might be because you don't have python3.10, please make sure you have python version 3.10 if else you can download it from [here](https://www.python.org/downloads/) |  > If you get an error now it might be because you don't have python3.10, please make sure you have python version 3.10 if else you can download it from [here](https://www.python.org/downloads/) | ||||||
|  |  | ||||||
|  |  | ||||||
| First we navigate to the folder we downloaded. |  | ||||||
|  |  | ||||||
| Then we use the ```virtualenv``` command to create a ```env``` subdirectory in our project. This is where pip will download everything to and where we can add other specific python versions. Then we need to *activate* our virtual environment by doing: | Then we use the ```virtualenv``` command to create a ```env``` subdirectory in our project. This is where pip will download everything to and where we can add other specific python versions. Then we need to *activate* our virtual environment by doing: | ||||||
|  |  | ||||||
| ``` | ``` | ||||||
| @@ -96,51 +129,6 @@ Then you need to change the HOST and PORT to reflect the address for your deluge | |||||||
|  $ cat /home/USER/.config/deluge/auth |  $ cat /home/USER/.config/deluge/auth | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  |  | ||||||
| ## <a name="install"></a> Install Required Dependencies |  | ||||||
| Now that we have our virutalenv set up and activated we want to install all the necessary packages listed in `requirements.txt`. To install it's dependencies do the following: |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
|  $ pip install -r requirements.txt |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Now we have our neccessary packages installed! |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## <a name="usage"></a> Usage |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| Custom delugeRPC client |  | ||||||
| Usage: |  | ||||||
|    deluge_cli add MAGNET [DIR] [--debug | --warning | --error] |  | ||||||
|    deluge_cli get TORRENT |  | ||||||
|    deluge_cli ls [--downloading | --seeding | --paused] |  | ||||||
|    deluge_cli toggle TORRENT |  | ||||||
|    deluge_cli rm TORRENT [--debug | --warning | --error] |  | ||||||
|    deluge_cli (-h | --help) |  | ||||||
|    deluge_cli --version |  | ||||||
|  |  | ||||||
| Arguments: |  | ||||||
|    MAGNET        Magnet link to add |  | ||||||
|    DIR           Directory to save to |  | ||||||
|    TORRENT       A selected torrent |  | ||||||
|  |  | ||||||
| Options: |  | ||||||
|    -h --help     Show this screen |  | ||||||
|    --version     Show version |  | ||||||
|    --debug       Print all debug log |  | ||||||
|    --warning     Print only logged warnings |  | ||||||
|    --error       Print error messages (Error/Warning) |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ### <a name="running"></a> Running |  | ||||||
| To interface with deluged : |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
|  $ ./deluge_cli.py ls |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## <a name="contributing"></a> Contributing | ## <a name="contributing"></a> Contributing | ||||||
| - Fork it! | - Fork it! | ||||||
| - Create your feature branch: git checkout -b my-new-feature | - Create your feature branch: git checkout -b my-new-feature | ||||||
|   | |||||||
| @@ -1 +1,4 @@ | |||||||
| __version__ = '0.3.1' | __version__ = '0.3.2' | ||||||
|  |  | ||||||
|  | if __name__ == '__main__': | ||||||
|  |   print(__version__) | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								publish_version?.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								publish_version?.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | #!/usr/bin/bash | ||||||
|  |  | ||||||
|  | PYPI_VERSION=$(pip3 show delugeClient-kevin | awk '$1 ~ /Version:/ { print $2 }') | ||||||
|  | SOURCE_VERSION=$(python3 delugeClient/__version__.py) | ||||||
|  |  | ||||||
|  | printf "Source version:\t\t %s\n" $SOURCE_VERSION | ||||||
|  | printf "Remote PyPi version:\t %s\n" $PYPI_VERSION | ||||||
|  |  | ||||||
|  | function version { | ||||||
|  |   echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | if [ $(version $SOURCE_VERSION) -gt $(version $PYPI_VERSION) ]; then | ||||||
|  |   echo "Soure is newer than remote, publishing!" | ||||||
|  |   exit 0 | ||||||
|  | else | ||||||
|  |   echo "Source is same or oldre than remote, nothing to do." | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
							
								
								
									
										1
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								setup.py
									
									
									
									
									
								
							| @@ -32,6 +32,7 @@ setup( | |||||||
|   classifiers=[ |   classifiers=[ | ||||||
|     'Programming Language :: Python', |     'Programming Language :: Python', | ||||||
|     'Operating System :: OS Independent', |     'Operating System :: OS Independent', | ||||||
|  |     'License :: OSI Approved :: MIT License', | ||||||
|     'Programming Language :: Python :: 3.10', |     'Programming Language :: Python :: 3.10', | ||||||
|   ], |   ], | ||||||
|   entry_points={ |   entry_points={ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user