@@ -18,43 +18,35 @@ outputs:
1818runs :
1919 using : composite
2020 steps :
21- - name : Get reserved definitions
22- id : defs
21+ - name : Clone build-cd script location
22+ uses : actions/checkout@v4
23+ with :
24+ repository : access-nri/build-cd
25+ path : ${{ github.workspace }}/getter-script
26+
27+ - name : Get Current Directory
28+ id : script
29+ # We need to store the current working directory so we can re-construct the inputs.spack-manifest-path, as we run
30+ # the script from the build-cd directory
2331 shell : bash
24- # Converts an array of spack definitions into a simpler object of
25- # only reserved definitions and their values, for later processing.
26- # From:
27- # spack:
28- # definitions:
29- # - _name: [test-model]
30- # - _version: [1.0.0]
31- # - compilers: [gcc@10.2.0, intel@2025.10.0]
32- # To:
33- # _name: test-model
34- # _version: 1.0.0
3532 run : |
36- reserved_definitions=$(yq '.spack.definitions[] | to_entries[] | select(.key == "_*") | {(.key): (.value[0])}' ${{ inputs.spack-manifest-path }})
37-
38- if [ -z "$reserved_definitions" ]; then
39- echo "::error::No reserved definitions found in spack manifest - some of them are required for deployment"
40- exit 1
41- fi
33+ pwd=$(pwd)
34+ echo "Action PWD: $pwd"
35+ echo "pwd=$pwd" >> $GITHUB_OUTPUT
4236
43- name=$(yq "._name" <<< "$reserved_definitions")
44- if [["$name" == "null" ]]; then
45- echo "::error::No deployment name (_name) found in spack manifest reserved definitions"
46- exit 1
47- fi
48-
49- version=$(yq "._version" <<< "$reserved_definitions")
50- if [["$version" == "null" ]]; then
51- echo "::error::No deployment version (_version) found in spack manifest reserved definitions"
52- exit 1
53- fi
37+ - name : Get reserved definitions
38+ id : defs
39+ env :
40+ PYTHONPATH : ${{ github.workspace }}/getter-script
41+ shell : python
42+ run : |
43+ from scripts.spack_manifest.getter import ReservedDefinitions
44+ import os
5445
55- echo "Given reserved definitions:"
56- echo "$reserved_definitions"
57- echo "We have extracted name: $name, and version: $version"
46+ defs = ReservedDefinitions.from_file("${{ steps.script.outputs.pwd }}/${{ inputs.spack-manifest-path }}")
47+ name = defs.get("name")
48+ version = defs.get(" version")
5849
59- echo "name=$name" >> $GITHUB_OUTPUT
60- echo "version=$version" >> $GITHUB_OUTPUT
50+ with open(os.environ['GITHUB_OUTPUT'], 'a') as o:
51+ o.write(f"name={name}\n")
52+ o.write(f"version={version}\n")
0 commit comments