ctoon 0.2.0__tar.gz → 0.2.2__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.
- {ctoon-0.2.0 → ctoon-0.2.2}/.github/workflows/cmake.yml +29 -50
- ctoon-0.2.2/.github/workflows/orchestrator.yml +127 -0
- ctoon-0.2.2/.github/workflows/process_release.py +77 -0
- ctoon-0.2.2/.github/workflows/release_template.md +9 -0
- ctoon-0.2.2/.github/workflows/wheels.yml +75 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/PKG-INFO +1 -1
- ctoon-0.2.2/TECHNICAL.md +336 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/cmake/coverage_iframe.html.in +43 -15
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/CMakeLists.txt +48 -3
- ctoon-0.2.2/docs/CToonPages.cmake +197 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/CreateDocs.cmake +7 -2
- ctoon-0.2.2/docs/InjectComment.cmake +85 -0
- ctoon-0.2.2/docs/cli/examples.md +68 -0
- ctoon-0.2.2/docs/cli/index.md +26 -0
- ctoon-0.2.2/docs/cli/installation.md +33 -0
- ctoon-0.2.2/docs/cli/options.md +22 -0
- ctoon-0.2.2/docs/convert_page.py +291 -0
- ctoon-0.2.2/docs/ctoon-docs.css +418 -0
- ctoon-0.2.2/docs/index.html.in +637 -0
- ctoon-0.2.2/docs/initial_comment.in +15 -0
- ctoon-0.2.2/docs/page.html.in +416 -0
- ctoon-0.2.2/docs/python/CreateDocs.cmake +59 -0
- ctoon-0.2.2/docs/python/source/conf.py +99 -0
- ctoon-0.2.2/docs/python/source/index.rst +71 -0
- ctoon-0.2.2/docs/section.html.in +464 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/include/ctoon.h +3 -3
- {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/__init__.py +11 -10
- ctoon-0.2.2/tests/coverage_dashboard.html.in +609 -0
- ctoon-0.2.2/tests/genhtml.css +241 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/version.py +3 -2
- ctoon-0.2.0/.github/workflows/wheels.yml +0 -121
- ctoon-0.2.0/TECHNICAL.md +0 -327
- ctoon-0.2.0/docs/index.html.in +0 -369
- ctoon-0.2.0/docs/python/CreateDocs.cmake +0 -29
- ctoon-0.2.0/docs/python/source/conf.py +0 -53
- ctoon-0.2.0/docs/python/source/index.rst +0 -63
- ctoon-0.2.0/tests/coverage_dashboard.html.in +0 -432
- ctoon-0.2.0/tests/genhtml.css +0 -314
- {ctoon-0.2.0 → ctoon-0.2.2}/.gitignore +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/CMakeLists.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/README.md +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/cmake/CMakeGraphVizOptions.cmake +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/cmake/DynamicVersion.cmake +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/cmake/FixLCovPaths.cmake +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/cmake/GenerateIframe.cmake +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/cmake/GoToLcov.cmake +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/cmake/Optimize.cmake +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/cmake/PyProject.cmake +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/cmake/Startup.cmake +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/ctoon.go +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/cpp/CreateDocs.cmake +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/cpp/Doxyfile.in +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/cpp/footer.html.in +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-ctoon.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-sq-ctoon.svg +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-sq.svg +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-sq.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon-theme.svg +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon.png +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/ctoon.svg +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/docs/images/og.png +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/go.mod +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/pyproject.toml +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/requirements-dev.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/cpp/ctoon.hpp +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/go/binding.go +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/CMakeLists.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/binding.cpp +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/__main__.py +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/manager/__init__.py +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/manager/__main__.py +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/bindings/python/ctoon/native_cli.py +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/cli/CLI11.hpp +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/cli/cli.cpp +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/src/ctoon.c +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/CMakeLists.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/c/CMakeLists.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/c/test_ctoon.c +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/cpp/CMakeLists.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/cpp/test_ctoon.cpp +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample1_user.json +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample1_user.toon +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample2_users.json +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample2_users.toon +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample3_nested.json +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample3_nested.toon +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample4_users.json +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/sample4_users.toon +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/twitter.json +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/data/twitter.toon +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/go/CMakeLists.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/go/ctoon_test.go +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/python/CMakeLists.txt +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/python/test_json.py +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/python/test_toon.py +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/utest/utest.h +0 -0
- {ctoon-0.2.0 → ctoon-0.2.2}/tests/utest/utest_main.cxx +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
name: cmake stuff
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
workflow_call:
|
|
6
6
|
pull_request:
|
|
7
7
|
branches: [ master ]
|
|
8
|
-
workflow_dispatch:
|
|
9
8
|
|
|
10
9
|
jobs:
|
|
11
10
|
build-and-test:
|
|
@@ -17,12 +16,14 @@ jobs:
|
|
|
17
16
|
|
|
18
17
|
steps:
|
|
19
18
|
- name: Checkout repository
|
|
20
|
-
uses: actions/checkout@
|
|
19
|
+
uses: actions/checkout@v6
|
|
21
20
|
|
|
22
21
|
- name: Set up Python
|
|
23
|
-
uses: actions/setup-python@
|
|
22
|
+
uses: actions/setup-python@v6
|
|
24
23
|
with:
|
|
25
24
|
python-version: "3.11"
|
|
25
|
+
cache: "pip"
|
|
26
|
+
|
|
26
27
|
|
|
27
28
|
- name: Install python deps
|
|
28
29
|
run: pip install -r requirements-dev.txt
|
|
@@ -53,7 +54,7 @@ jobs:
|
|
|
53
54
|
|
|
54
55
|
steps:
|
|
55
56
|
- name: Checkout repository
|
|
56
|
-
uses: actions/checkout@
|
|
57
|
+
uses: actions/checkout@v6
|
|
57
58
|
|
|
58
59
|
- name: Setup cmake
|
|
59
60
|
uses: jwlawson/actions-setup-cmake@v2
|
|
@@ -65,23 +66,36 @@ jobs:
|
|
|
65
66
|
sudo apt-get update
|
|
66
67
|
sudo apt-get install -y doxygen graphviz
|
|
67
68
|
|
|
69
|
+
|
|
70
|
+
- name: Set up Python
|
|
71
|
+
uses: actions/setup-python@v6
|
|
72
|
+
with:
|
|
73
|
+
python-version: "3.11"
|
|
74
|
+
cache: "pip"
|
|
75
|
+
|
|
76
|
+
- name: Install python deps
|
|
77
|
+
run: pip install -r requirements-dev.txt
|
|
78
|
+
|
|
68
79
|
- name: Configure CMake
|
|
69
80
|
run: |
|
|
70
81
|
cmake -B build \
|
|
71
82
|
-DCMAKE_BUILD_TYPE=Release \
|
|
72
83
|
-DCTOON_BUILD_EXAMPLES=OFF \
|
|
73
|
-
-DCTOON_BUILD_PYTHON=
|
|
84
|
+
-DCTOON_BUILD_PYTHON=ON \
|
|
74
85
|
-DCTOON_BUILD_TESTS=OFF \
|
|
75
86
|
-DCTOON_BUILD_DOCS=ON
|
|
76
87
|
|
|
77
88
|
- name: Build documentation
|
|
78
89
|
run: cmake --build build --target ctoon_docs
|
|
79
90
|
|
|
91
|
+
- name: List docs directory
|
|
92
|
+
run: tree --du -shaC build/docs/out
|
|
93
|
+
|
|
80
94
|
- name: Upload documentation artifacts
|
|
81
|
-
uses: actions/upload-artifact@
|
|
95
|
+
uses: actions/upload-artifact@v7
|
|
82
96
|
with:
|
|
83
|
-
name: documentation
|
|
84
|
-
path: build/docs/
|
|
97
|
+
name: cmake-documentation
|
|
98
|
+
path: build/docs/out
|
|
85
99
|
retention-days: 5
|
|
86
100
|
|
|
87
101
|
build-coverage:
|
|
@@ -91,7 +105,7 @@ jobs:
|
|
|
91
105
|
|
|
92
106
|
steps:
|
|
93
107
|
- name: Checkout repository
|
|
94
|
-
uses: actions/checkout@
|
|
108
|
+
uses: actions/checkout@v6
|
|
95
109
|
|
|
96
110
|
- name: Setup cmake
|
|
97
111
|
uses: jwlawson/actions-setup-cmake@v2
|
|
@@ -99,9 +113,10 @@ jobs:
|
|
|
99
113
|
cmake-version: '3.28.x'
|
|
100
114
|
|
|
101
115
|
- name: Set up Python
|
|
102
|
-
uses: actions/setup-python@
|
|
116
|
+
uses: actions/setup-python@v6
|
|
103
117
|
with:
|
|
104
118
|
python-version: "3.11"
|
|
119
|
+
cache: "pip"
|
|
105
120
|
|
|
106
121
|
- name: Install python dependencies
|
|
107
122
|
run: pip install -r requirements-dev.txt
|
|
@@ -132,44 +147,8 @@ jobs:
|
|
|
132
147
|
verbose: true
|
|
133
148
|
|
|
134
149
|
- name: Upload coverage artifacts
|
|
135
|
-
uses: actions/upload-artifact@
|
|
150
|
+
uses: actions/upload-artifact@v7
|
|
136
151
|
with:
|
|
137
|
-
name: coverage-report
|
|
152
|
+
name: cmake-coverage-report
|
|
138
153
|
path: build/coverage/
|
|
139
154
|
retention-days: 5
|
|
140
|
-
|
|
141
|
-
deploy-pages:
|
|
142
|
-
needs: [build-docs, build-coverage]
|
|
143
|
-
runs-on: ubuntu-latest
|
|
144
|
-
permissions:
|
|
145
|
-
contents: write
|
|
146
|
-
pages: write
|
|
147
|
-
id-token: write
|
|
148
|
-
|
|
149
|
-
steps:
|
|
150
|
-
- name: Checkout repository
|
|
151
|
-
uses: actions/checkout@v4
|
|
152
|
-
|
|
153
|
-
- name: Download documentation artifact
|
|
154
|
-
uses: actions/download-artifact@v4
|
|
155
|
-
with:
|
|
156
|
-
name: documentation
|
|
157
|
-
path: ./pages
|
|
158
|
-
|
|
159
|
-
- name: Download coverage artifact
|
|
160
|
-
uses: actions/download-artifact@v4
|
|
161
|
-
with:
|
|
162
|
-
name: coverage-report
|
|
163
|
-
path: ./pages/coverage
|
|
164
|
-
|
|
165
|
-
- name: Setup Pages
|
|
166
|
-
uses: actions/configure-pages@v4
|
|
167
|
-
|
|
168
|
-
- name: Upload artifact
|
|
169
|
-
uses: actions/upload-pages-artifact@v3
|
|
170
|
-
with:
|
|
171
|
-
path: ./pages
|
|
172
|
-
|
|
173
|
-
- name: Deploy to GitHub Pages
|
|
174
|
-
id: deployment
|
|
175
|
-
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
name: Orchestration & Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ master ]
|
|
7
|
+
tags: [ "v*" ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
init:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
outputs:
|
|
13
|
+
release_name: ${{ steps.init.outputs.release_name }}
|
|
14
|
+
is_tag: ${{ steps.init.outputs.is_tag }}
|
|
15
|
+
version_string: ${{ steps.init.outputs.version_string }}
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout repository
|
|
18
|
+
uses: actions/checkout@v6
|
|
19
|
+
|
|
20
|
+
- name: Initalize
|
|
21
|
+
id: init
|
|
22
|
+
env:
|
|
23
|
+
GH_TOKEN: ${{ github.token }}
|
|
24
|
+
run: |
|
|
25
|
+
export version_string="$(python version.py | tr -d '\n')"
|
|
26
|
+
echo "version_string=${version_string}" | tee -a "$GITHUB_OUTPUT"
|
|
27
|
+
if [[ "${{ github.ref }}" =~ ^refs/tags/v.*$ ]]; then
|
|
28
|
+
TAG_NAME="${GITHUB_REF#refs/tags/}"
|
|
29
|
+
[[ "${version_string}" == "${GITHUB_REF#refs/tags/v}" ]] || (echo "❌ Version mismatch!" && exit 1)
|
|
30
|
+
export release_name="$TAG_NAME"
|
|
31
|
+
export is_tag="true"
|
|
32
|
+
else
|
|
33
|
+
gh api repos/${{ github.repository }}/releases/tags/__beta__ --jq '.assets[].id' 2>/dev/null | xargs -r -I {} gh api repos/${{ github.repository }}/releases/assets/{} -X DELETE 2>/dev/null || true
|
|
34
|
+
export release_name="__beta__"
|
|
35
|
+
export is_tag="false"
|
|
36
|
+
fi
|
|
37
|
+
echo "release_name=${release_name}" | tee -a "$GITHUB_OUTPUT"
|
|
38
|
+
echo "is_tag=${is_tag}" | tee -a "$GITHUB_OUTPUT"
|
|
39
|
+
sed -i -e "s/RELEASE_NAME/${release_name}/g" -e "s/VERSION_STRING/${version_string}/g" .github/workflows/release_template.md
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
- name: Initialize release body
|
|
43
|
+
uses: softprops/action-gh-release@v3
|
|
44
|
+
with:
|
|
45
|
+
tag_name: ${{ steps.init.outputs.release_name }}
|
|
46
|
+
name: ${{ steps.init.outputs.release_name }}
|
|
47
|
+
draft: false
|
|
48
|
+
prerelease: ${{ steps.init.outputs.is_tag == 'false' }}
|
|
49
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
50
|
+
body_path: .github/workflows/release_template.md
|
|
51
|
+
|
|
52
|
+
cmake:
|
|
53
|
+
uses: ./.github/workflows/cmake.yml
|
|
54
|
+
needs: [init]
|
|
55
|
+
|
|
56
|
+
wheel:
|
|
57
|
+
uses: ./.github/workflows/wheels.yml
|
|
58
|
+
needs: [init]
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
release-wheels:
|
|
62
|
+
needs: [wheel,init]
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
steps:
|
|
65
|
+
- name: Download all artifacts
|
|
66
|
+
uses: actions/download-artifact@v8
|
|
67
|
+
with:
|
|
68
|
+
pattern: wheelhouse-*
|
|
69
|
+
path: dist
|
|
70
|
+
merge-multiple: true
|
|
71
|
+
|
|
72
|
+
- name: List dist directory
|
|
73
|
+
run: tree --du -shaC .
|
|
74
|
+
|
|
75
|
+
- name: create release body
|
|
76
|
+
uses: softprops/action-gh-release@v3
|
|
77
|
+
with:
|
|
78
|
+
tag_name: ${{ needs.init.outputs.release_name }}
|
|
79
|
+
name: ${{ needs.init.outputs.release_name }}
|
|
80
|
+
draft: false
|
|
81
|
+
prerelease: ${{ needs.init.outputs.is_tag == 'false' }}
|
|
82
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
83
|
+
files: dist/*
|
|
84
|
+
|
|
85
|
+
- name: Publishing to PyPi
|
|
86
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
87
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
88
|
+
with:
|
|
89
|
+
password: ${{ secrets.PYPI_PASSWORD }}
|
|
90
|
+
user: ${{ secrets.PYPI_USERNAME }}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
deploy-pages:
|
|
94
|
+
needs: [cmake]
|
|
95
|
+
runs-on: ubuntu-latest
|
|
96
|
+
permissions:
|
|
97
|
+
contents: write
|
|
98
|
+
pages: write
|
|
99
|
+
id-token: write
|
|
100
|
+
|
|
101
|
+
steps:
|
|
102
|
+
- name: Download documentation artifact
|
|
103
|
+
uses: actions/download-artifact@v8
|
|
104
|
+
with:
|
|
105
|
+
name: cmake-documentation
|
|
106
|
+
path: ./pages
|
|
107
|
+
|
|
108
|
+
- name: Download coverage artifact
|
|
109
|
+
uses: actions/download-artifact@v8
|
|
110
|
+
with:
|
|
111
|
+
name: cmake-coverage-report
|
|
112
|
+
path: ./pages/coverage
|
|
113
|
+
|
|
114
|
+
- name: List pages directory
|
|
115
|
+
run: tree --du -shaC pages
|
|
116
|
+
|
|
117
|
+
- name: Setup Pages
|
|
118
|
+
uses: actions/configure-pages@v4
|
|
119
|
+
|
|
120
|
+
- name: Upload artifact
|
|
121
|
+
uses: actions/upload-pages-artifact@v3
|
|
122
|
+
with:
|
|
123
|
+
path: ./pages
|
|
124
|
+
|
|
125
|
+
- name: Deploy to GitHub Pages
|
|
126
|
+
id: deployment
|
|
127
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import re
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def parse_vars(var_list):
|
|
7
|
+
"""Parse variables passed as NAME=VALUE into a dictionary."""
|
|
8
|
+
out = {}
|
|
9
|
+
for item in var_list:
|
|
10
|
+
if "=" not in item:
|
|
11
|
+
raise ValueError(f"Invalid variable: {item}")
|
|
12
|
+
k, v = item.split("=", 1)
|
|
13
|
+
out[k] = v
|
|
14
|
+
return out
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def replace_vars(text, vars_dict):
|
|
18
|
+
"""Replace all variable placeholders in the text."""
|
|
19
|
+
for k, v in vars_dict.items():
|
|
20
|
+
text = text.replace(k, v)
|
|
21
|
+
return text
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def main():
|
|
25
|
+
parser = argparse.ArgumentParser(description="Process release template.")
|
|
26
|
+
parser.add_argument("-i", "--input", required=True, help="Input file path")
|
|
27
|
+
parser.add_argument("-o", "--output", help="Output file path (default: overwrite input)")
|
|
28
|
+
parser.add_argument("-s", "--section", required=True, help="Section name (e.g., PYTHON_SECTION)")
|
|
29
|
+
parser.add_argument("-v", "--variable", action="append", required=True, help="Variables in NAME=VALUE format")
|
|
30
|
+
|
|
31
|
+
args = parser.parse_args()
|
|
32
|
+
|
|
33
|
+
input_path = Path(args.input)
|
|
34
|
+
output_path = Path(args.output) if args.output else input_path
|
|
35
|
+
|
|
36
|
+
content = input_path.read_text(encoding="utf-8")
|
|
37
|
+
variables = parse_vars(args.variable)
|
|
38
|
+
|
|
39
|
+
# 1. Locate the full section block:
|
|
40
|
+
# <!--SECTION_BEGIN ... SECTION_END-->
|
|
41
|
+
section_re = re.compile(
|
|
42
|
+
rf"<!--{args.section}_BEGIN(.*?){args.section}_END-->",
|
|
43
|
+
re.DOTALL,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
match = section_re.search(content)
|
|
47
|
+
if not match:
|
|
48
|
+
raise ValueError(f"Section {args.section} not found")
|
|
49
|
+
|
|
50
|
+
full_section = match.group(0)
|
|
51
|
+
section_body = match.group(1)
|
|
52
|
+
|
|
53
|
+
# 2. Remove everything between:
|
|
54
|
+
# PLACEHOLDER--> ... <!--PLACEHOLDER
|
|
55
|
+
# This deletes the placeholder/warning content entirely
|
|
56
|
+
cleaned_body = re.sub(
|
|
57
|
+
r"PLACEHOLDER-->.*?<!--PLACEHOLDER",
|
|
58
|
+
"",
|
|
59
|
+
section_body,
|
|
60
|
+
flags=re.DOTALL,
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
# Trim extra whitespace
|
|
64
|
+
cleaned_body = cleaned_body.strip()
|
|
65
|
+
|
|
66
|
+
# 3. Replace variables (e.g., RELEASE_NAME, VERSION_STRING)
|
|
67
|
+
cleaned_body = replace_vars(cleaned_body, variables)
|
|
68
|
+
|
|
69
|
+
# 4. Replace the entire section (including comments) with final content
|
|
70
|
+
new_content = content.replace(full_section, cleaned_body)
|
|
71
|
+
|
|
72
|
+
# 5. Write output
|
|
73
|
+
output_path.write_text(new_content, encoding="utf-8")
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
if __name__ == "__main__":
|
|
77
|
+
main()
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
|
|
2
|
+
| OS | Available Wheels & Source |
|
|
3
|
+
| :--- | :--- |
|
|
4
|
+
| **Windows** | [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-win_amd64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-win_amd64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-win_amd64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-win_amd64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-win_amd64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-win_amd64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-win_amd64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-win32.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-win32.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-win32.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-win32.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-win32.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-win32.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-win32.whl) |
|
|
5
|
+
| **Linux (glibc)** | [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl) |
|
|
6
|
+
| **Linux (musl)** | [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-musllinux_1_2_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-musllinux_1_2_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-musllinux_1_2_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-musllinux_1_2_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-musllinux_1_2_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-musllinux_1_2_x86_64.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-musllinux_1_2_x86_64.whl) |
|
|
7
|
+
| **macOS** | [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314-macosx_10_15_universal2.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp314-cp314t-macosx_10_15_universal2.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp313-cp313-macosx_10_13_universal2.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp312-cp312-macosx_10_13_universal2.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp311-cp311-macosx_10_13_universal2.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp310-cp310-macosx_10_13_universal2.whl) [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING-cp39-cp39-macosx_10_13_universal2.whl) |
|
|
8
|
+
| **Source** | [](https://github.com/MohammadRaziei/ctoon/releases/download/RELEASE_NAME/ctoon-VERSION_STRING.tar.gz) [](https://github.com/MohammadRaziei/ctoon/archive/refs/tags/RELEASE_NAME.zip) [](https://github.com/MohammadRaziei/ctoon/archive/refs/tags/RELEASE_NAME.tar.gz) |
|
|
9
|
+
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: python build wheels
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
workflow_call:
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ master ]
|
|
8
|
+
|
|
9
|
+
env:
|
|
10
|
+
FORCE_COLOR: 3
|
|
11
|
+
|
|
12
|
+
concurrency:
|
|
13
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
build_sdist:
|
|
18
|
+
name: Build SDist
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v6
|
|
22
|
+
with:
|
|
23
|
+
submodules: false
|
|
24
|
+
|
|
25
|
+
- uses: actions/setup-python@v6
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.11"
|
|
28
|
+
cache: "pip"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# - name: Ruff Check
|
|
32
|
+
# run: pipx run ruff check .
|
|
33
|
+
|
|
34
|
+
- name: Build SDist
|
|
35
|
+
run: pipx run build --sdist
|
|
36
|
+
|
|
37
|
+
- name: Check metadata
|
|
38
|
+
run: pipx run twine check dist/*
|
|
39
|
+
|
|
40
|
+
- uses: actions/upload-artifact@v7
|
|
41
|
+
with:
|
|
42
|
+
name: wheelhouse-sdist
|
|
43
|
+
path: dist/*.tar.gz
|
|
44
|
+
overwrite: true
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
build_wheels:
|
|
48
|
+
name: Wheels on ${{ matrix.os }}
|
|
49
|
+
runs-on: ${{ matrix.os }}
|
|
50
|
+
strategy:
|
|
51
|
+
fail-fast: true
|
|
52
|
+
matrix:
|
|
53
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
54
|
+
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@v6
|
|
57
|
+
with:
|
|
58
|
+
submodules: true
|
|
59
|
+
|
|
60
|
+
- name: Build wheels
|
|
61
|
+
uses: pypa/cibuildwheel@v3.4.1
|
|
62
|
+
env:
|
|
63
|
+
MACOSX_DEPLOYMENT_TARGET: "10.13"
|
|
64
|
+
CIBW_ARCHS_MACOS: universal2
|
|
65
|
+
# CIBW_ARCHS_WINDOWS: auto ARM64
|
|
66
|
+
# Disable building PyPy wheels on all platforms
|
|
67
|
+
CIBW_SKIP: pp*
|
|
68
|
+
# CIBW_PRERELEASE_PYTHONS: true
|
|
69
|
+
|
|
70
|
+
- uses: actions/upload-artifact@v7
|
|
71
|
+
with:
|
|
72
|
+
name: wheelhouse-${{ matrix.os }}
|
|
73
|
+
path: wheelhouse/*.whl
|
|
74
|
+
overwrite: false
|
|
75
|
+
|