cherrypy-foundation 1.0.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 (163) hide show
  1. cherrypy_foundation-1.0.0/.gitignore +10 -0
  2. cherrypy_foundation-1.0.0/.gitlab-ci.yml +144 -0
  3. cherrypy_foundation-1.0.0/LICENSE.md +674 -0
  4. cherrypy_foundation-1.0.0/MANIFEST.in +1 -0
  5. cherrypy_foundation-1.0.0/PKG-INFO +71 -0
  6. cherrypy_foundation-1.0.0/README.md +30 -0
  7. cherrypy_foundation-1.0.0/debian/TODO +3 -0
  8. cherrypy_foundation-1.0.0/debian/changelog +5 -0
  9. cherrypy_foundation-1.0.0/debian/control +63 -0
  10. cherrypy_foundation-1.0.0/debian/copyright +27 -0
  11. cherrypy_foundation-1.0.0/debian/python3-cherrypy-foundation.links +0 -0
  12. cherrypy_foundation-1.0.0/debian/rules +29 -0
  13. cherrypy_foundation-1.0.0/debian/source/format +1 -0
  14. cherrypy_foundation-1.0.0/debian/upstream/metadata +5 -0
  15. cherrypy_foundation-1.0.0/doc/_templates/version.html +2 -0
  16. cherrypy_foundation-1.0.0/doc/conf.py +69 -0
  17. cherrypy_foundation-1.0.0/doc/error_page.md +163 -0
  18. cherrypy_foundation-1.0.0/doc/flash.md +200 -0
  19. cherrypy_foundation-1.0.0/doc/form.md +286 -0
  20. cherrypy_foundation-1.0.0/doc/index.rst +8 -0
  21. cherrypy_foundation-1.0.0/doc/introduction.md +23 -0
  22. cherrypy_foundation-1.0.0/doc/modules.rst +10 -0
  23. cherrypy_foundation-1.0.0/doc/url.md +230 -0
  24. cherrypy_foundation-1.0.0/pyproject.toml +62 -0
  25. cherrypy_foundation-1.0.0/setup.cfg +4 -0
  26. cherrypy_foundation-1.0.0/sonar-project.properties +2 -0
  27. cherrypy_foundation-1.0.0/src/cherrypy_foundation/__init__.py +0 -0
  28. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/ColorModes.jinja +70 -0
  29. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Datatable.css +47 -0
  30. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Datatable.jinja +63 -0
  31. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Datatable.js +358 -0
  32. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Field.css +10 -0
  33. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Field.jinja +66 -0
  34. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Field.js +56 -0
  35. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Fields.jinja +4 -0
  36. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Flash.jinja +13 -0
  37. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Icon.jinja +3 -0
  38. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/LocaleSelection.jinja +13 -0
  39. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/LocaleSelection.js +26 -0
  40. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/SideBySideMultiSelect.css +25 -0
  41. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/SideBySideMultiSelect.jinja +9 -0
  42. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/SideBySideMultiSelect.js +9 -0
  43. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Typeahead.css +55 -0
  44. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Typeahead.jinja +106 -0
  45. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/Typeahead.js +8 -0
  46. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/__init__.py +51 -0
  47. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/tests/__init__.py +0 -0
  48. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/tests/test_static.py +90 -0
  49. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.css +2106 -0
  50. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap-icons/bootstrap-icons.min.css +5 -0
  51. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  52. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  53. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css +9262 -0
  54. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.css.map +95 -0
  55. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css +6 -0
  56. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap5/css/bootstrap.min.css.map +7 -0
  57. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js +4846 -0
  58. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.js.map +1 -0
  59. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js +7 -0
  60. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap5/js/bootstrap.min.js.map +7 -0
  61. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/bootstrap5/js/color-modes.js +80 -0
  62. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.css +849 -0
  63. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables/css/dataTables.dataTables.min.css +1 -0
  64. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc.png +0 -0
  65. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables/images/sort_asc_disabled.png +0 -0
  66. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables/images/sort_both.png +0 -0
  67. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc.png +0 -0
  68. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables/images/sort_desc_disabled.png +0 -0
  69. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.js +14073 -0
  70. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables/js/dataTables.min.js +4 -0
  71. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.css +556 -0
  72. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/css/buttons.dataTables.min.css +1 -0
  73. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.js +1700 -0
  74. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/buttons.html5.min.js +8 -0
  75. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.js +2944 -0
  76. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Buttons/js/dataTables.buttons.min.js +4 -0
  77. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.css +13 -0
  78. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/css/fixedHeader.dataTables.min.css +1 -0
  79. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.js +1202 -0
  80. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/FixedHeader/js/dataTables.fixedHeader.min.js +4 -0
  81. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.js +11577 -0
  82. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/JSZip/jszip.min.js +13 -0
  83. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.css +194 -0
  84. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/css/responsive.dataTables.min.css +1 -0
  85. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.js +1861 -0
  86. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/Responsive/js/dataTables.responsive.min.js +4 -0
  87. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.js +75023 -0
  88. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/pdfmake.min.js +3 -0
  89. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/pdfmake/build/vfs_fonts.js +6 -0
  90. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.css +53 -0
  91. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/css/rowGroup.dataTables.min.css +1 -0
  92. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.js +485 -0
  93. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/datatables-extensions/rowgroup/js/dataTables.rowGroup.min.js +4 -0
  94. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/jquery/jquery.min.js +2 -0
  95. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/multi/LICENSE +7 -0
  96. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/multi/README.md +109 -0
  97. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/multi/multi.css +95 -0
  98. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/multi/multi.js +328 -0
  99. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/popper/popper.js +1825 -0
  100. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/popper/popper.min.js +6 -0
  101. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.css +1 -0
  102. cherrypy_foundation-1.0.0/src/cherrypy_foundation/components/vendor/typeahead/jquery.typeahead.min.js +10 -0
  103. cherrypy_foundation-1.0.0/src/cherrypy_foundation/error_page.py +94 -0
  104. cherrypy_foundation-1.0.0/src/cherrypy_foundation/flash.py +50 -0
  105. cherrypy_foundation-1.0.0/src/cherrypy_foundation/form.py +119 -0
  106. cherrypy_foundation-1.0.0/src/cherrypy_foundation/logging.py +103 -0
  107. cherrypy_foundation-1.0.0/src/cherrypy_foundation/passwd.py +65 -0
  108. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/__init__.py +0 -0
  109. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/db.py +286 -0
  110. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/ldap.py +257 -0
  111. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/restapi.py +74 -0
  112. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/scheduler.py +287 -0
  113. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/smtp.py +223 -0
  114. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/tests/__init__.py +0 -0
  115. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/tests/test_db.py +118 -0
  116. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/tests/test_ldap.py +451 -0
  117. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/tests/test_scheduler.py +100 -0
  118. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/tests/test_scheduler_db.py +107 -0
  119. cherrypy_foundation-1.0.0/src/cherrypy_foundation/plugins/tests/test_smtp.py +140 -0
  120. cherrypy_foundation-1.0.0/src/cherrypy_foundation/sessions.py +93 -0
  121. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/__init__.py +72 -0
  122. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/templates/test_flash.html +9 -0
  123. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/templates/test_form.html +16 -0
  124. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/templates/test_url.html +15 -0
  125. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/test_error_page.py +78 -0
  126. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/test_flash.py +61 -0
  127. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/test_form.py +148 -0
  128. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/test_logging.py +78 -0
  129. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/test_passwd.py +51 -0
  130. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/test_sessions.py +89 -0
  131. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tests/test_url.py +161 -0
  132. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/__init__.py +0 -0
  133. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/auth.py +263 -0
  134. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/auth_mfa.py +249 -0
  135. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/i18n.py +529 -0
  136. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/jinja2.py +158 -0
  137. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/ratelimit.py +265 -0
  138. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/secure_headers.py +119 -0
  139. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/sessions_timeout.py +167 -0
  140. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/__init__.py +0 -0
  141. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/components/Button.jinja +2 -0
  142. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.mo +0 -0
  143. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/locales/de/LC_MESSAGES/messages.po +15 -0
  144. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.mo +0 -0
  145. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/locales/fr/LC_MESSAGES/messages.po +15 -0
  146. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/locales/messages.pot +2 -0
  147. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/templates/test_jinja2.html +11 -0
  148. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/templates/test_jinjax.html +9 -0
  149. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/templates/test_jinjax_i18n.html +22 -0
  150. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/test_auth.py +110 -0
  151. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/test_auth_mfa.py +369 -0
  152. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/test_i18n.py +247 -0
  153. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/test_jinja2.py +153 -0
  154. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/test_ratelimit.py +109 -0
  155. cherrypy_foundation-1.0.0/src/cherrypy_foundation/tools/tests/test_secure_headers.py +200 -0
  156. cherrypy_foundation-1.0.0/src/cherrypy_foundation/url.py +66 -0
  157. cherrypy_foundation-1.0.0/src/cherrypy_foundation/widgets.py +48 -0
  158. cherrypy_foundation-1.0.0/src/cherrypy_foundation.egg-info/PKG-INFO +71 -0
  159. cherrypy_foundation-1.0.0/src/cherrypy_foundation.egg-info/SOURCES.txt +161 -0
  160. cherrypy_foundation-1.0.0/src/cherrypy_foundation.egg-info/dependency_links.txt +1 -0
  161. cherrypy_foundation-1.0.0/src/cherrypy_foundation.egg-info/requires.txt +28 -0
  162. cherrypy_foundation-1.0.0/src/cherrypy_foundation.egg-info/top_level.txt +1 -0
  163. cherrypy_foundation-1.0.0/tox.ini +87 -0
