proj-flow 0.14.1__py3-none-any.whl → 0.15.1__py3-none-any.whl

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 (29) hide show
  1. proj_flow/__init__.py +1 -1
  2. proj_flow/api/arg.py +23 -3
  3. proj_flow/base/__init__.py +27 -0
  4. proj_flow/cli/argument.py +21 -4
  5. proj_flow/ext/github/cli.py +4 -2
  6. proj_flow/ext/github/switches.py +15 -2
  7. proj_flow/flow/layer.py +6 -5
  8. proj_flow/log/commit.py +1 -0
  9. proj_flow/minimal/init.py +48 -6
  10. proj_flow/project/api.py +2 -2
  11. proj_flow/project/cplusplus/cmake_context.py +3 -3
  12. proj_flow/project/cplusplus/conan_context.py +1 -1
  13. proj_flow/project/cplusplus/project.py +2 -1
  14. proj_flow/project/interact.py +90 -33
  15. proj_flow/template/layers/cmake/CMakeLists.txt.mustache +11 -11
  16. proj_flow/template/layers/cmake/src/main.cc.mustache +6 -6
  17. proj_flow/template/layers/cmake/tests/test.cc.mustache +4 -4
  18. proj_flow/template/layers/cmake.json +1 -1
  19. proj_flow/template/layers/conan.json +1 -1
  20. proj_flow/template/layers/github_actions/.github/workflows/build.yml.auto-release +285 -0
  21. proj_flow/template/layers/github_actions/.github/workflows/build.yml.basic +248 -0
  22. proj_flow/template/layers/github_actions.json +11 -1
  23. proj_flow/template/layers/github_social.json +1 -1
  24. {proj_flow-0.14.1.dist-info → proj_flow-0.15.1.dist-info}/METADATA +2 -2
  25. {proj_flow-0.14.1.dist-info → proj_flow-0.15.1.dist-info}/RECORD +28 -27
  26. proj_flow/template/layers/github_actions/.github/workflows/build.yml +0 -241
  27. {proj_flow-0.14.1.dist-info → proj_flow-0.15.1.dist-info}/WHEEL +0 -0
  28. {proj_flow-0.14.1.dist-info → proj_flow-0.15.1.dist-info}/entry_points.txt +0 -0
  29. {proj_flow-0.14.1.dist-info → proj_flow-0.15.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,15 +1,15 @@
1
1
  // Copyright (c) {{COPY.YEAR}} {{COPY.HOLDER}}
2
2
  // This code is licensed under {{COPY.LICENSE}} license (see LICENSE for details)
3
3
 
4
- {{#with_conan}}
4
+ {{#with.conan}}
5
5
  #include <fmt/format.h>
6
6
  #include <gtest/gtest.h>
7
- {{/with_conan}}
7
+ {{/with.conan}}
8
8
 
9
9
  namespace {{NAMESPACE}}::testing {
10
10
 
11
- {{#with_conan}}
11
+ {{#with.conan}}
12
12
  TEST({{NAMESPACE}}, test) { ASSERT_EQ(1, 1); }
13
- {{/with_conan}}
13
+ {{/with.conan}}
14
14
 
15
15
  } // namespace {{NAMESPACE}}::testing
@@ -1,5 +1,5 @@
1
1
  {
2
- "when": "with_cmake",
2
+ "when": "with.cmake",
3
3
  "filelist": {
4
4
  "src/main.cc.mustache": {
5
5
  "path": "{{SRCDIR}}/main{{EXT.cxx}}",
@@ -1,3 +1,3 @@
1
1
  {
2
- "when": "with_conan"
2
+ "when": "with.conan"
3
3
  }
@@ -0,0 +1,285 @@
1
+ name: Build
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ env:
10
+ RELEASE: ${{ github.event_name == 'push' && github.ref_type == 'branch' && github.ref_name == 'main' }}
11
+
12
+ jobs:
13
+ M:
14
+ name: Prepare builds
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: write
18
+ outputs:
19
+ release: ${{fromJson(env.RELEASE) && fromJson(steps.finalize.outputs.released)}}
20
+ reference: ${{toJson(steps.finalize.outputs.tag)}}
21
+ matrix: ${{steps.flow.outputs.matrix}}
22
+
23
+ steps:
24
+ - name: Checkout
25
+ uses: actions/checkout@v4
26
+ with:
27
+ fetch-depth: 0
28
+ fetch-tags: true
29
+
30
+ - name: Bootstrap proj-flow
31
+ if: ${{ fromJson(env.RELEASE) }}
32
+ run: |
33
+ python ./.flow/flow.py bootstrap
34
+
35
+ - name: Draft a release
36
+ id: release
37
+ if: ${{ fromJson(env.RELEASE) }}
38
+ run: |
39
+ git config --global user.name "GitHub Actions (${{ github.actor }})"
40
+ git config --global user.email "${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com"
41
+ python ./.flow/flow.py github release
42
+ env:
43
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44
+
45
+ - name: Follow up
46
+ id: finalize
47
+ env:
48
+ RELEASED: ${{steps.release.outputs.released}}
49
+ TAG: ${{steps.release.outputs.tag}}
50
+ run: |
51
+ echo "released=${RELEASED:=false}" >> $GITHUB_OUTPUT
52
+ echo "tag=${TAG}" >> $GITHUB_OUTPUT
53
+
54
+ - name: Find builds
55
+ id: flow
56
+ run: python ./.flow/flow.py github matrix
57
+
58
+ build:
59
+ needs: M
60
+ strategy:
61
+ matrix: ${{ fromJson(needs.M.outputs.matrix) }}
62
+
63
+ env:
64
+ BUILD_TYPE: ${{ matrix.build_type }}
65
+ CONAN_REVISIONS_ENABLED: 1
66
+ FLOW_COMMAND: python ./.flow/flow.py run -D os=${{ matrix.os }} build_type=${{ matrix.build_type }} compiler=${{ matrix.compiler }} sanitizer=${{ matrix.sanitizer }}
67
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
68
+ ARTIFACT_SUFFIX: ${{ matrix.github_os }}-${{ matrix.build_type }}-${{ matrix.compiler }}${{ matrix.sanitizer && '-sanitize' || '' }}
69
+ CONAN_CACHE: ${{ matrix.github_os }}-${{ matrix.build_type }}-${{ matrix.compiler }}
70
+ RELEASE: ${{needs.M.outputs.release}}
71
+ REFERENCE: ${{needs.M.outputs.reference}}
72
+
73
+ runs-on: ${{ matrix.github_os }}
74
+ name: ${{ matrix.build_name }}
75
+ outputs:
76
+ release: ${{fromJson(env.RELEASE)}}
77
+ reference: ${{env.REFERENCE}}
78
+
79
+ steps:
80
+ - name: Checkout
81
+ uses: actions/checkout@v4
82
+ with:
83
+ ref: ${{fromJson(env.REFERENCE)}}
84
+ submodules: true
85
+
86
+ # ######## ## ## ## ## #### ######## ####### ## ## ## ## ######## ## ## ########
87
+ # ## ### ## ## ## ## ## ## ## ## ### ## ### ### ## ### ## ##
88
+ # ## #### ## ## ## ## ## ## ## ## #### ## #### #### ## #### ## ##
89
+ # ###### ## ## ## ## ## ## ######## ## ## ## ## ## ## ### ## ###### ## ## ## ##
90
+ # ## ## #### ## ## ## ## ## ## ## ## #### ## ## ## ## #### ##
91
+ # ## ## ### ## ## ## ## ## ## ## ## ### ## ## ## ## ### ##
92
+ # ######## ## ## ### #### ## ## ####### ## ## ## ## ######## ## ## ##
93
+ - name: Python 3.10
94
+ uses: actions/setup-python@v5
95
+ with:
96
+ python-version: "3.10"
97
+
98
+ - name: Bootstrap Flow
99
+ run: |
100
+ python ./.flow/flow.py bootstrap
101
+
102
+ - name: Add msbuild to PATH
103
+ if: ${{ matrix.windows }}
104
+ uses: microsoft/setup-msbuild@v1.1
105
+
106
+ - name: Install WiX 4
107
+ if: ${{ matrix.windows }}
108
+ shell: cmd
109
+ run: |
110
+ dotnet tool install --global wix --version 4.0.4
111
+ wix extension add -g WixToolset.UI.wixext/4.0.4
112
+
113
+ - name: Install Ninja
114
+ if: ${{ matrix.ubuntu }}
115
+ run: |
116
+ sudo apt-get install ninja-build -y
117
+
118
+ - name: Install GCC 13
119
+ if: ${{ matrix.ubuntu && matrix.needs_gcc_ppa }}
120
+ run: |
121
+ sudo apt install software-properties-common -y
122
+ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
123
+ sudo apt install gcc-13 g++-13 -y
124
+
125
+ - name: Set up GCC 13
126
+ if: ${{ matrix.ubuntu }}
127
+ run: |
128
+ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 130
129
+ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130
130
+ sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-13 130
131
+
132
+ sudo update-alternatives --set g++ /usr/bin/g++-13
133
+ sudo update-alternatives --set gcc /usr/bin/gcc-13
134
+ sudo update-alternatives --set gcov /usr/bin/gcov-13
135
+
136
+ - name: Set up GCC 13 as c++/cc
137
+ if: ${{ matrix.ubuntu && matrix.gcc }}
138
+ run: |
139
+ sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-13 130
140
+ sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-13 130
141
+
142
+ sudo update-alternatives --set c++ /usr/bin/g++-13
143
+ sudo update-alternatives --set cc /usr/bin/gcc-13
144
+
145
+ - name: Install Clang 18
146
+ if: ${{ matrix.ubuntu && matrix.clang }}
147
+ run: |
148
+ wget https://apt.llvm.org/llvm.sh
149
+ chmod +x llvm.sh
150
+ sudo ./llvm.sh 18
151
+
152
+ sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 180
153
+ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 180
154
+
155
+ sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-18 180
156
+ sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang-18 180
157
+
158
+ sudo update-alternatives --set clang++ /usr/bin/clang++-18
159
+ sudo update-alternatives --set clang /usr/bin/clang-18
160
+
161
+ sudo update-alternatives --set c++ /usr/bin/clang++-18
162
+ sudo update-alternatives --set cc /usr/bin/clang-18
163
+
164
+ - name: Check C++ binary
165
+ if: ${{ matrix.ubuntu }}
166
+ run: |
167
+ realpath `which c++`
168
+ c++ --version
169
+ sudo locale-gen pl_PL.UTF-8 en_US.UTF-8 en_GB.UTF-8
170
+
171
+ - name: Install Conan
172
+ id: conan
173
+ uses: turtlebrowser/get-conan@main
174
+
175
+ - name: Conan cache
176
+ uses: actions/cache@v4
177
+ id: cache
178
+ with:
179
+ path: ${{ matrix.home }}/.conan/data
180
+ key: ${{ env.CONAN_CACHE }}-${{ hashFiles('conanfile.txt') }}
181
+ restore-keys: |
182
+ ${{ env.CONAN_CACHE }}-
183
+
184
+ # ######## ######## ####### ## ######## ###### ########
185
+ # ## ## ## ## ## ## ## ## ## ## ##
186
+ # ## ## ## ## ## ## ## ## ## ##
187
+ # ######## ######## ## ## ## ###### ## ##
188
+ # ## ## ## ## ## ## ## ## ## ##
189
+ # ## ## ## ## ## ## ## ## ## ## ##
190
+ # ## ## ## ####### ###### ######## ###### ##
191
+
192
+ - name: Configure
193
+ run: ${{ env.FLOW_COMMAND }} -s Conan,CMake
194
+
195
+ - name: Build
196
+ run: ${{ env.FLOW_COMMAND }} -s Build
197
+
198
+ - name: Test
199
+ run: ${{ env.FLOW_COMMAND }} -s Test,StoreTests
200
+
201
+ - name: Pack
202
+ id: artifacts
203
+ if: ${{ fromJson(env.RELEASE) }}
204
+ run: ${{ env.FLOW_COMMAND }} -s Sign,Pack,SignPackages,StorePackages
205
+ env:
206
+ SIGN_TOKEN: ${{ secrets.SIGN_TOKEN }}
207
+
208
+ # ## ## ######## ## ####### ### ########
209
+ # ## ## ## ## ## ## ## ## ## ## ##
210
+ # ## ## ## ## ## ## ## ## ## ## ##
211
+ # ## ## ######## ## ## ## ## ## ## ##
212
+ # ## ## ## ## ## ## ######### ## ##
213
+ # ## ## ## ## ## ## ## ## ## ##
214
+ # ####### ## ######## ####### ## ## ########
215
+
216
+ - name: Upload packages
217
+ uses: actions/upload-artifact@v4
218
+ if: ${{ steps.artifacts.outputs.CPACK_GENERATORS != '' }}
219
+ with:
220
+ name: _packages-${{ env.ARTIFACT_SUFFIX }}
221
+ path: ${{github.workspace}}/build/artifacts/packages/
222
+
223
+ - name: Upload test results
224
+ uses: actions/upload-artifact@v4
225
+ if: always()
226
+ with:
227
+ name: _tests-${{ env.ARTIFACT_SUFFIX }}
228
+ path: ${{github.workspace}}/build/artifacts/test-results/
229
+
230
+ merge:
231
+ name: Merge artifacts
232
+ runs-on: ubuntu-latest
233
+ needs: build
234
+ env:
235
+ RELEASE: ${{needs.build.outputs.release}}
236
+ REFERENCE: ${{needs.build.outputs.reference}}
237
+ outputs:
238
+ release: ${{fromJson(env.RELEASE)}}
239
+ reference: ${{env.REFERENCE}}
240
+
241
+ steps:
242
+ - name: Merge packages
243
+ uses: actions/upload-artifact/merge@v4
244
+ if: ${{ fromJson(env.RELEASE) }}
245
+ with:
246
+ name: Packages
247
+ pattern: _packages-*
248
+ delete-merged: true
249
+ - name: Merge test results
250
+ uses: actions/upload-artifact/merge@v4
251
+ if: always()
252
+ with:
253
+ name: Test Results
254
+ pattern: _tests-*
255
+ delete-merged: true
256
+
257
+ publish:
258
+ name: Upload packages
259
+ if: ${{ fromJson(needs.merge.outputs.release) }}
260
+ needs: merge
261
+ runs-on: ubuntu-latest
262
+ permissions:
263
+ contents: write
264
+ packages: write
265
+
266
+ env:
267
+ RELEASE: ${{needs.merge.outputs.release}}
268
+ REFERENCE: ${{needs.merge.outputs.reference}}
269
+
270
+ steps:
271
+ - name: Checkout
272
+ uses: actions/checkout@v4
273
+ with:
274
+ ref: ${{fromJson(env.REFERENCE)}}
275
+
276
+ - name: Get packages
277
+ uses: actions/download-artifact@v4
278
+ with:
279
+ name: Packages
280
+ path: ${{github.workspace}}/build/download/packages
281
+
282
+ - name: Publish the release
283
+ run: python ./.flow/flow.py github publish --upload "${{github.workspace}}/build/download/packages"
284
+ env:
285
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,248 @@
1
+ name: Build
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ tags: ["v*"]
7
+ pull_request:
8
+ workflow_dispatch:
9
+
10
+ env:
11
+ RELEASE: ${{ github.event_name == 'push' && github.ref_type == 'tag' && startsWith(github.ref_name, 'v') }}
12
+
13
+ jobs:
14
+ M:
15
+ name: Prepare builds
16
+ runs-on: ubuntu-latest
17
+ outputs:
18
+ release: ${{fromJson(env.RELEASE)}}
19
+ matrix: ${{steps.flow.outputs.matrix}}
20
+
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v4
24
+
25
+ - name: Find builds
26
+ id: flow
27
+ run: python ./.flow/flow.py github matrix
28
+
29
+ build:
30
+ needs: M
31
+ strategy:
32
+ matrix: ${{ fromJson(needs.M.outputs.matrix) }}
33
+
34
+ env:
35
+ BUILD_TYPE: ${{ matrix.build_type }}
36
+ CONAN_REVISIONS_ENABLED: 1
37
+ FLOW_COMMAND: python ./.flow/flow.py run -D os=${{ matrix.os }} build_type=${{ matrix.build_type }} compiler=${{ matrix.compiler }} sanitizer=${{ matrix.sanitizer }}
38
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39
+ ARTIFACT_SUFFIX: ${{ matrix.github_os }}-${{ matrix.build_type }}-${{ matrix.compiler }}${{ matrix.sanitizer && '-sanitize' || '' }}
40
+ CONAN_CACHE: ${{ matrix.github_os }}-${{ matrix.build_type }}-${{ matrix.compiler }}
41
+ RELEASE: ${{needs.M.outputs.release}}
42
+
43
+ runs-on: ${{ matrix.github_os }}
44
+ name: ${{ matrix.build_name }}
45
+ outputs:
46
+ release: ${{fromJson(env.RELEASE)}}
47
+
48
+ steps:
49
+ - name: Checkout
50
+ uses: actions/checkout@v4
51
+ with:
52
+ submodules: true
53
+
54
+ # ######## ## ## ## ## #### ######## ####### ## ## ## ## ######## ## ## ########
55
+ # ## ### ## ## ## ## ## ## ## ## ### ## ### ### ## ### ## ##
56
+ # ## #### ## ## ## ## ## ## ## ## #### ## #### #### ## #### ## ##
57
+ # ###### ## ## ## ## ## ## ######## ## ## ## ## ## ## ### ## ###### ## ## ## ##
58
+ # ## ## #### ## ## ## ## ## ## ## ## #### ## ## ## ## #### ##
59
+ # ## ## ### ## ## ## ## ## ## ## ## ### ## ## ## ## ### ##
60
+ # ######## ## ## ### #### ## ## ####### ## ## ## ## ######## ## ## ##
61
+ - name: Python 3.10
62
+ uses: actions/setup-python@v5
63
+ with:
64
+ python-version: "3.10"
65
+
66
+ - name: Bootstrap Flow
67
+ run: |
68
+ python ./.flow/flow.py bootstrap
69
+
70
+ - name: Add msbuild to PATH
71
+ if: ${{ matrix.windows }}
72
+ uses: microsoft/setup-msbuild@v1.1
73
+
74
+ - name: Install WiX 4
75
+ if: ${{ matrix.windows }}
76
+ shell: cmd
77
+ run: |
78
+ dotnet tool install --global wix --version 4.0.4
79
+ wix extension add -g WixToolset.UI.wixext/4.0.4
80
+
81
+ - name: Install Ninja
82
+ if: ${{ matrix.ubuntu }}
83
+ run: |
84
+ sudo apt-get install ninja-build -y
85
+
86
+ - name: Install GCC 13
87
+ if: ${{ matrix.ubuntu && matrix.needs_gcc_ppa }}
88
+ run: |
89
+ sudo apt install software-properties-common -y
90
+ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
91
+ sudo apt install gcc-13 g++-13 -y
92
+
93
+ - name: Set up GCC 13
94
+ if: ${{ matrix.ubuntu }}
95
+ run: |
96
+ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 130
97
+ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130
98
+ sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-13 130
99
+
100
+ sudo update-alternatives --set g++ /usr/bin/g++-13
101
+ sudo update-alternatives --set gcc /usr/bin/gcc-13
102
+ sudo update-alternatives --set gcov /usr/bin/gcov-13
103
+
104
+ - name: Set up GCC 13 as c++/cc
105
+ if: ${{ matrix.ubuntu && matrix.gcc }}
106
+ run: |
107
+ sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-13 130
108
+ sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-13 130
109
+
110
+ sudo update-alternatives --set c++ /usr/bin/g++-13
111
+ sudo update-alternatives --set cc /usr/bin/gcc-13
112
+
113
+ - name: Install Clang 18
114
+ if: ${{ matrix.ubuntu && matrix.clang }}
115
+ run: |
116
+ wget https://apt.llvm.org/llvm.sh
117
+ chmod +x llvm.sh
118
+ sudo ./llvm.sh 18
119
+
120
+ sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 180
121
+ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 180
122
+
123
+ sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-18 180
124
+ sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang-18 180
125
+
126
+ sudo update-alternatives --set clang++ /usr/bin/clang++-18
127
+ sudo update-alternatives --set clang /usr/bin/clang-18
128
+
129
+ sudo update-alternatives --set c++ /usr/bin/clang++-18
130
+ sudo update-alternatives --set cc /usr/bin/clang-18
131
+
132
+ - name: Check C++ binary
133
+ if: ${{ matrix.ubuntu }}
134
+ run: |
135
+ realpath `which c++`
136
+ c++ --version
137
+ sudo locale-gen pl_PL.UTF-8 en_US.UTF-8 en_GB.UTF-8
138
+
139
+ - name: Install Conan
140
+ id: conan
141
+ uses: turtlebrowser/get-conan@main
142
+
143
+ - name: Conan cache
144
+ uses: actions/cache@v4
145
+ id: cache
146
+ with:
147
+ path: ${{ matrix.home }}/.conan/data
148
+ key: ${{ env.CONAN_CACHE }}-${{ hashFiles('conanfile.txt') }}
149
+ restore-keys: |
150
+ ${{ env.CONAN_CACHE }}-
151
+
152
+ # ######## ######## ####### ## ######## ###### ########
153
+ # ## ## ## ## ## ## ## ## ## ## ##
154
+ # ## ## ## ## ## ## ## ## ## ##
155
+ # ######## ######## ## ## ## ###### ## ##
156
+ # ## ## ## ## ## ## ## ## ## ##
157
+ # ## ## ## ## ## ## ## ## ## ## ##
158
+ # ## ## ## ####### ###### ######## ###### ##
159
+
160
+ - name: Configure
161
+ run: ${{ env.FLOW_COMMAND }} -s Conan,CMake
162
+
163
+ - name: Build
164
+ run: ${{ env.FLOW_COMMAND }} -s Build
165
+
166
+ - name: Test
167
+ run: ${{ env.FLOW_COMMAND }} -s Test,StoreTests
168
+
169
+ - name: Pack
170
+ id: artifacts
171
+ if: ${{ fromJson(env.RELEASE) }}
172
+ run: ${{ env.FLOW_COMMAND }} -s Sign,Pack,SignPackages,StorePackages
173
+ env:
174
+ SIGN_TOKEN: ${{ secrets.SIGN_TOKEN }}
175
+
176
+ # ## ## ######## ## ####### ### ########
177
+ # ## ## ## ## ## ## ## ## ## ## ##
178
+ # ## ## ## ## ## ## ## ## ## ## ##
179
+ # ## ## ######## ## ## ## ## ## ## ##
180
+ # ## ## ## ## ## ## ######### ## ##
181
+ # ## ## ## ## ## ## ## ## ## ##
182
+ # ####### ## ######## ####### ## ## ########
183
+
184
+ - name: Upload packages
185
+ uses: actions/upload-artifact@v4
186
+ if: ${{ steps.artifacts.outputs.CPACK_GENERATORS != '' }}
187
+ with:
188
+ name: _packages-${{ env.ARTIFACT_SUFFIX }}
189
+ path: ${{github.workspace}}/build/artifacts/packages/
190
+
191
+ - name: Upload test results
192
+ uses: actions/upload-artifact@v4
193
+ if: always()
194
+ with:
195
+ name: _tests-${{ env.ARTIFACT_SUFFIX }}
196
+ path: ${{github.workspace}}/build/artifacts/test-results/
197
+
198
+ merge:
199
+ name: Merge artifacts
200
+ runs-on: ubuntu-latest
201
+ needs: build
202
+ env:
203
+ RELEASE: ${{needs.build.outputs.release}}
204
+ outputs:
205
+ release: ${{fromJson(env.RELEASE)}}
206
+
207
+ steps:
208
+ - name: Merge packages
209
+ uses: actions/upload-artifact/merge@v4
210
+ if: ${{ fromJson(env.RELEASE) }}
211
+ with:
212
+ name: Packages
213
+ pattern: _packages-*
214
+ delete-merged: true
215
+ - name: Merge test results
216
+ uses: actions/upload-artifact/merge@v4
217
+ if: always()
218
+ with:
219
+ name: Test Results
220
+ pattern: _tests-*
221
+ delete-merged: true
222
+
223
+ publish:
224
+ name: Upload packages
225
+ if: ${{ fromJson(needs.merge.outputs.release) }}
226
+ needs: merge
227
+ runs-on: ubuntu-latest
228
+ permissions:
229
+ contents: write
230
+ packages: write
231
+
232
+ env:
233
+ RELEASE: ${{needs.merge.outputs.release}}
234
+
235
+ steps:
236
+ - name: Checkout
237
+ uses: actions/checkout@v4
238
+
239
+ - name: Get packages
240
+ uses: actions/download-artifact@v4
241
+ with:
242
+ name: Packages
243
+ path: ${{github.workspace}}/build/download/packages
244
+
245
+ - name: Publish the release
246
+ run: python ./.flow/flow.py github publish --upload "${{github.workspace}}/build/download/packages"
247
+ env:
248
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,3 +1,13 @@
1
1
  {
2
- "when": "with_github_actions"
2
+ "when": "with.github.actions",
3
+ "filelist": {
4
+ ".github/workflows/build.yml.basic": {
5
+ "path": ".github/workflows/build.yml",
6
+ "when": "with.github.no-auto-release"
7
+ },
8
+ ".github/workflows/build.yml.auto-release": {
9
+ "path": ".github/workflows/build.yml",
10
+ "when": "with.github.auto-release"
11
+ }
12
+ }
3
13
  }
@@ -1,3 +1,3 @@
1
1
  {
2
- "when": "with_github_social"
2
+ "when": "with.github.social"
3
3
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: proj-flow
3
- Version: 0.14.1
3
+ Version: 0.15.1
4
4
  Summary: C++ project maintenance, automated
5
5
  Project-URL: Changelog, https://github.com/mzdun/proj-flow/blob/main/CHANGELOG.rst
6
6
  Project-URL: Documentation, https://proj-flow.readthedocs.io/en/latest/
@@ -26,7 +26,7 @@ Description-Content-Type: text/markdown
26
26
 
27
27
  # Project Flow
28
28
 
29
- [![Python package workflow badge](https://github.com/mzdun/proj-flow/actions/workflows/python-publish.yml/badge.svg)](https://github.com/mzdun/proj-flow/actions)
29
+ [![Python package workflow badge](https://github.com/mzdun/proj-flow/actions/workflows/release.yml/badge.svg)](https://github.com/mzdun/proj-flow/actions)
30
30
  [![PyPI version badge](https://img.shields.io/pypi/v/proj-flow.svg)](https://pypi.python.org/pypi/proj-flow)
31
31
  [![PyPI License: MIT](https://img.shields.io/pypi/l/proj-flow.svg)](https://pypi.python.org/pypi/proj-flow)
32
32