@@ -141,10 +141,6 @@ runs:
141
141
with :
142
142
subject-path : " /tmp/baipp/dist/*"
143
143
144
- - name : Add contents header
145
- shell : bash
146
- run : echo -e '\n### Package Contents' >> $GITHUB_STEP_SUMMARY
147
-
148
144
- name : Set output
149
145
id : dist-location-setter
150
146
shell : bash
@@ -178,34 +174,74 @@ runs:
178
174
--strict
179
175
/tmp/baipp/dist/*
180
176
181
- - name : Show package contents hierarchically, including metadata.
182
- shell : bash
177
+ - name : Extract built package
183
178
working-directory : ${{ inputs.path }}
179
+ shell : bash
184
180
run : |
185
181
cd /tmp/baipp/dist
186
182
mkdir -p out/sdist
187
183
tar xf *.tar.gz -C out/sdist
188
184
185
+ if [[ "${{ inputs.skip-wheel }}" != 'true' ]]; then
186
+ mkdir -p out/wheels
187
+ /tmp/baipp/bin/python -m wheel unpack --dest out/wheels *.whl
188
+ fi
189
+
190
+ - name : Extract packaging metadata
191
+ id : metadata-setter
192
+ shell : bash
193
+ working-directory : /tmp/baipp/dist/out/sdist/
194
+ run : |
195
+ cat */PKG-INFO | python -c '
196
+ import email.parser
197
+ import json, pathlib, re, sys
198
+
199
+ pkg_info = email.parser.Parser().parsestr(sys.stdin.read())
200
+
201
+ version_tokens = []
202
+ for classifier in pkg_info.get_all("Classifier", []):
203
+ if match := re.match(r"Programming Language :: Python :: (\d+\.\d+)$", classifier):
204
+ version_tokens.append(match.group(1))
205
+
206
+ package_name = pkg_info.get("Name")
207
+ if package_name is None:
208
+ raise RuntimeError("Package name is not set")
209
+
210
+ pathlib.Path("package_name.txt").write_text(package_name)
211
+
212
+ package_version = pkg_info.get("Version", "0.0.0")
213
+
214
+ print(f"package_name={package_name}")
215
+ print(f"package_version={package_version}")
216
+ print(f"supported_python_classifiers_json_array={json.dumps(version_tokens)}")
217
+ print(f"""supported_python_classifiers_json_job_matrix_value={json.dumps({"python-version": version_tokens})}""")
218
+ ' >> $GITHUB_OUTPUT
219
+
220
+ echo -e "\n### Contents of the <code>$(cat package_name.txt)</code> package" >> $GITHUB_STEP_SUMMARY
221
+ rm -f package_name.txt
222
+
223
+
224
+ - name : Show package contents hierarchically, including metadata.
225
+ working-directory : /tmp/baipp/dist/out/sdist/
226
+ shell : bash
227
+ run : |
189
228
if ! command -v tree &> /dev/null; then
190
229
sudo apt-get install tree
191
230
fi
192
231
193
232
echo -e '\n<details><summary>SDist contents</summary>\n' >> $GITHUB_STEP_SUMMARY
194
- (cd /tmp/baipp/dist/out/sdist && tree -Da --timefmt="%Y-%m-%dT%H:%M:%SZ" * | sed 's/^/ /' | tee -a $GITHUB_STEP_SUMMARY)
233
+ tree -Da --timefmt="%Y-%m-%dT%H:%M:%SZ" * | sed 's/^/ /' | tee -a $GITHUB_STEP_SUMMARY
195
234
echo -e '\n</details>\n' >> $GITHUB_STEP_SUMMARY
196
235
197
- if [[ "${{ inputs.skip-wheel }}" != 'true' ]]; then
198
- mkdir -p out/wheels
199
- /tmp/baipp/bin/python -m wheel unpack --dest out/wheels *.whl
200
-
236
+ if [ -d "../wheels" ]; then
201
237
echo -e '\n<details><summary>Wheel contents</summary>\n' >> $GITHUB_STEP_SUMMARY
202
- (cd /tmp/baipp/dist/out /wheels && tree -a * | sed 's/^/ /' | tee -a $GITHUB_STEP_SUMMARY)
238
+ (cd .. /wheels && tree -a * | sed 's/^/ /' | tee -a $GITHUB_STEP_SUMMARY)
203
239
echo -e '\n</details>\n' >> $GITHUB_STEP_SUMMARY
204
240
fi
205
241
206
242
echo ----- Metadata Follows -----
207
243
echo -e '\n<details><summary>Metadata</summary>\n' >> $GITHUB_STEP_SUMMARY
208
- cat out/sdist/ */PKG-INFO | sed 's/^/ /' | tee -a $GITHUB_STEP_SUMMARY
244
+ cat */PKG-INFO | sed 's/^/ /' | tee -a $GITHUB_STEP_SUMMARY
209
245
echo -e '\n</details>\n' >> $GITHUB_STEP_SUMMARY
210
246
echo ----- End of Metadata -----
211
247
@@ -237,31 +273,3 @@ runs:
237
273
with :
238
274
name : PyPI README${{ inputs.upload-name-suffix }}
239
275
path : /tmp/baipp/dist/out/sdist/PyPI-README.*
240
-
241
- - name : Generate JSON objects of supported Python versions
242
- id : metadata-setter
243
- shell : bash
244
- working-directory : /tmp/baipp/dist/out/sdist/
245
- run : |
246
- cat */PKG-INFO | python -c '
247
- import email.parser
248
- import json, re, sys
249
-
250
- pkg_info = email.parser.Parser().parsestr(sys.stdin.read())
251
-
252
- version_tokens = []
253
- for classifier in pkg_info.get_all("Classifier", []):
254
- if match := re.match(r"Programming Language :: Python :: (\d+\.\d+)$", classifier):
255
- version_tokens.append(match.group(1))
256
-
257
- package_name = pkg_info.get("Name")
258
- if package_name is None:
259
- raise RuntimeError("Package name is not set")
260
-
261
- package_version = pkg_info.get("Version", "0.0.0")
262
-
263
- print(f"package_name={package_name}")
264
- print(f"package_version={package_version}")
265
- print(f"supported_python_classifiers_json_array={json.dumps(version_tokens)}")
266
- print(f"""supported_python_classifiers_json_job_matrix_value={json.dumps({"python-version": version_tokens})}""")
267
- ' >> $GITHUB_OUTPUT
0 commit comments