vdoc 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vdoc-0.1.0/.cruft.json +28 -0
- vdoc-0.1.0/.github/CODEOWNERS +1 -0
- vdoc-0.1.0/.github/workflows/build.yml +46 -0
- vdoc-0.1.0/.github/workflows/linting.yml +39 -0
- vdoc-0.1.0/.github/workflows/pipeline.yml +155 -0
- vdoc-0.1.0/.github/workflows/pr_lint.yml +47 -0
- vdoc-0.1.0/.github/workflows/python_template_update_checks.yml +15 -0
- vdoc-0.1.0/.github/workflows/tests_and_coverage.yml +84 -0
- vdoc-0.1.0/.gitignore +69 -0
- vdoc-0.1.0/.prettierignore +9 -0
- vdoc-0.1.0/.prettierrc.yml +5 -0
- vdoc-0.1.0/Dockerfile +14 -0
- vdoc-0.1.0/LICENSE.txt +21 -0
- vdoc-0.1.0/PKG-INFO +203 -0
- vdoc-0.1.0/README.rst +92 -0
- vdoc-0.1.0/docs/_scripts/generate_license_information.py +52 -0
- vdoc-0.1.0/docs/_static/.gitignore +1 -0
- vdoc-0.1.0/docs/_static/custom.css +4 -0
- vdoc-0.1.0/docs/_static/default/css/custom.css +138 -0
- vdoc-0.1.0/docs/_static/default/fonts/Roboto-Regular.ttf +0 -0
- vdoc-0.1.0/docs/_static/default/fonts/nb_architekt_r_neue_bold-webfont.ttf +0 -0
- vdoc-0.1.0/docs/_static/default/fonts/nb_architekt_r_neue_bold-webfont.woff2 +0 -0
- vdoc-0.1.0/docs/_static/default/icons/error-triangle-dark.png +0 -0
- vdoc-0.1.0/docs/_static/default/icons/error-triangle-white.png +0 -0
- vdoc-0.1.0/docs/_static/default/icons/note-circle-white.png +0 -0
- vdoc-0.1.0/docs/_static/default/logos/voraus_logo_small.svg +12 -0
- vdoc-0.1.0/docs/_templates/license_compliance.rst.j2 +38 -0
- vdoc-0.1.0/docs/conf.py +319 -0
- vdoc-0.1.0/docs/index.rst +20 -0
- vdoc-0.1.0/eslint.config.js +30 -0
- vdoc-0.1.0/jreleaser.yml +46 -0
- vdoc-0.1.0/package-lock.json +7201 -0
- vdoc-0.1.0/package.json +48 -0
- vdoc-0.1.0/pyproject.toml +124 -0
- vdoc-0.1.0/setup.cfg +94 -0
- vdoc-0.1.0/sonar-project.properties +6 -0
- vdoc-0.1.0/src/ui/MenuBar.tsx +56 -0
- vdoc-0.1.0/src/ui/__tests__/helpers/routeHelpers.test.ts +55 -0
- vdoc-0.1.0/src/ui/components/EmptyState.tsx +40 -0
- vdoc-0.1.0/src/ui/components/QueryStateHandler.tsx +45 -0
- vdoc-0.1.0/src/ui/components/VersionDropdown.tsx +56 -0
- vdoc-0.1.0/src/ui/helpers/APIFunctions.ts +14 -0
- vdoc-0.1.0/src/ui/helpers/GlobalStore.tsx +11 -0
- vdoc-0.1.0/src/ui/helpers/RouteHelpers.ts +26 -0
- vdoc-0.1.0/src/ui/helpers/Versions.ts +13 -0
- vdoc-0.1.0/src/ui/icons/VDocLogo.tsx +32 -0
- vdoc-0.1.0/src/ui/icons/voraus.ico +0 -0
- vdoc-0.1.0/src/ui/index.html +14 -0
- vdoc-0.1.0/src/ui/interfacesAndTypes/Error.ts +6 -0
- vdoc-0.1.0/src/ui/interfacesAndTypes/LinkButton.tsx +13 -0
- vdoc-0.1.0/src/ui/interfacesAndTypes/Project.ts +3 -0
- vdoc-0.1.0/src/ui/interfacesAndTypes/Store.ts +6 -0
- vdoc-0.1.0/src/ui/main.tsx +22 -0
- vdoc-0.1.0/src/ui/routeTree.gen.ts +139 -0
- vdoc-0.1.0/src/ui/routes/$projectName/$version.$.tsx +148 -0
- vdoc-0.1.0/src/ui/routes/$projectName/index.tsx +82 -0
- vdoc-0.1.0/src/ui/routes/__root.tsx +23 -0
- vdoc-0.1.0/src/ui/routes/index.lazy.tsx +76 -0
- vdoc-0.1.0/src/ui/vite-env.d.ts +1 -0
- vdoc-0.1.0/src/vdoc/__init__.py +33 -0
- vdoc-0.1.0/src/vdoc/api/__init__.py +96 -0
- vdoc-0.1.0/src/vdoc/api/dependencies/__init__.py +1 -0
- vdoc-0.1.0/src/vdoc/api/dependencies/auth.py +32 -0
- vdoc-0.1.0/src/vdoc/api/routes/__init__.py +1 -0
- vdoc-0.1.0/src/vdoc/api/routes/projects.py +71 -0
- vdoc-0.1.0/src/vdoc/cli/__init__.py +1 -0
- vdoc-0.1.0/src/vdoc/cli/main.py +84 -0
- vdoc-0.1.0/src/vdoc/cli/run.py +30 -0
- vdoc-0.1.0/src/vdoc/constants.py +11 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/index.rst.txt +20 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/license_compliance.rst.txt +1251 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.api.dependencies.rst.txt +21 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.api.routes.rst.txt +21 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.api.rst.txt +19 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.cli.rst.txt +29 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.exceptions.rst.txt +10 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.methods.api.rst.txt +21 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.methods.cli.rst.txt +21 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.methods.rst.txt +19 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.models.rst.txt +21 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.rst.txt +34 -0
- vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.settings.rst.txt +10 -0
- vdoc-0.1.0/src/vdoc/docs/_static/0fc70aa4dfe4d16d7073.woff +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/583e3f428bf2362b546d.woff +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/5be6ec379613f10aea3f.woff +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/76c1862325ea6f70eeff.woff2 +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/83710c128240451d95af.woff +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/a63d39a1c104a2b3e87e.woff2 +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/awesome-docsearch.css +1 -0
- vdoc-0.1.0/src/vdoc/docs/_static/awesome-docsearch.js +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/awesome-sphinx-design.css +1 -0
- vdoc-0.1.0/src/vdoc/docs/_static/awesome-sphinx-design.js +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/b659956119f91f2342bc.woff2 +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/basic.css +914 -0
- vdoc-0.1.0/src/vdoc/docs/_static/bb50084be2b43ba7b98c.woff2 +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/ce1e40901d7a0d88d483.woff2 +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/custom.css +4 -0
- vdoc-0.1.0/src/vdoc/docs/_static/d04352f240062b100fba.woff2 +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/default/css/custom.css +138 -0
- vdoc-0.1.0/src/vdoc/docs/_static/default/fonts/Roboto-Regular.ttf +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/default/fonts/nb_architekt_r_neue_bold-webfont.ttf +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/default/fonts/nb_architekt_r_neue_bold-webfont.woff2 +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/default/icons/error-triangle-dark.png +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/default/icons/error-triangle-white.png +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/default/icons/note-circle-white.png +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/default/logos/voraus_logo_small.svg +12 -0
- vdoc-0.1.0/src/vdoc/docs/_static/doctools.js +149 -0
- vdoc-0.1.0/src/vdoc/docs/_static/documentation_options.js +13 -0
- vdoc-0.1.0/src/vdoc/docs/_static/f1cdf5c21de970ee0592.woff +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/fd994e8d90d9cab651b0.woff +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/file.png +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/language_data.js +192 -0
- vdoc-0.1.0/src/vdoc/docs/_static/minus.png +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/plus.png +0 -0
- vdoc-0.1.0/src/vdoc/docs/_static/pygments.css +75 -0
- vdoc-0.1.0/src/vdoc/docs/_static/searchtools.js +632 -0
- vdoc-0.1.0/src/vdoc/docs/_static/sphinx_highlight.js +154 -0
- vdoc-0.1.0/src/vdoc/docs/_static/theme.css +9 -0
- vdoc-0.1.0/src/vdoc/docs/_static/theme.js +2 -0
- vdoc-0.1.0/src/vdoc/docs/_static/theme.js.LICENSE.txt +6 -0
- vdoc-0.1.0/src/vdoc/docs/_static/voraus_logo_small.svg +12 -0
- vdoc-0.1.0/src/vdoc/docs/genindex.html +569 -0
- vdoc-0.1.0/src/vdoc/docs/index.html +302 -0
- vdoc-0.1.0/src/vdoc/docs/license_compliance.html +2472 -0
- vdoc-0.1.0/src/vdoc/docs/objects.inv +0 -0
- vdoc-0.1.0/src/vdoc/docs/py-modindex.html +267 -0
- vdoc-0.1.0/src/vdoc/docs/search.html +167 -0
- vdoc-0.1.0/src/vdoc/docs/searchindex.js +1 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.api.dependencies.html +181 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.api.html +235 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.api.routes.html +233 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.cli.html +217 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.exceptions.html +208 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.html +282 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.methods.api.html +244 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.methods.cli.html +178 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.methods.html +179 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.models.html +261 -0
- vdoc-0.1.0/src/vdoc/docs/vdoc.settings.html +184 -0
- vdoc-0.1.0/src/vdoc/exceptions/__init__.py +69 -0
- vdoc-0.1.0/src/vdoc/methods/__init__.py +1 -0
- vdoc-0.1.0/src/vdoc/methods/api/__init__.py +1 -0
- vdoc-0.1.0/src/vdoc/methods/api/projects.py +100 -0
- vdoc-0.1.0/src/vdoc/methods/cli/__init__.py +1 -0
- vdoc-0.1.0/src/vdoc/methods/cli/cli_run_method.py +20 -0
- vdoc-0.1.0/src/vdoc/models/__init__.py +1 -0
- vdoc-0.1.0/src/vdoc/models/project.py +120 -0
- vdoc-0.1.0/src/vdoc/py.typed +0 -0
- vdoc-0.1.0/src/vdoc/settings/__init__.py +26 -0
- vdoc-0.1.0/src/vdoc/webapp/assets/index-CA36XZhf.js +673 -0
- vdoc-0.1.0/src/vdoc/webapp/assets/index-CA36XZhf.js.gz +0 -0
- vdoc-0.1.0/src/vdoc/webapp/assets/index-CA36XZhf.js.map +1 -0
- vdoc-0.1.0/src/vdoc/webapp/assets/index.lazy-Bvif9CcS.js +2 -0
- vdoc-0.1.0/src/vdoc/webapp/assets/index.lazy-Bvif9CcS.js.gz +0 -0
- vdoc-0.1.0/src/vdoc/webapp/assets/index.lazy-Bvif9CcS.js.map +1 -0
- vdoc-0.1.0/src/vdoc/webapp/assets/voraus-Ct0-dFDv.ico +0 -0
- vdoc-0.1.0/src/vdoc/webapp/index.html +14 -0
- vdoc-0.1.0/src/vdoc/webapp/index.html.gz +0 -0
- vdoc-0.1.0/src/vdoc.egg-info/PKG-INFO +203 -0
- vdoc-0.1.0/src/vdoc.egg-info/SOURCES.txt +195 -0
- vdoc-0.1.0/src/vdoc.egg-info/dependency_links.txt +1 -0
- vdoc-0.1.0/src/vdoc.egg-info/entry_points.txt +2 -0
- vdoc-0.1.0/src/vdoc.egg-info/requires.txt +104 -0
- vdoc-0.1.0/src/vdoc.egg-info/top_level.txt +1 -0
- vdoc-0.1.0/start_dev.py +51 -0
- vdoc-0.1.0/tests/__init__.py +1 -0
- vdoc-0.1.0/tests/conftest.py +120 -0
- vdoc-0.1.0/tests/integration/__init__.py +1 -0
- vdoc-0.1.0/tests/integration/test_intersphinx.py +16 -0
- vdoc-0.1.0/tests/resources/__init__.py +1 -0
- vdoc-0.1.0/tests/resources/sample-docs/meta-project/conf.py +32 -0
- vdoc-0.1.0/tests/resources/sample-docs/meta-project/index.rst +12 -0
- vdoc-0.1.0/tests/resources/sample-docs/project-one/conf.py +27 -0
- vdoc-0.1.0/tests/resources/sample-docs/project-one/examples.rst +4 -0
- vdoc-0.1.0/tests/resources/sample-docs/project-one/get_started.rst +4 -0
- vdoc-0.1.0/tests/resources/sample-docs/project-one/index.rst +15 -0
- vdoc-0.1.0/tests/resources/sample-docs/project-two/conf.py +27 -0
- vdoc-0.1.0/tests/resources/sample-docs/project-two/index.rst +11 -0
- vdoc-0.1.0/tests/unit/__init__.py +4 -0
- vdoc-0.1.0/tests/unit/api/__init__.py +1 -0
- vdoc-0.1.0/tests/unit/api/routes/__init__.py +1 -0
- vdoc-0.1.0/tests/unit/api/routes/test_project_routes.py +158 -0
- vdoc-0.1.0/tests/unit/cli/__init__.py +1 -0
- vdoc-0.1.0/tests/unit/cli/test_main_cli.py +14 -0
- vdoc-0.1.0/tests/unit/cli/test_run_cli.py +47 -0
- vdoc-0.1.0/tests/unit/models/__init__.py +1 -0
- vdoc-0.1.0/tests/unit/models/test_project.py +28 -0
- vdoc-0.1.0/tests/unit/settings/__init__.py +1 -0
- vdoc-0.1.0/tests/unit/settings/test_settings.py +18 -0
- vdoc-0.1.0/tests/unit/test_app_functions.py +14 -0
- vdoc-0.1.0/tests/utils/__init__.py +53 -0
- vdoc-0.1.0/tox.ini +103 -0
- vdoc-0.1.0/tsconfig.app.json +24 -0
- vdoc-0.1.0/tsconfig.json +4 -0
- vdoc-0.1.0/tsconfig.node.json +24 -0
- vdoc-0.1.0/vite.config.ts +36 -0
vdoc-0.1.0/.cruft.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "git@github.com:vorausrobotik/voraus-cookiecutter-pypackage.git",
|
|
3
|
+
"commit": "5a518fdfdcdf9db123bd1fc2ccf9953ee3df7e9a",
|
|
4
|
+
"checkout": "development",
|
|
5
|
+
"context": {
|
|
6
|
+
"cookiecutter": {
|
|
7
|
+
"full_name": "Jan-Frederik Schmidt",
|
|
8
|
+
"email": "jan-frederik.schmidt@vorausrobotik.com",
|
|
9
|
+
"github_user": "g3n35i5",
|
|
10
|
+
"project_name": "vdoc",
|
|
11
|
+
"repo_name": "vdoc",
|
|
12
|
+
"package_name": "vdoc",
|
|
13
|
+
"import_name": "vdoc",
|
|
14
|
+
"project_short_description": "Multi version documentation hosting.",
|
|
15
|
+
"url": "https://github.com/vorausrobotik/vdoc",
|
|
16
|
+
"_debug": "False",
|
|
17
|
+
"_extensions": [
|
|
18
|
+
"extensions.git_extension.GitExtension"
|
|
19
|
+
],
|
|
20
|
+
"_copy_without_render": [
|
|
21
|
+
"docs/_templates/license_compliance.rst.j2",
|
|
22
|
+
"jreleaser.yml"
|
|
23
|
+
],
|
|
24
|
+
"_template": "git@github.com:vorausrobotik/voraus-cookiecutter-pypackage.git"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"directory": null
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @g3n35i5
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Build
|
|
2
|
+
|
|
3
|
+
on: [workflow_call]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
build-wheel:
|
|
7
|
+
runs-on: ubuntu-latest
|
|
8
|
+
steps:
|
|
9
|
+
- uses: actions/checkout@v4
|
|
10
|
+
with:
|
|
11
|
+
fetch-depth: 0
|
|
12
|
+
|
|
13
|
+
- uses: actions/setup-node@v4
|
|
14
|
+
with:
|
|
15
|
+
node-version: lts/*
|
|
16
|
+
|
|
17
|
+
- uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: 3.13
|
|
20
|
+
|
|
21
|
+
- name: Install npm dependencies
|
|
22
|
+
run: npm ci
|
|
23
|
+
|
|
24
|
+
- name: Install tox
|
|
25
|
+
run: python -m pip install --upgrade tox==4.23.2 tox-uv~=1.16.0
|
|
26
|
+
|
|
27
|
+
- name: Build docs
|
|
28
|
+
run: tox run -e docs
|
|
29
|
+
|
|
30
|
+
- name: Build UI
|
|
31
|
+
run: npm run build
|
|
32
|
+
|
|
33
|
+
- name: Build python app
|
|
34
|
+
run: tox run -e build
|
|
35
|
+
|
|
36
|
+
- name: Upload python artifacts
|
|
37
|
+
uses: actions/upload-artifact@v4
|
|
38
|
+
with:
|
|
39
|
+
name: dist
|
|
40
|
+
path: dist/*
|
|
41
|
+
|
|
42
|
+
- name: Upload docs
|
|
43
|
+
uses: actions/upload-artifact@v4
|
|
44
|
+
with:
|
|
45
|
+
name: docs
|
|
46
|
+
path: src/vdoc/docs/*
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Linting
|
|
2
|
+
|
|
3
|
+
on: [workflow_call]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
lint-python:
|
|
7
|
+
runs-on: ubuntu-latest
|
|
8
|
+
|
|
9
|
+
steps:
|
|
10
|
+
- uses: actions/checkout@v4
|
|
11
|
+
with:
|
|
12
|
+
fetch-depth: 0
|
|
13
|
+
|
|
14
|
+
- uses: actions/setup-python@v5
|
|
15
|
+
with:
|
|
16
|
+
python-version: 3.11
|
|
17
|
+
|
|
18
|
+
- name: Install tox
|
|
19
|
+
run: python -m pip install --upgrade tox==4.23.2 tox-uv~=1.16.0
|
|
20
|
+
|
|
21
|
+
- name: Run static checks
|
|
22
|
+
run: tox -e lint
|
|
23
|
+
|
|
24
|
+
lint-ts:
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
with:
|
|
29
|
+
fetch-depth: 0
|
|
30
|
+
|
|
31
|
+
- uses: actions/setup-node@v4
|
|
32
|
+
with:
|
|
33
|
+
node-version: lts/*
|
|
34
|
+
|
|
35
|
+
- name: Install Dependencies
|
|
36
|
+
run: npm ci
|
|
37
|
+
|
|
38
|
+
- name: Lint UI
|
|
39
|
+
run: npm run lint
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
name: CI pipeline
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: write
|
|
5
|
+
id-token: write
|
|
6
|
+
issues: write
|
|
7
|
+
pages: write
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
pull_request:
|
|
11
|
+
branches:
|
|
12
|
+
- main
|
|
13
|
+
push:
|
|
14
|
+
branches:
|
|
15
|
+
- "main"
|
|
16
|
+
tags:
|
|
17
|
+
- '*'
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
tests-and-coverage:
|
|
21
|
+
uses: ./.github/workflows/tests_and_coverage.yml
|
|
22
|
+
linting:
|
|
23
|
+
uses: ./.github/workflows/linting.yml
|
|
24
|
+
build:
|
|
25
|
+
uses: ./.github/workflows/build.yml
|
|
26
|
+
publish-pypi:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
|
29
|
+
needs:
|
|
30
|
+
- tests-and-coverage
|
|
31
|
+
- linting
|
|
32
|
+
- build
|
|
33
|
+
steps:
|
|
34
|
+
- name: Download all artifacts
|
|
35
|
+
uses: actions/download-artifact@v4
|
|
36
|
+
with:
|
|
37
|
+
name: dist
|
|
38
|
+
path: dist
|
|
39
|
+
|
|
40
|
+
- name: Publish package distributions to PyPI
|
|
41
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
42
|
+
env:
|
|
43
|
+
url: https://pypi.org/p/vdoc
|
|
44
|
+
|
|
45
|
+
publish-docker:
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
|
48
|
+
needs:
|
|
49
|
+
- tests-and-coverage
|
|
50
|
+
- linting
|
|
51
|
+
- build
|
|
52
|
+
env:
|
|
53
|
+
IMAGE_NAME: voraus.jfrog.io/docker-public/vdoc
|
|
54
|
+
JFROG_CLI_BUILD_NAME: vdoc/${{ github.ref_name }}
|
|
55
|
+
JFROG_CLI_BUILD_NUMBER: '1'
|
|
56
|
+
steps:
|
|
57
|
+
- uses: jfrog/setup-jfrog-cli@v4
|
|
58
|
+
env:
|
|
59
|
+
JF_URL: https://voraus.jfrog.io
|
|
60
|
+
with:
|
|
61
|
+
oidc-provider-name: voraus-github-organization
|
|
62
|
+
|
|
63
|
+
- uses: actions/checkout@v4
|
|
64
|
+
with:
|
|
65
|
+
fetch-depth: 0
|
|
66
|
+
fetch-tags: true
|
|
67
|
+
|
|
68
|
+
- name: Download all artifacts
|
|
69
|
+
uses: actions/download-artifact@v4
|
|
70
|
+
with:
|
|
71
|
+
name: dist
|
|
72
|
+
path: dist
|
|
73
|
+
|
|
74
|
+
- name: Set up QEMU
|
|
75
|
+
uses: docker/setup-qemu-action@v3
|
|
76
|
+
|
|
77
|
+
- name: Set up Docker Buildx
|
|
78
|
+
uses: docker/setup-buildx-action@v3
|
|
79
|
+
|
|
80
|
+
- name: Determine Docker tags
|
|
81
|
+
id: set-tags
|
|
82
|
+
run: |
|
|
83
|
+
TAG="${{ github.ref_name }}"
|
|
84
|
+
LATEST_TAG=$(git tag --sort=-v:refname | head -n 1)
|
|
85
|
+
|
|
86
|
+
TAGS="${IMAGE_NAME}:${TAG}"
|
|
87
|
+
if [[ "$TAG" == "$LATEST_TAG" ]]; then
|
|
88
|
+
TAGS="${TAGS},${IMAGE_NAME}:latest"
|
|
89
|
+
fi
|
|
90
|
+
|
|
91
|
+
echo "tags=$TAGS" >> $GITHUB_OUTPUT
|
|
92
|
+
|
|
93
|
+
- name: Build Docker Image(s)
|
|
94
|
+
run: |
|
|
95
|
+
IFS=',' read -ra TAG_ARRAY <<< "${{ steps.set-tags.outputs.tags }}"
|
|
96
|
+
TAG_OPTIONS=$(printf " -t %s" "${TAG_ARRAY[@]}")
|
|
97
|
+
jf docker build $TAG_OPTIONS .
|
|
98
|
+
|
|
99
|
+
- name: Push and scan Docker Image(s)
|
|
100
|
+
run: |
|
|
101
|
+
IFS=',' read -ra TAG_ARRAY <<< "${{ steps.set-tags.outputs.tags }}"
|
|
102
|
+
for TAG in "${TAG_ARRAY[@]}"; do
|
|
103
|
+
jf docker push "$TAG"
|
|
104
|
+
jf docker scan "$TAG"
|
|
105
|
+
done
|
|
106
|
+
|
|
107
|
+
- name: Publish Build Info
|
|
108
|
+
run: |
|
|
109
|
+
jf rt build-publish
|
|
110
|
+
|
|
111
|
+
create-github-release:
|
|
112
|
+
runs-on: ubuntu-latest
|
|
113
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
|
114
|
+
needs:
|
|
115
|
+
- publish-docker
|
|
116
|
+
- publish-pypi
|
|
117
|
+
steps:
|
|
118
|
+
- name: Checkout
|
|
119
|
+
uses: actions/checkout@v4
|
|
120
|
+
with:
|
|
121
|
+
fetch-depth: 0
|
|
122
|
+
|
|
123
|
+
- name: Run JReleaser
|
|
124
|
+
uses: jreleaser/release-action@v2
|
|
125
|
+
with:
|
|
126
|
+
version: 1.13.1
|
|
127
|
+
env:
|
|
128
|
+
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
129
|
+
JRELEASER_PROJECT_VERSION: ${{ github.ref_name }}
|
|
130
|
+
|
|
131
|
+
publish-docs:
|
|
132
|
+
runs-on: ubuntu-latest
|
|
133
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
|
134
|
+
needs:
|
|
135
|
+
- tests-and-coverage
|
|
136
|
+
- linting
|
|
137
|
+
- build
|
|
138
|
+
steps:
|
|
139
|
+
- name: Download all artifacts
|
|
140
|
+
uses: actions/download-artifact@v4
|
|
141
|
+
with:
|
|
142
|
+
name: docs
|
|
143
|
+
path: docs
|
|
144
|
+
|
|
145
|
+
- name: Setup Pages
|
|
146
|
+
uses: actions/configure-pages@v5
|
|
147
|
+
|
|
148
|
+
- name: Upload artifact
|
|
149
|
+
uses: actions/upload-pages-artifact@v3
|
|
150
|
+
with:
|
|
151
|
+
path: docs/
|
|
152
|
+
|
|
153
|
+
- name: Deploy to GitHub Pages
|
|
154
|
+
id: deployment
|
|
155
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Pull Request Lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [opened, edited, synchronize, labeled, unlabeled]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
pull-requests: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
main:
|
|
12
|
+
name: Validate PR title and description
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: amannn/action-semantic-pull-request@v5
|
|
16
|
+
env:
|
|
17
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
18
|
+
with:
|
|
19
|
+
requireScope: false
|
|
20
|
+
# Configure additional validation for the subject based on a regex.
|
|
21
|
+
# This ensures the subject does start with an uppercase character.
|
|
22
|
+
subjectPattern: ^(?![a-z])(?![a-zA-Z]+s\s(?<!ss\s)).+[^\.\?\!]$
|
|
23
|
+
# If `subjectPattern` is configured, you can use this property to override
|
|
24
|
+
# the default error message that is shown when the pattern doesn't match.
|
|
25
|
+
# The variables `subject` and `title` can be used within the message.
|
|
26
|
+
subjectPatternError: |
|
|
27
|
+
The subject "{subject}" found in the pull request title "{title}"
|
|
28
|
+
didn't match the configured pattern. Please ensure that:
|
|
29
|
+
- The subject does start with an uppercase character
|
|
30
|
+
- The subject does not end with a dot, question or exclamation mark
|
|
31
|
+
- The subject uses imperative mood
|
|
32
|
+
# If the PR contains one of these newline-delimited labels, the
|
|
33
|
+
# validation is skipped.
|
|
34
|
+
ignoreLabels: |
|
|
35
|
+
rebase
|
|
36
|
+
- name: Validate PR body is filled
|
|
37
|
+
env:
|
|
38
|
+
BODY_CONTEXT: ${{ toJson(github.event.pull_request.body) }}
|
|
39
|
+
run: |
|
|
40
|
+
if [ "$BODY_CONTEXT" = "null" ];\
|
|
41
|
+
then\
|
|
42
|
+
echo "Error: The pull request body is empty." &&\
|
|
43
|
+
echo "Please add a description why the change is necessary and link tickets." &&\
|
|
44
|
+
(exit 1);
|
|
45
|
+
else\
|
|
46
|
+
echo "PR Body is not empty. Check passed.";\
|
|
47
|
+
fi\
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: Python template update checks
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- "chore/update-template**"
|
|
6
|
+
jobs:
|
|
7
|
+
fail-if-rej-files-exist:
|
|
8
|
+
name: "Check for rejected files"
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v3
|
|
12
|
+
# Assert that 0 files ending with '.rej' are in the current working directory.
|
|
13
|
+
# `xargs` returns 0 on success, otherwise status codes between 1 and 127, see
|
|
14
|
+
# https://man7.org/linux/man-pages/man1/xargs.1.html for details.
|
|
15
|
+
- run: find . -iname "*.rej" | wc -l | xargs -I % test % -eq 0
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
name: Tests & Coverage
|
|
2
|
+
|
|
3
|
+
on: [workflow_call]
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
test-python:
|
|
8
|
+
runs-on: ${{ matrix.os }}
|
|
9
|
+
strategy:
|
|
10
|
+
matrix:
|
|
11
|
+
os: [macos-latest, ubuntu-latest]
|
|
12
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
with:
|
|
17
|
+
fetch-depth: 0
|
|
18
|
+
|
|
19
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: ${{ matrix.python-version }}
|
|
23
|
+
|
|
24
|
+
- name: Install tox
|
|
25
|
+
run: python -m pip install --upgrade pip tox==4.23.2 tox-uv~=1.16.0 tox-gh-actions~=3.0
|
|
26
|
+
|
|
27
|
+
- name: Run tests
|
|
28
|
+
run: tox
|
|
29
|
+
|
|
30
|
+
- name: Upload coverage artifact
|
|
31
|
+
if: matrix.os == 'ubuntu-latest'
|
|
32
|
+
uses: actions/upload-artifact@v4
|
|
33
|
+
with:
|
|
34
|
+
name: coverage-${{ matrix.python-version }}
|
|
35
|
+
path: reports/.coverage.*test
|
|
36
|
+
include-hidden-files: true
|
|
37
|
+
|
|
38
|
+
coverage-python:
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
timeout-minutes: 5
|
|
41
|
+
needs: test-python
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v4
|
|
44
|
+
with:
|
|
45
|
+
fetch-depth: 0
|
|
46
|
+
|
|
47
|
+
- name: Download all coverage artifacts
|
|
48
|
+
uses: actions/download-artifact@v4
|
|
49
|
+
with:
|
|
50
|
+
merge-multiple: true
|
|
51
|
+
path: reports
|
|
52
|
+
|
|
53
|
+
- uses: actions/setup-python@v5
|
|
54
|
+
with:
|
|
55
|
+
python-version: 3.11
|
|
56
|
+
|
|
57
|
+
- name: Install tox
|
|
58
|
+
run: python -m pip install --upgrade pip tox
|
|
59
|
+
|
|
60
|
+
- name: Combine coverage results
|
|
61
|
+
run: tox run -e combine-test-reports
|
|
62
|
+
|
|
63
|
+
- name: Archive code coverage results
|
|
64
|
+
uses: actions/upload-artifact@v4
|
|
65
|
+
with:
|
|
66
|
+
name: code-coverage-report
|
|
67
|
+
path: reports/coverage.xml
|
|
68
|
+
|
|
69
|
+
test-ui:
|
|
70
|
+
runs-on: ubuntu-latest
|
|
71
|
+
steps:
|
|
72
|
+
- uses: actions/checkout@v4
|
|
73
|
+
with:
|
|
74
|
+
fetch-depth: 0
|
|
75
|
+
|
|
76
|
+
- uses: actions/setup-node@v4
|
|
77
|
+
with:
|
|
78
|
+
node-version: lts/*
|
|
79
|
+
|
|
80
|
+
- name: Install Dependencies
|
|
81
|
+
run: npm ci
|
|
82
|
+
|
|
83
|
+
- name: Run UI unit tests
|
|
84
|
+
run: npm run test:unit
|
vdoc-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# These are some examples of commonly ignored file patterns.
|
|
2
|
+
# You should customize this list as applicable to your project.
|
|
3
|
+
# Learn more about .gitignore:
|
|
4
|
+
# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
|
|
5
|
+
|
|
6
|
+
# General
|
|
7
|
+
output/
|
|
8
|
+
.tox/
|
|
9
|
+
reports/
|
|
10
|
+
.coverage
|
|
11
|
+
.coverage.*
|
|
12
|
+
MANIFEST
|
|
13
|
+
docs/vdoc*
|
|
14
|
+
docs/modules.rst
|
|
15
|
+
docs/ossLicenses.json
|
|
16
|
+
docs/license_compliance.rst
|
|
17
|
+
.env
|
|
18
|
+
|
|
19
|
+
# Build and package files
|
|
20
|
+
**/*.egg-info/
|
|
21
|
+
**/build/**/*
|
|
22
|
+
node_modules/
|
|
23
|
+
dist/
|
|
24
|
+
.jfrog/
|
|
25
|
+
*.class
|
|
26
|
+
*.py[cod]
|
|
27
|
+
*.jar
|
|
28
|
+
vdoc-[0-9]*
|
|
29
|
+
|
|
30
|
+
# Log files
|
|
31
|
+
**/log/**/*
|
|
32
|
+
*.log
|
|
33
|
+
|
|
34
|
+
# IDEs
|
|
35
|
+
.idea/
|
|
36
|
+
.vscode/
|
|
37
|
+
|
|
38
|
+
# Virtual environments
|
|
39
|
+
venv*/
|
|
40
|
+
.venv/
|
|
41
|
+
.conda/
|
|
42
|
+
|
|
43
|
+
# Cache directories
|
|
44
|
+
.mypy_cache
|
|
45
|
+
.pytest_cache
|
|
46
|
+
.ruff_cache
|
|
47
|
+
|
|
48
|
+
# Generated by OS
|
|
49
|
+
.DS_Store
|
|
50
|
+
Thumbs.db
|
|
51
|
+
|
|
52
|
+
# Applications
|
|
53
|
+
*.app
|
|
54
|
+
*.exe
|
|
55
|
+
*.war
|
|
56
|
+
|
|
57
|
+
# Large media files
|
|
58
|
+
*.mp4
|
|
59
|
+
*.tiff
|
|
60
|
+
*.avi
|
|
61
|
+
*.flv
|
|
62
|
+
*.mov
|
|
63
|
+
*.wmv
|
|
64
|
+
|
|
65
|
+
src/vdoc/webapp/
|
|
66
|
+
src/vdoc/docs/
|
|
67
|
+
|
|
68
|
+
# Local development files and documentation
|
|
69
|
+
vdoc-docs
|
vdoc-0.1.0/Dockerfile
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
FROM python:3.13-alpine
|
|
2
|
+
|
|
3
|
+
ENV PYTHONDONTWRITEBYTECODE=1
|
|
4
|
+
|
|
5
|
+
EXPOSE 8080
|
|
6
|
+
ENTRYPOINT [ "vdoc" ]
|
|
7
|
+
CMD []
|
|
8
|
+
|
|
9
|
+
RUN --mount=type=bind,source=./dist/,target=/pip-packages/ \
|
|
10
|
+
pip install \
|
|
11
|
+
--no-cache-dir \
|
|
12
|
+
--no-compile \
|
|
13
|
+
--upgrade \
|
|
14
|
+
/pip-packages/*.whl
|
vdoc-0.1.0/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 voraus robotik GmbH
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|