This commit is contained in:
commit
bcafbeb3cf
12 changed files with 140 additions and 0 deletions
55
.forgejo/workflows/build-release.yaml
Normal file
55
.forgejo/workflows/build-release.yaml
Normal file
|
@ -0,0 +1,55 @@
|
|||
on:
|
||||
push:
|
||||
tags:
|
||||
- '[0-9]+\.[0-9]+\.[0-9]+-c\.[0-9]+'
|
||||
- '[0-9]+\.[0-9]+\.[0-9]+-a\.[0-9]+'
|
||||
- '[0-9]+\.[0-9]+\.[0-9]'
|
||||
|
||||
jobs:
|
||||
backend-pylint:
|
||||
runs-on: docker
|
||||
container: nikolaik/python-nodejs:python3.11-nodejs21
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- name: Install packages
|
||||
run: |
|
||||
pip install -e . -q
|
||||
python -m pip list --format=columns --disable-pip-version-check
|
||||
pip install pylint~=2.17.7 --disable-pip-version-check -q
|
||||
- name: Run pylint
|
||||
run: |
|
||||
pylint --version
|
||||
pylint **/*.py --exit-zero --rc-file pyproject.toml
|
||||
|
||||
build-artifacts:
|
||||
needs: ["backend-pylint"]
|
||||
runs-on: docker
|
||||
container: nikolaik/python-nodejs:python3.11-nodejs21
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- name: Install packages
|
||||
run: pip install build
|
||||
- name: Build package
|
||||
run: python -m build
|
||||
- name: Save build artifacts
|
||||
uses: https://code.forgejo.org/actions/upload-artifact@v3
|
||||
with:
|
||||
name: packages
|
||||
path: dist/*
|
||||
|
||||
publish-artifacts:
|
||||
needs: ["build-artifacts"]
|
||||
runs-on: docker
|
||||
container: nikolaik/python-nodejs:python3.11-nodejs21
|
||||
steps:
|
||||
- name: Downloading static site artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: packages
|
||||
path: dist
|
||||
- name: Install Dependencies
|
||||
run: pip install twine
|
||||
- name: Upload package to registry
|
||||
run: python -m twine upload --repository-url ${{ secrets.REPOSITORY_URL }} -u ${{ secrets.TWINE_DEPLOY_USER }} -p ${{ secrets.TWINE_DEPLOY_PASSWORD }} dist/*
|
20
.forgejo/workflows/lint.yaml
Normal file
20
.forgejo/workflows/lint.yaml
Normal file
|
@ -0,0 +1,20 @@
|
|||
on:
|
||||
push:
|
||||
branches: "**"
|
||||
|
||||
jobs:
|
||||
backend-pylint:
|
||||
runs-on: docker
|
||||
container: nikolaik/python-nodejs:python3.11-nodejs21
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: https://code.forgejo.org/actions/checkout@v3
|
||||
- name: Install packages
|
||||
run: |
|
||||
pip install -e . -q
|
||||
python -m pip list --format=columns --disable-pip-version-check
|
||||
pip install pylint~=2.17.7 --disable-pip-version-check -q
|
||||
- name: Run pylint
|
||||
run: |
|
||||
pylint --version
|
||||
pylint **/*.py --exit-zero --rc-file pyproject.toml
|
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
.vscode/
|
||||
|
||||
# Python stuff
|
||||
__pycache__/
|
||||
*venv/
|
||||
dist/
|
3
README.md
Normal file
3
README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# dockge-cli
|
||||
|
||||
A simple CLI application written in Python for communicating with Dockge using websockets
|
1
dockge_cli/.gitignore
vendored
Normal file
1
dockge_cli/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.temp/*
|
0
dockge_cli/__init__.py
Normal file
0
dockge_cli/__init__.py
Normal file
0
dockge_cli/__main__.py
Normal file
0
dockge_cli/__main__.py
Normal file
1
dockge_cli/cli.py
Normal file
1
dockge_cli/cli.py
Normal file
|
@ -0,0 +1 @@
|
|||
import argparse
|
0
dockge_cli/components/authentication.py
Normal file
0
dockge_cli/components/authentication.py
Normal file
0
dockge_cli/components/communication.py
Normal file
0
dockge_cli/components/communication.py
Normal file
26
dockge_cli/components/storage.py
Normal file
26
dockge_cli/components/storage.py
Normal file
|
@ -0,0 +1,26 @@
|
|||
import pathlib
|
||||
import base64
|
||||
import yaml
|
||||
|
||||
_storagepath = pathlib.Path(__file__).parents[1] / ".temp"
|
||||
_file = _storagepath / "storage.yaml"
|
||||
|
||||
_storagepath.mkdir(exist_ok=True, parents=True)
|
||||
|
||||
def set(key: str, value: str):
|
||||
with open(_file, "w+") as file:
|
||||
content: dict[str, str] = yaml.load(file, Loader=yaml.SafeLoader) or {}
|
||||
content.update({ key: base64.b64encode(value.encode()) })
|
||||
yaml.dump(content, file, Dumper=yaml.SafeDumper)
|
||||
|
||||
def get(key: str):
|
||||
value: str = None
|
||||
if not _file.exists():
|
||||
return None
|
||||
with open(_file, "r") as file:
|
||||
content: dict[str, str] = yaml.load(file, Loader=yaml.SafeLoader)
|
||||
value = content.get(key, None)
|
||||
return base64.b64decode(value).decode() if value is not None else None
|
||||
|
||||
def clear():
|
||||
_file.unlink()
|
28
pyproject.toml
Normal file
28
pyproject.toml
Normal file
|
@ -0,0 +1,28 @@
|
|||
[project]
|
||||
name = "dockge_cli"
|
||||
version = "0.0.1-a.1"
|
||||
dependencies = [
|
||||
"pyyaml~=6.0.1"
|
||||
]
|
||||
requires-python = ">= 3.10"
|
||||
authors = [{name = "Firq", email = "firelp42@gmail.com"}]
|
||||
maintainers = [{name = "Firq", email = "firelp42@gmail.com"}]
|
||||
description = "CLi for interacting with dockge"
|
||||
classifiers = [
|
||||
"Development Status :: 3 - Alpha",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
]
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
where = ["."]
|
||||
include = ["dockge_cli*"]
|
||||
|
||||
[tool.pylint."MAIN"]
|
||||
disable = [ "line-too-long", "missing-module-docstring" ]
|
||||
|
||||
[build-system]
|
||||
requires = ["setuptools >= 61.0"]
|
||||
build-backend = "setuptools.build_meta"
|
Loading…
Reference in a new issue