11name : Validate template
22description : Validate ADF template
3-
43inputs :
54 path :
65 required : true
7- description : Project root path
6+ description : Project root
87 directory :
98 required : false
109 description : Template directory
11- default : ' '
12-
1310outputs :
1411 status :
15- description : Validation exit code (0 = success, non-zero = failure)
16- value : ${{ steps.validate-template.outputs.status }}
12+ description : Validate status
13+ value : ${{ fromJSON( steps.validate-template.outputs.result) .status }}
1714 detail :
18- description : Validation details or error message
19- value : ${{ steps.validate-template.outputs.detail }}
20-
15+ description : Validate detail
16+ value : ${{ fromJSON(steps.validate-template.outputs.result).detail }}
2117runs :
2218 using : composite
2319 steps :
2420 - name : Setup Deno environment
25- uses : denoland/setup-deno@v2
21+ uses : denoland/setup-deno@v1
2622 with :
2723 deno-version : v1.x
2824
2925 - name : Validate template
3026 id : validate-template
31- env :
32- INPUT_PATH : ${{ inputs.path }}
33- INPUT_DIRECTORY : ${{ inputs.directory }}
34- shell : bash
35- run : |
36- set -euo pipefail
37-
38- # Run validation script
39- if ! result=$(deno run --allow-read "${{ github.action_path }}/src/main.ts" "${INPUT_PATH}" "${INPUT_DIRECTORY}" 2>&1); then
40- echo "status=1" >> "$GITHUB_OUTPUT"
41- # Handle multi-line error output using heredoc
42- {
43- echo "detail<<EOF"
44- echo "Deno execution failed: ${result}"
45- echo "EOF"
46- } >> "$GITHUB_OUTPUT"
47- exit 0 # Don't fail the step, let caller handle status
48- fi
49-
50- # Validate JSON output
51- if ! echo "$result" | jq empty 2>/dev/null; then
52- echo "status=1" >> "$GITHUB_OUTPUT"
53- {
54- echo "detail<<EOF"
55- echo "Invalid JSON output from validation script: ${result}"
56- echo "EOF"
57- } >> "$GITHUB_OUTPUT"
58- exit 0
59- fi
60-
61- # Extract status and detail from JSON response
62- status=$(echo "$result" | jq -r '.status // 1')
63- detail=$(echo "$result" | jq -r '.detail // "No details provided"')
64-
65- echo "status=${status}" >> "$GITHUB_OUTPUT"
66- # Handle potential multi-line detail content
67- {
68- echo "detail<<EOF"
69- echo "${detail}"
70- echo "EOF"
71- } >> "$GITHUB_OUTPUT"
27+ run : echo "::set-output name=result::$(deno run --allow-read ${{ github.action_path }}/src/main.ts ${{ inputs.path }} ${{ inputs.directory }})"
0 commit comments