git-fit 0.9.1 → 0.9.2

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.
@@ -0,0 +1,94 @@
1
+ name: DB Store Restore
2
+ description: Restore DB from cache and/or git with SHA256SUMS verification. Use 'db-from-git' to enable git restore; 'shall-commit-db' is deprecated.
3
+ inputs:
4
+ path:
5
+ required: false
6
+ default: <%= db_path %>
7
+ key-prefix:
8
+ required: false
9
+ default: db
10
+ db-schema-hash:
11
+ required: false
12
+ default: ""
13
+ db-from-git:
14
+ required: false
15
+ default: 'false'
16
+ description: "Whether to restore DB from the git branch (read-only)"
17
+ shall-commit-db:
18
+ required: false
19
+ default: 'false'
20
+ description: "Deprecated: use 'db-from-git' instead"
21
+ git-branch:
22
+ required: false
23
+ default: _/db
24
+ outputs:
25
+ clean:
26
+ description: "Whether the restored DB passed SHA256 verification"
27
+ value: ${{ steps.db-restore-check.outputs.clean }}
28
+ runs:
29
+ using: composite
30
+ steps:
31
+ - name: Deprecation warning for shall-commit-db
32
+ if: inputs.shall-commit-db == 'true'
33
+ shell: bash
34
+ run: |
35
+ echo "::warning::shall-commit-db is deprecated in restore context; use 'db-from-git' instead"
36
+
37
+ - name: Build cache key
38
+ id: ck
39
+ shell: bash
40
+ run: |
41
+ mhash="${{ inputs.db-schema-hash }}"
42
+ [[ -n "$mhash" ]] && mhash="-${mhash}"
43
+ echo "key=${{ inputs.key-prefix }}-v1${mhash}-${{ github.run_id }}" >> $GITHUB_OUTPUT
44
+
45
+ - name: Check DB git branch
46
+ id: db-git-check
47
+ if: inputs.db-from-git == 'true' || inputs.shall-commit-db == 'true'
48
+ shell: bash
49
+ run: |
50
+ if git ls-remote --exit-code origin refs/heads/${{ inputs.git-branch }} >/dev/null 2>&1; then
51
+ echo "exists=true" >> $GITHUB_OUTPUT
52
+ else
53
+ echo "exists=false" >> $GITHUB_OUTPUT
54
+ fi
55
+
56
+ - name: Restore DB from git
57
+ if: (inputs.db-from-git == 'true' || inputs.shall-commit-db == 'true') && steps.db-git-check.outputs.exists == 'true'
58
+ shell: bash
59
+ run: |
60
+ dir=$(dirname "${{ inputs.path }}")
61
+ git fetch origin "${{ inputs.git-branch }}"
62
+ mkdir -p "$dir"
63
+ git archive --format=tar "origin/${{ inputs.git-branch }}" \
64
+ "${{ inputs.path }}" "${{ inputs.path }}.SHA256SUMS" \
65
+ "${{ inputs.path }}-wal" "${{ inputs.path }}-shm" 2>/dev/null | tar xf - || true
66
+
67
+ - name: Restore DB cache
68
+ uses: actions/cache/restore@v4
69
+ id: restore-db
70
+ with:
71
+ path: |-
72
+ ${{ inputs.path }}
73
+ ${{ inputs.path }}.SHA256SUMS
74
+ ${{ inputs.path }}-wal
75
+ ${{ inputs.path }}-shm
76
+ key: ${{ steps.ck.outputs.key }}
77
+ restore-keys: ${{ inputs.key-prefix }}-v1-
78
+
79
+ - name: Verify DB restore
80
+ id: db-restore-check
81
+ shell: bash
82
+ run: |
83
+ db="${{ inputs.path }}"
84
+ ck="${db}.SHA256SUMS"
85
+ if [ ! -f "$db" ]; then
86
+ echo "clean=true" >> $GITHUB_OUTPUT
87
+ exit 0
88
+ fi
89
+ if [ -f "$ck" ] && sha256sum -c "$ck" --quiet >/dev/null 2>&1; then
90
+ echo "clean=true" >> $GITHUB_OUTPUT
91
+ else
92
+ echo "clean=false" >> $GITHUB_OUTPUT
93
+ [ ! -f "$ck" ] && sha256sum "$db" > "$ck"
94
+ fi
@@ -0,0 +1,115 @@
1
+ name: DB Store Save
2
+ description: Save DB to cache and/or git with SHA256SUMS, skip if unchanged
3
+ inputs:
4
+ path:
5
+ required: false
6
+ default: <%= db_path %>
7
+ key-prefix:
8
+ required: false
9
+ default: db
10
+ db-schema-hash:
11
+ required: false
12
+ default: ""
13
+ db-to-git:
14
+ required: false
15
+ default: 'false'
16
+ description: "Whether to save DB to the git branch"
17
+ shall-commit-db:
18
+ required: false
19
+ default: 'false'
20
+ description: "Deprecated: use 'db-to-git' instead"
21
+ git-branch:
22
+ required: false
23
+ default: _/db
24
+ commit-author-name:
25
+ required: false
26
+ default: "git-fit-bot"
27
+ commit-author-email:
28
+ required: false
29
+ default: "bot@git-fit"
30
+ outputs:
31
+ db-changed:
32
+ description: "Whether the DB changed and needs saving"
33
+ value: ${{ steps.check.outputs.db-changed }}
34
+ saved:
35
+ description: "Whether the DB was actually saved (cache or git)"
36
+ value: ${{ steps.check.outputs.db-changed }}
37
+ runs:
38
+ using: composite
39
+ steps:
40
+ - name: Deprecation warning for shall-commit-db
41
+ if: inputs.shall-commit-db == 'true'
42
+ shell: bash
43
+ run: |
44
+ echo "::warning::shall-commit-db is deprecated; use 'db-to-git' instead"
45
+
46
+ - name: Check DB changed
47
+ id: check
48
+ shell: bash
49
+ run: |
50
+ db="${{ inputs.path }}"
51
+ ck="${db}.SHA256SUMS"
52
+ if [ ! -f "$db" ]; then
53
+ echo "db-changed=false" >> $GITHUB_OUTPUT
54
+ exit 0
55
+ fi
56
+ if [ -f "$ck" ] && sha256sum -c "$ck" --quiet >/dev/null 2>&1; then
57
+ echo "db-changed=false" >> $GITHUB_OUTPUT
58
+ else
59
+ echo "db-changed=true" >> $GITHUB_OUTPUT
60
+ fi
61
+
62
+ - name: Generate DB SHA256SUMS
63
+ if: steps.check.outputs.db-changed == 'true'
64
+ shell: bash
65
+ run: sha256sum "${{ inputs.path }}" > "${{ inputs.path }}.SHA256SUMS"
66
+
67
+ - name: Save DB git
68
+ if: (inputs.db-to-git == 'true' || inputs.shall-commit-db == 'true') && steps.check.outputs.db-changed == 'true'
69
+ shell: bash
70
+ run: |
71
+ BRANCH="${{ inputs.git-branch }}"
72
+ DB="${{ inputs.path }}"
73
+ CK="${DB}.SHA256SUMS"
74
+ TEMP_INDEX=".git/cache-index-$$"
75
+ cleanup() { rm -f "$TEMP_INDEX"; }
76
+ trap cleanup EXIT
77
+ if ! git fetch origin "$BRANCH" 2>/dev/null; then
78
+ echo "Git fetch failed for $BRANCH, skipping git save" >&2
79
+ exit 0
80
+ fi
81
+ GIT_INDEX_FILE="$TEMP_INDEX" git read-tree --empty
82
+ GIT_INDEX_FILE="$TEMP_INDEX" git add -f "$DB" "$CK" "$DB-wal" "$DB-shm"
83
+ GIT_INDEX_FILE="$TEMP_INDEX" git diff-index --cached --quiet "origin/$BRANCH" 2>/dev/null && {
84
+ echo "No changes to $BRANCH" >&2
85
+ exit 0
86
+ }
87
+ TREE=$(GIT_INDEX_FILE="$TEMP_INDEX" git write-tree)
88
+ if git rev-parse --verify "origin/$BRANCH" >/dev/null 2>&1; then
89
+ PARENT=$(git rev-parse "origin/$BRANCH")
90
+ COMMIT=$(git -c user.name="${{ inputs.commit-author-name }}" -c user.email="${{ inputs.commit-author-email }}" \
91
+ commit-tree -p "$PARENT" -m "store($BRANCH): $(date -u +%Y%m%d-%H%M%S)" "$TREE")
92
+ else
93
+ COMMIT=$(git -c user.name="${{ inputs.commit-author-name }}" -c user.email="${{ inputs.commit-author-email }}" \
94
+ commit-tree -m "store($BRANCH): $(date -u +%Y%m%d-%H%M%S)" "$TREE")
95
+ fi
96
+ git push origin "$COMMIT:refs/heads/$BRANCH"
97
+
98
+ - name: Build cache key
99
+ id: ck
100
+ shell: bash
101
+ run: |
102
+ mhash="${{ inputs.db-schema-hash }}"
103
+ [[ -n "$mhash" ]] && mhash="-${mhash}"
104
+ echo "key=${{ inputs.key-prefix }}-v1${mhash}-${{ github.run_id }}" >> $GITHUB_OUTPUT
105
+
106
+ - name: Save DB cache
107
+ uses: actions/cache/save@v4
108
+ if: steps.check.outputs.db-changed == 'true'
109
+ with:
110
+ path: |-
111
+ ${{ inputs.path }}
112
+ ${{ inputs.path }}.SHA256SUMS
113
+ ${{ inputs.path }}-wal
114
+ ${{ inputs.path }}-shm
115
+ key: ${{ steps.ck.outputs.key }}
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GitFit
4
- VERSION = '0.9.1'
4
+ VERSION = '0.9.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-fit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lax
@@ -205,6 +205,7 @@ files:
205
205
  - lib/git_fit/export/defaults.rb
206
206
  - lib/git_fit/export/json.rb
207
207
  - lib/git_fit/fit.rb
208
+ - lib/git_fit/fit/decoder.js
208
209
  - lib/git_fit/fit/decoder.rb
209
210
  - lib/git_fit/geo.rb
210
211
  - lib/git_fit/geo/amap_client.rb
@@ -217,6 +218,8 @@ files:
217
218
  - lib/git_fit/import/apple_health.rb
218
219
  - lib/git_fit/import/local_file.rb
219
220
  - lib/git_fit/install/actions.rb
221
+ - lib/git_fit/install/actions/db-store/restore.yml.erb
222
+ - lib/git_fit/install/actions/db-store/save.yml.erb
220
223
  - lib/git_fit/parser.rb
221
224
  - lib/git_fit/parser/base.rb
222
225
  - lib/git_fit/parser/fit.rb