Add publish.md

This commit is contained in:
retoor 2024-12-04 21:02:05 +00:00
parent 182685625b
commit 4bdc4c680a

79
publish.md Normal file
View File

@ -0,0 +1,79 @@
# Publish
Application for publishing packages to the gitea package server.
Hardcoded my credentials and URLS's. It's a kinda note for myself but if others can learn from it, it's fine by me.
I've copied this to my `/usr/local/bin/` and can just execute publish [filename] where ever i want.
## Usage
Will overwrite version 1.0.0 from the server, else will create a new one with version 1.0.0.
```
publish [filename]
```
Or with version parameter:
```
publish [filename] --version=1.33.7
```
## Source code
```python
#!/usr/bin/env python
import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s',
)
log = logging.getLogger("publish")
import env
import sys
import pathlib
import os
import argparse
import subprocess
parser = argparse.ArgumentParser(description="Application for deploying packages at molodetz.nl.")
parser.add_argument("file", type=str, help="File you want to publish.")
parser.add_argument("--version", type=str, required=False, default="1.0.0", help="Version of your package")
args = parser.parse_args()
if not len(args.version.split(".")) == 3:
raise Exception("{} is an invalid version number. It shoud be in '\\d.\\d.\\d.' format.".format(args.version))
version = args.version
path = pathlib.Path(args.file)
if not path.exists():
log.error("Path does not exist: '{}'.".format(path))
exit(1)
file_name = path.name
username = "retoor"
password = env.secret
package_name = path.name
command_delete = " ".join([
f"curl --user {username}:{password}",
f"-X DELETE",
f"https://retoor.molodetz.nl/api/packages/{username}/generic/{package_name}/{version}/{file_name}",
"--silent"
])
command = " ".join([
f"curl --user {username}:{password}",
f"--upload-file {path}",
f"https://retoor.molodetz.nl/api/packages/{username}/generic/{package_name}/{version}/{file_name}",
"--silent"
])
log.info("Publishing package {} {}.".format(package_name, version))
log.warning("Deleting original package with version {} if exists.".format(version))
subprocess.check_output(command_delete, shell=True)
subprocess.check_output(command,shell=True)
log.info("Publishing package {} {} success.".format(package_name, version))
log.info("Download package using curl -OJ https://retoor.molodetz.nl/api/packages/retoor/generic/{}/1.0.0/{} --silent.".format(package_name, package_name))
log.info("or download package using wget https://retoor.molodetz.nl/api/packages/retoor/generic/{}/1.0.0/{} --quiet.".format(package_name, package_name))
log.info("Don't forget to chmod +x after downloading the package if it is executable.")
```