diff --git a/publish.md b/publish.md new file mode 100644 index 0000000..8883712 --- /dev/null +++ b/publish.md @@ -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.") + +``` \ No newline at end of file