Skip to content

Commit

Permalink
add sync-with-fsrs-rs
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexErrant committed May 18, 2024
1 parent 26d8744 commit 971f2ac
Show file tree
Hide file tree
Showing 2 changed files with 171 additions and 0 deletions.
143 changes: 143 additions & 0 deletions .github/workflows/sync-with-fsrs-rs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
name: sync with fsrs-rs

on:
schedule:
- cron: '0 0 * * *' # once a day

env:
CARGO_TERM_COLOR: always

jobs:
build:

runs-on: ubuntu-latest

steps:

- name: Check out
uses: actions/checkout@v4
with:
submodules: true
ssh-key: "${{secrets.FSRS_BROWSER_COMMIT_KEY}}"

- name: Pull latest fsrs-rs
run: |
(cd fsrs-rs && git pull origin fsrs-browser)
changed=$(git status --porcelain | wc -l)
echo "changed=$changed" >> "$GITHUB_ENV"
- name: Cancelling due to no changes
uses: andymckay/[email protected]
if: env.changed == 0

# needed since the run is not cancelled immediately
- name: Wait for run cancellation
if: env.changed == 0
run: while true; do echo "Waiting for job to be cancelled"; sleep 5; done

- name: Bump fsrs-browser version
run: ./bumpVersion.sh

- name: Install Rust nightly
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2023-12-21
components: rustfmt,clippy
targets: wasm32-unknown-unknown

- name: Add rust-src
run: rustup component add rust-src --toolchain nightly-2023-12-21-x86_64-unknown-linux-gnu

- name: Set up cargo cache
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-

- name: Run checks
run: ./check.sh

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: lts/*

- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 8
run_install: false
package_json_file: sandbox/package.json

- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v4
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
working-directory: ./sandbox
run: pnpm install

- name: Install Playwright Browsers
working-directory: ./sandbox
run: pnpm exec playwright install --with-deps

- name: Build Dev
run: ./dev.sh

- name: Run Playwright dev tests
working-directory: ./sandbox
run: pnpm exec playwright test dev.spec.ts

- name: Build Prod
run: ./prod.sh

- name: Run Playwright prod tests
working-directory: ./sandbox
run: pnpm exec playwright test prod.spec.ts

- uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: sandbox/playwright-report/
retention-days: 30

- name: Compute fsrs-rs version and setup git
run: |
set -e
version=$(cd fsrs-rs && cat Cargo.toml \
| grep --extended-regexp "^version =" \
| grep --extended-regexp --only-matching "[0-9]+\.[0-9]+.[0-9]+[-\.\+a-zA-Z0-9]*" \
| head --lines=1)
echo "rsVersion=$version" >> "$GITHUB_ENV"
git config --local user.email "[email protected]"
git config --local user.name "Github Actions"
git add .
- name: Autosync success
if: ${{ success() }}
run: |
git commit -m "auto update fsrs-rs to $rsVersion"
git push
- name: Autosync failure
if: ${{ failure() }}
run: |
git switch -c "fsrs-rs-v$rsVersion"
git commit -m "auto update fsrs-rs to $rsVersion"
git push
28 changes: 28 additions & 0 deletions bumpVersion.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash

rsVersion=$(cd fsrs-rs && cat Cargo.toml |
grep --extended-regexp "^version =" |
grep --extended-regexp --only-matching "[0-9]+\.[0-9]+.[0-9]+[-\.\+a-zA-Z0-9]*" |
head --lines=1)

# https://stackoverflow.com/a/6253883
rsMajor=$(echo $rsVersion | cut -d. -f1)
rsMinor=$(echo $rsVersion | cut -d. -f2)

oldVersion=$(cat Cargo.toml |
grep --extended-regexp "^version =" |
grep --extended-regexp --only-matching "[0-9]+\.[0-9]+.[0-9]+[-\.\+a-zA-Z0-9]*" |
head --lines=1)

oldMajor=$(echo $oldVersion | cut -d. -f1)
oldMinor=$(echo $oldVersion | cut -d. -f2)
oldRevision=$(echo $oldVersion | cut -d. -f3)

newVersion="$rsMajor.$rsMinor.0"
if [[ $rsMajor == $oldMajor && $rsMinor == $oldMinor ]]; then
revision=$(expr $oldRevision + 1)
newVersion="$rsMajor.$rsMinor.$revision"
fi

# https://github.com/rust-lang/cargo/issues/6583#issue-401816934
sed -i -e "s/^version = .*/version = \"$newVersion\"/" Cargo.toml

0 comments on commit 971f2ac

Please sign in to comment.