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.
Files changed (196) hide show
  1. vdoc-0.1.0/.cruft.json +28 -0
  2. vdoc-0.1.0/.github/CODEOWNERS +1 -0
  3. vdoc-0.1.0/.github/workflows/build.yml +46 -0
  4. vdoc-0.1.0/.github/workflows/linting.yml +39 -0
  5. vdoc-0.1.0/.github/workflows/pipeline.yml +155 -0
  6. vdoc-0.1.0/.github/workflows/pr_lint.yml +47 -0
  7. vdoc-0.1.0/.github/workflows/python_template_update_checks.yml +15 -0
  8. vdoc-0.1.0/.github/workflows/tests_and_coverage.yml +84 -0
  9. vdoc-0.1.0/.gitignore +69 -0
  10. vdoc-0.1.0/.prettierignore +9 -0
  11. vdoc-0.1.0/.prettierrc.yml +5 -0
  12. vdoc-0.1.0/Dockerfile +14 -0
  13. vdoc-0.1.0/LICENSE.txt +21 -0
  14. vdoc-0.1.0/PKG-INFO +203 -0
  15. vdoc-0.1.0/README.rst +92 -0
  16. vdoc-0.1.0/docs/_scripts/generate_license_information.py +52 -0
  17. vdoc-0.1.0/docs/_static/.gitignore +1 -0
  18. vdoc-0.1.0/docs/_static/custom.css +4 -0
  19. vdoc-0.1.0/docs/_static/default/css/custom.css +138 -0
  20. vdoc-0.1.0/docs/_static/default/fonts/Roboto-Regular.ttf +0 -0
  21. vdoc-0.1.0/docs/_static/default/fonts/nb_architekt_r_neue_bold-webfont.ttf +0 -0
  22. vdoc-0.1.0/docs/_static/default/fonts/nb_architekt_r_neue_bold-webfont.woff2 +0 -0
  23. vdoc-0.1.0/docs/_static/default/icons/error-triangle-dark.png +0 -0
  24. vdoc-0.1.0/docs/_static/default/icons/error-triangle-white.png +0 -0
  25. vdoc-0.1.0/docs/_static/default/icons/note-circle-white.png +0 -0
  26. vdoc-0.1.0/docs/_static/default/logos/voraus_logo_small.svg +12 -0
  27. vdoc-0.1.0/docs/_templates/license_compliance.rst.j2 +38 -0
  28. vdoc-0.1.0/docs/conf.py +319 -0
  29. vdoc-0.1.0/docs/index.rst +20 -0
  30. vdoc-0.1.0/eslint.config.js +30 -0
  31. vdoc-0.1.0/jreleaser.yml +46 -0
  32. vdoc-0.1.0/package-lock.json +7201 -0
  33. vdoc-0.1.0/package.json +48 -0
  34. vdoc-0.1.0/pyproject.toml +124 -0
  35. vdoc-0.1.0/setup.cfg +94 -0
  36. vdoc-0.1.0/sonar-project.properties +6 -0
  37. vdoc-0.1.0/src/ui/MenuBar.tsx +56 -0
  38. vdoc-0.1.0/src/ui/__tests__/helpers/routeHelpers.test.ts +55 -0
  39. vdoc-0.1.0/src/ui/components/EmptyState.tsx +40 -0
  40. vdoc-0.1.0/src/ui/components/QueryStateHandler.tsx +45 -0
  41. vdoc-0.1.0/src/ui/components/VersionDropdown.tsx +56 -0
  42. vdoc-0.1.0/src/ui/helpers/APIFunctions.ts +14 -0
  43. vdoc-0.1.0/src/ui/helpers/GlobalStore.tsx +11 -0
  44. vdoc-0.1.0/src/ui/helpers/RouteHelpers.ts +26 -0
  45. vdoc-0.1.0/src/ui/helpers/Versions.ts +13 -0
  46. vdoc-0.1.0/src/ui/icons/VDocLogo.tsx +32 -0
  47. vdoc-0.1.0/src/ui/icons/voraus.ico +0 -0
  48. vdoc-0.1.0/src/ui/index.html +14 -0
  49. vdoc-0.1.0/src/ui/interfacesAndTypes/Error.ts +6 -0
  50. vdoc-0.1.0/src/ui/interfacesAndTypes/LinkButton.tsx +13 -0
  51. vdoc-0.1.0/src/ui/interfacesAndTypes/Project.ts +3 -0
  52. vdoc-0.1.0/src/ui/interfacesAndTypes/Store.ts +6 -0
  53. vdoc-0.1.0/src/ui/main.tsx +22 -0
  54. vdoc-0.1.0/src/ui/routeTree.gen.ts +139 -0
  55. vdoc-0.1.0/src/ui/routes/$projectName/$version.$.tsx +148 -0
  56. vdoc-0.1.0/src/ui/routes/$projectName/index.tsx +82 -0
  57. vdoc-0.1.0/src/ui/routes/__root.tsx +23 -0
  58. vdoc-0.1.0/src/ui/routes/index.lazy.tsx +76 -0
  59. vdoc-0.1.0/src/ui/vite-env.d.ts +1 -0
  60. vdoc-0.1.0/src/vdoc/__init__.py +33 -0
  61. vdoc-0.1.0/src/vdoc/api/__init__.py +96 -0
  62. vdoc-0.1.0/src/vdoc/api/dependencies/__init__.py +1 -0
  63. vdoc-0.1.0/src/vdoc/api/dependencies/auth.py +32 -0
  64. vdoc-0.1.0/src/vdoc/api/routes/__init__.py +1 -0
  65. vdoc-0.1.0/src/vdoc/api/routes/projects.py +71 -0
  66. vdoc-0.1.0/src/vdoc/cli/__init__.py +1 -0
  67. vdoc-0.1.0/src/vdoc/cli/main.py +84 -0
  68. vdoc-0.1.0/src/vdoc/cli/run.py +30 -0
  69. vdoc-0.1.0/src/vdoc/constants.py +11 -0
  70. vdoc-0.1.0/src/vdoc/docs/_sources/index.rst.txt +20 -0
  71. vdoc-0.1.0/src/vdoc/docs/_sources/license_compliance.rst.txt +1251 -0
  72. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.api.dependencies.rst.txt +21 -0
  73. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.api.routes.rst.txt +21 -0
  74. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.api.rst.txt +19 -0
  75. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.cli.rst.txt +29 -0
  76. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.exceptions.rst.txt +10 -0
  77. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.methods.api.rst.txt +21 -0
  78. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.methods.cli.rst.txt +21 -0
  79. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.methods.rst.txt +19 -0
  80. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.models.rst.txt +21 -0
  81. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.rst.txt +34 -0
  82. vdoc-0.1.0/src/vdoc/docs/_sources/vdoc.settings.rst.txt +10 -0
  83. vdoc-0.1.0/src/vdoc/docs/_static/0fc70aa4dfe4d16d7073.woff +0 -0
  84. vdoc-0.1.0/src/vdoc/docs/_static/583e3f428bf2362b546d.woff +0 -0
  85. vdoc-0.1.0/src/vdoc/docs/_static/5be6ec379613f10aea3f.woff +0 -0
  86. vdoc-0.1.0/src/vdoc/docs/_static/76c1862325ea6f70eeff.woff2 +0 -0
  87. vdoc-0.1.0/src/vdoc/docs/_static/83710c128240451d95af.woff +0 -0
  88. vdoc-0.1.0/src/vdoc/docs/_static/a63d39a1c104a2b3e87e.woff2 +0 -0
  89. vdoc-0.1.0/src/vdoc/docs/_static/awesome-docsearch.css +1 -0
  90. vdoc-0.1.0/src/vdoc/docs/_static/awesome-docsearch.js +0 -0
  91. vdoc-0.1.0/src/vdoc/docs/_static/awesome-sphinx-design.css +1 -0
  92. vdoc-0.1.0/src/vdoc/docs/_static/awesome-sphinx-design.js +0 -0
  93. vdoc-0.1.0/src/vdoc/docs/_static/b659956119f91f2342bc.woff2 +0 -0
  94. vdoc-0.1.0/src/vdoc/docs/_static/basic.css +914 -0
  95. vdoc-0.1.0/src/vdoc/docs/_static/bb50084be2b43ba7b98c.woff2 +0 -0
  96. vdoc-0.1.0/src/vdoc/docs/_static/ce1e40901d7a0d88d483.woff2 +0 -0
  97. vdoc-0.1.0/src/vdoc/docs/_static/custom.css +4 -0
  98. vdoc-0.1.0/src/vdoc/docs/_static/d04352f240062b100fba.woff2 +0 -0
  99. vdoc-0.1.0/src/vdoc/docs/_static/default/css/custom.css +138 -0
  100. vdoc-0.1.0/src/vdoc/docs/_static/default/fonts/Roboto-Regular.ttf +0 -0
  101. vdoc-0.1.0/src/vdoc/docs/_static/default/fonts/nb_architekt_r_neue_bold-webfont.ttf +0 -0
  102. vdoc-0.1.0/src/vdoc/docs/_static/default/fonts/nb_architekt_r_neue_bold-webfont.woff2 +0 -0
  103. vdoc-0.1.0/src/vdoc/docs/_static/default/icons/error-triangle-dark.png +0 -0
  104. vdoc-0.1.0/src/vdoc/docs/_static/default/icons/error-triangle-white.png +0 -0
  105. vdoc-0.1.0/src/vdoc/docs/_static/default/icons/note-circle-white.png +0 -0
  106. vdoc-0.1.0/src/vdoc/docs/_static/default/logos/voraus_logo_small.svg +12 -0
  107. vdoc-0.1.0/src/vdoc/docs/_static/doctools.js +149 -0
  108. vdoc-0.1.0/src/vdoc/docs/_static/documentation_options.js +13 -0
  109. vdoc-0.1.0/src/vdoc/docs/_static/f1cdf5c21de970ee0592.woff +0 -0
  110. vdoc-0.1.0/src/vdoc/docs/_static/fd994e8d90d9cab651b0.woff +0 -0
  111. vdoc-0.1.0/src/vdoc/docs/_static/file.png +0 -0
  112. vdoc-0.1.0/src/vdoc/docs/_static/language_data.js +192 -0
  113. vdoc-0.1.0/src/vdoc/docs/_static/minus.png +0 -0
  114. vdoc-0.1.0/src/vdoc/docs/_static/plus.png +0 -0
  115. vdoc-0.1.0/src/vdoc/docs/_static/pygments.css +75 -0
  116. vdoc-0.1.0/src/vdoc/docs/_static/searchtools.js +632 -0
  117. vdoc-0.1.0/src/vdoc/docs/_static/sphinx_highlight.js +154 -0
  118. vdoc-0.1.0/src/vdoc/docs/_static/theme.css +9 -0
  119. vdoc-0.1.0/src/vdoc/docs/_static/theme.js +2 -0
  120. vdoc-0.1.0/src/vdoc/docs/_static/theme.js.LICENSE.txt +6 -0
  121. vdoc-0.1.0/src/vdoc/docs/_static/voraus_logo_small.svg +12 -0
  122. vdoc-0.1.0/src/vdoc/docs/genindex.html +569 -0
  123. vdoc-0.1.0/src/vdoc/docs/index.html +302 -0
  124. vdoc-0.1.0/src/vdoc/docs/license_compliance.html +2472 -0
  125. vdoc-0.1.0/src/vdoc/docs/objects.inv +0 -0
  126. vdoc-0.1.0/src/vdoc/docs/py-modindex.html +267 -0
  127. vdoc-0.1.0/src/vdoc/docs/search.html +167 -0
  128. vdoc-0.1.0/src/vdoc/docs/searchindex.js +1 -0
  129. vdoc-0.1.0/src/vdoc/docs/vdoc.api.dependencies.html +181 -0
  130. vdoc-0.1.0/src/vdoc/docs/vdoc.api.html +235 -0
  131. vdoc-0.1.0/src/vdoc/docs/vdoc.api.routes.html +233 -0
  132. vdoc-0.1.0/src/vdoc/docs/vdoc.cli.html +217 -0
  133. vdoc-0.1.0/src/vdoc/docs/vdoc.exceptions.html +208 -0
  134. vdoc-0.1.0/src/vdoc/docs/vdoc.html +282 -0
  135. vdoc-0.1.0/src/vdoc/docs/vdoc.methods.api.html +244 -0
  136. vdoc-0.1.0/src/vdoc/docs/vdoc.methods.cli.html +178 -0
  137. vdoc-0.1.0/src/vdoc/docs/vdoc.methods.html +179 -0
  138. vdoc-0.1.0/src/vdoc/docs/vdoc.models.html +261 -0
  139. vdoc-0.1.0/src/vdoc/docs/vdoc.settings.html +184 -0
  140. vdoc-0.1.0/src/vdoc/exceptions/__init__.py +69 -0
  141. vdoc-0.1.0/src/vdoc/methods/__init__.py +1 -0
  142. vdoc-0.1.0/src/vdoc/methods/api/__init__.py +1 -0
  143. vdoc-0.1.0/src/vdoc/methods/api/projects.py +100 -0
  144. vdoc-0.1.0/src/vdoc/methods/cli/__init__.py +1 -0
  145. vdoc-0.1.0/src/vdoc/methods/cli/cli_run_method.py +20 -0
  146. vdoc-0.1.0/src/vdoc/models/__init__.py +1 -0
  147. vdoc-0.1.0/src/vdoc/models/project.py +120 -0
  148. vdoc-0.1.0/src/vdoc/py.typed +0 -0
  149. vdoc-0.1.0/src/vdoc/settings/__init__.py +26 -0
  150. vdoc-0.1.0/src/vdoc/webapp/assets/index-CA36XZhf.js +673 -0
  151. vdoc-0.1.0/src/vdoc/webapp/assets/index-CA36XZhf.js.gz +0 -0
  152. vdoc-0.1.0/src/vdoc/webapp/assets/index-CA36XZhf.js.map +1 -0
  153. vdoc-0.1.0/src/vdoc/webapp/assets/index.lazy-Bvif9CcS.js +2 -0
  154. vdoc-0.1.0/src/vdoc/webapp/assets/index.lazy-Bvif9CcS.js.gz +0 -0
  155. vdoc-0.1.0/src/vdoc/webapp/assets/index.lazy-Bvif9CcS.js.map +1 -0
  156. vdoc-0.1.0/src/vdoc/webapp/assets/voraus-Ct0-dFDv.ico +0 -0
  157. vdoc-0.1.0/src/vdoc/webapp/index.html +14 -0
  158. vdoc-0.1.0/src/vdoc/webapp/index.html.gz +0 -0
  159. vdoc-0.1.0/src/vdoc.egg-info/PKG-INFO +203 -0
  160. vdoc-0.1.0/src/vdoc.egg-info/SOURCES.txt +195 -0
  161. vdoc-0.1.0/src/vdoc.egg-info/dependency_links.txt +1 -0
  162. vdoc-0.1.0/src/vdoc.egg-info/entry_points.txt +2 -0
  163. vdoc-0.1.0/src/vdoc.egg-info/requires.txt +104 -0
  164. vdoc-0.1.0/src/vdoc.egg-info/top_level.txt +1 -0
  165. vdoc-0.1.0/start_dev.py +51 -0
  166. vdoc-0.1.0/tests/__init__.py +1 -0
  167. vdoc-0.1.0/tests/conftest.py +120 -0
  168. vdoc-0.1.0/tests/integration/__init__.py +1 -0
  169. vdoc-0.1.0/tests/integration/test_intersphinx.py +16 -0
  170. vdoc-0.1.0/tests/resources/__init__.py +1 -0
  171. vdoc-0.1.0/tests/resources/sample-docs/meta-project/conf.py +32 -0
  172. vdoc-0.1.0/tests/resources/sample-docs/meta-project/index.rst +12 -0
  173. vdoc-0.1.0/tests/resources/sample-docs/project-one/conf.py +27 -0
  174. vdoc-0.1.0/tests/resources/sample-docs/project-one/examples.rst +4 -0
  175. vdoc-0.1.0/tests/resources/sample-docs/project-one/get_started.rst +4 -0
  176. vdoc-0.1.0/tests/resources/sample-docs/project-one/index.rst +15 -0
  177. vdoc-0.1.0/tests/resources/sample-docs/project-two/conf.py +27 -0
  178. vdoc-0.1.0/tests/resources/sample-docs/project-two/index.rst +11 -0
  179. vdoc-0.1.0/tests/unit/__init__.py +4 -0
  180. vdoc-0.1.0/tests/unit/api/__init__.py +1 -0
  181. vdoc-0.1.0/tests/unit/api/routes/__init__.py +1 -0
  182. vdoc-0.1.0/tests/unit/api/routes/test_project_routes.py +158 -0
  183. vdoc-0.1.0/tests/unit/cli/__init__.py +1 -0
  184. vdoc-0.1.0/tests/unit/cli/test_main_cli.py +14 -0
  185. vdoc-0.1.0/tests/unit/cli/test_run_cli.py +47 -0
  186. vdoc-0.1.0/tests/unit/models/__init__.py +1 -0
  187. vdoc-0.1.0/tests/unit/models/test_project.py +28 -0
  188. vdoc-0.1.0/tests/unit/settings/__init__.py +1 -0
  189. vdoc-0.1.0/tests/unit/settings/test_settings.py +18 -0
  190. vdoc-0.1.0/tests/unit/test_app_functions.py +14 -0
  191. vdoc-0.1.0/tests/utils/__init__.py +53 -0
  192. vdoc-0.1.0/tox.ini +103 -0
  193. vdoc-0.1.0/tsconfig.app.json +24 -0
  194. vdoc-0.1.0/tsconfig.json +4 -0
  195. vdoc-0.1.0/tsconfig.node.json +24 -0
  196. 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
@@ -0,0 +1,9 @@
1
+ # Ignore folders:
2
+ venv/**
3
+ .tox/**
4
+ docs/**
5
+ reports/**
6
+ .cruft.json
7
+ .devcontainer/**
8
+ .github/**
9
+ src/ui/routeTree.gen.ts
@@ -0,0 +1,5 @@
1
+ trailingComma: 'es5'
2
+ tabWidth: 2
3
+ semi: false
4
+ singleQuote: true
5
+ printWidth: 120
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.