Skip to content

Commit 9ce2979

Browse files
committed
feat: add support for multiple accdb files
1 parent e22971a commit 9ce2979

5 files changed

Lines changed: 39 additions & 37 deletions

File tree

action.yml

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ outputs:
77
value: ${{ steps.list-accdb-files.outputs.has-accdb-files }}
88
accdb-diffs:
99
description: "Text of accdb diff"
10-
value: ${{ steps.generate-accdb-diff.outputs.accdb-diff }}
10+
value: ${{ steps.generate-accdb-diff.outputs.accdb-diffs }}
1111

1212
runs:
1313
using: "composite"
@@ -22,42 +22,34 @@ runs:
2222
if [ -n "$result" ]
2323
then
2424
echo "HAS_ACCDB_FILES=true" >> $GITHUB_ENV
25-
echo "::set-output name=has-accdb-files::$result"
25+
echo "::set-output name=has_accdb_files::true"
2626
else
2727
echo "HAS_ACCDB_FILES=false" >> $GITHUB_ENV
28+
echo "::set-output name=has_accdb_files::false"
2829
fi
30+
echo "::debug::$result"
2931
shell: bash
3032

3133
- id: install-mdbtools
3234
run: |
33-
if [ ${{ env.HAS_ACCDB_FILES }} = true ]
34-
then
35-
sudo apt update
36-
sudo apt --assume-yes install mdbtools
37-
fi
35+
sudo apt --assume-yes install mdbtools
3836
shell: bash
3937

4038
- id: install-csvtojson
4139
run: |
42-
if [ ${{ env.HAS_ACCDB_FILES }} = true ]
43-
then
44-
sudo npm i -g csvtojson
45-
fi
40+
sudo npm i -g csvtojson
4641
shell: bash
4742

4843
- id: generate-accdb-diff
4944
env:
5045
GITHUB_ACTION_PATH: ${{ github.action_path }}
46+
WORKSPACE: ${{ github.workspace }}
5147
run: |
52-
if [ ${{ env.HAS_ACCDB_FILES }} = true ]
53-
then
54-
IFS=$'\n'
55-
result=($(${{ github.action_path }}/diff-accdb-files.sh \
56-
${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.base.sha }} \
57-
| ${{ github.action_path }}/convert-to-markdown-comment.sh \
58-
| jq --slurp --raw-input '.' \
59-
| { cat; echo; } ))
60-
echo "::set-output name=accdb-diff::${result[@]}"
61-
echo "${result[@]}"
62-
fi
48+
echo "V: 024"
49+
echo "::debug::$(${{ github.action_path }}/list-accdb-files.sh ${{ github.event.pull_request.head.sha }} "A" )"
50+
echo "::debug::$(${{ github.action_path }}/list-accdb-files.sh ${{ github.event.pull_request.head.sha }} "M" )"
51+
result=$(${{ github.action_path }}/diff-accdb-files.sh \
52+
${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.base.sha }})
53+
54+
echo "::set-output name=accdb-diffs::${result}"
6355
shell: bash

diff-accdb-files.sh

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,17 @@ BASE=$2
44

55
# gets the names of accdb files that have been modified in the given commit
66
# and then pipes that into a custom diff script.
7-
${GITHUB_ACTION_PATH}/list-accdb-files.sh $HEAD "M" |
8-
xargs -I{} \
9-
git difftool --extcmd="${GITHUB_ACTION_PATH}/diff-modified-accdb-file.sh" "$BASE" {} --no-prompt
107

11-
${GITHUB_ACTION_PATH}/list-accdb-files.sh $HEAD "A" |
12-
xargs -I{} \
13-
git difftool --extcmd="${GITHUB_ACTION_PATH}/diff-added-accdb-file.sh" "$BASE" {} --no-prompt
8+
{
9+
$GITHUB_ACTION_PATH/list-accdb-files.sh $HEAD M | while read -r f ;
10+
do
11+
git difftool --extcmd="$GITHUB_ACTION_PATH/diff-modified-accdb-file.sh" "$BASE" "$f" --no-prompt \
12+
| jq -s --join-output --compact-output --arg filename "$f" --raw-input '. | { name: $filename, text: . }'
13+
done
14+
15+
$GITHUB_ACTION_PATH/list-accdb-files.sh $HEAD A | while read -r f ;
16+
do
17+
git difftool --extcmd="$GITHUB_ACTION_PATH/diff-added-accdb-file.sh" "$BASE" "$f" --no-prompt \
18+
| jq -s --join-output --compact-output --arg filename "$f" --raw-input '. | { name: $filename, text: . }'
19+
done
20+
} | jq --join-output --compact-output --slurp '. | { files: . }'

diff-added-accdb-file.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ AFTER="${2%.accdb}.json"
55
ACCESS_TO_JSON="${GITHUB_ACTION_PATH}/export-accdb-tables-to-json.sh"
66

77
echo "" >"$BEFORE"
8-
$ACCESS_TO_JSON $2 "$AFTER"
8+
$ACCESS_TO_JSON "$2" "$AFTER"
9+
10+
git diff --no-ext-diff --no-index "$BEFORE" "$AFTER"
911

10-
git diff --no-ext-diff --no-index $BEFORE $AFTER

diff-modified-accdb-file.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ BEFORE="${2%.accdb}.json"
44
AFTER="${1%.accdb}.json"
55
ACCESS_TO_JSON="${GITHUB_ACTION_PATH}/export-accdb-tables-to-json.sh"
66

7-
$ACCESS_TO_JSON $2 "$BEFORE"
8-
$ACCESS_TO_JSON $1 "$AFTER"
7+
echo "2: $2" >&2
8+
echo "1: $1" >&2
99

10-
git diff --no-ext-diff --no-index $AFTER $BEFORE
10+
$ACCESS_TO_JSON "$2" "$BEFORE"
11+
$ACCESS_TO_JSON "$1" "$AFTER"
1112

13+
git diff --no-ext-diff --no-index "$AFTER" "$BEFORE"

export-accdb-tables-to-json.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ DIFF_OUTPUT=$2
66

77
truncate --size 0 $DIFF_OUTPUT
88
{
9-
for table in $(mdb-tables $ACCDB_FILE | tr " " "\n" | sort); do
10-
mdb-export $ACCDB_FILE $table | csvtojson | jq --slurp ". | {"$table": .}" >>$DIFF_OUTPUT
11-
done
12-
} >/dev/null
9+
for table in $(mdb-tables "$ACCDB_FILE" | tr " " "\n" | sort); do
10+
mdb-export "$ACCDB_FILE" $table | csvtojson | jq --slurp ".[] | {"$table": . }" >>$DIFF_OUTPUT
11+
done
12+
} >/dev/null

0 commit comments

Comments
 (0)