@@ -0,0 +1,10 @@
1
+ *.egg-info
2
+ .coverage
3
+ .tox
4
+ .venv
5
+ .vscode
6
+ __pycache__
7
+ coverage.xml
8
+ pytestdebug.log
9
+ xunit
10
+ xunit.xml
@@ -0,0 +1,144 @@
1
+ image: python:3.13
2
+
3
+ variables:
4
+ CONTAINER_IMAGE: ${CI_PROJECT_PATH}:${CI_COMMIT_SHORT_SHA}
5
+
6
+ stages:
7
+ - test
8
+ - package
9
+ - publish
10
+
11
+ .tox: &tox
12
+ script:
13
+ - pip install tox
14
+ - tox -e ${TOXENV:-$CI_JOB_NAME}
15
+ stage: test
16
+
17
+ black:
18
+ <<: *tox
19
+
20
+ flake8:
21
+ <<: *tox
22
+
23
+ isort:
24
+ <<: *tox
25
+
26
+ djlint:
27
+ <<: *tox
28
+
29
+ doc:
30
+ <<: *tox
31
+
32
+ py3:
33
+ <<: *tox
34
+ artifacts:
35
+ paths:
36
+ - coverage.xml
37
+ - xunit.xml
38
+
39
+ selenium:
40
+ <<: *tox
41
+ before_script:
42
+ - apt update && apt -y --no-install-recommends install xvfb xauth chromium-driver
43
+ artifacts:
44
+ paths:
45
+ - coverage-selenium.xml
46
+ - xunit-selenium.xml
47
+
48
+ trixie:
49
+ <<: *tox
50
+
51
+ package:py3:
52
+ stage: package
53
+ needs: []
54
+ script:
55
+ - pip3 install wheel build
56
+ - python -m build
57
+ dependencies: []
58
+ artifacts:
59
+ paths:
60
+ - dist/*.whl
61
+ - dist/*.tar.gz
62
+ expire_in: 1 day
63
+
64
+ package:deb:
65
+ stage: package
66
+ needs: []
67
+ image: buildpack-deps:$DIST
68
+ parallel:
69
+ matrix:
70
+ - DIST: trixie
71
+ - DIST: trixie
72
+ DEB_BUILD_PROFILES: nocheck
73
+ script: |
74
+ set -x
75
+ set -e
76
+ apt update
77
+ apt -y --no-install-recommends install devscripts lintian
78
+ apt build-dep -y .
79
+ export DEBEMAIL=$CI_COMMIT_AUTHOR
80
+ dch -v "$(python3 -m setuptools_scm)" "automated build"
81
+ dpkg-buildpackage -b
82
+ lintian
83
+ mkdir -p ./dist/$DIST
84
+ mv ../*.deb ./dist/$DIST/
85
+ artifacts:
86
+ paths:
87
+ - ./dist/*
88
+
89
+ publish:sonar:
90
+ allow_failure: true
91
+ image: sonarsource/sonar-scanner-cli
92
+ needs:
93
+ - py3
94
+ - selenium
95
+ script:
96
+ - sonar-scanner -X -Dsonar.python.coverage.reportPaths=coverage*.xml -Dsonar.python.xunit.reportPaths=xunit*.xml -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_TOKEN -Dsonar.projectKey=$CI_PROJECT_NAME -Dsonar.projectVersion=$(git describe) -Dsonar.qualitygate.wait=true
97
+ stage: publish
98
+ variables:
99
+ SONAR_PROJECT_BASE_DIR: "${CI_PROJECT_DIR}"
100
+
101
+ publish:wheel:
102
+ stage: publish
103
+ only:
104
+ variables:
105
+ - $NEXUS_USR
106
+ - $NEXUS_PWD
107
+ - $NEXUS_PYPI_URL
108
+ needs:
109
+ - package:py3
110
+ script: |
111
+ set -x
112
+ # Publish wheel
113
+ pip3 install wheel twine readme_renderer[md] --upgrade
114
+ LANG="C.UTF-8" python3 -m readme_renderer README.md -o /tmp/README.html
115
+ twine upload dist/*.whl dist/*.tar.gz -u $NEXUS_USR -p $NEXUS_PWD --repository-url $NEXUS_PYPI_URL
116
+ if [ ! -z "$CI_COMMIT_TAG" ]; then
117
+ twine upload dist/*.whl dist/*.tar.gz -u $PYPI_USR -p $PYPI_PWD
118
+ fi
119
+
120
+ publish:deb:
121
+ needs:
122
+ - package:deb
123
+ only:
124
+ variables:
125
+ - $NEXUS_USR
126
+ - $NEXUS_PWD
127
+ parallel:
128
+ matrix:
129
+ - DIST: trixie
130
+ script: |
131
+ set -e
132
+ set -x
133
+ if [[ "$CI_COMMIT_TAG" == *.+([0-9]) ]]; then
134
+ APT_URL="$NEXUS_URL/repository/apt-release-${DIST}/"
135
+ APT_COMPONENT=${DIST}
136
+ else
137
+ APT_URL="$NEXUS_URL/repository/apt-dev-${DIST}/"
138
+ APT_COMPONENT=${DIST}-dev
139
+ fi
140
+ export FILE=$(ls -1 ./dist/$DIST/python3-cherrypy-foundation*.deb)
141
+ curl --fail -u "$NEXUS_USR:$NEXUS_PWD" -H "Content-Type: multipart/form-data" --data-binary "@$FILE" "$APT_URL"
142
+ sleep 2
143
+ curl --fail ${APT_URL}dists/$APT_COMPONENT/main/binary-all/Packages | grep "$(basename $FILE)"
144
+ stage: publish