Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
tpict committed Oct 5, 2023
0 parents commit cea967d
Show file tree
Hide file tree
Showing 190 changed files with 9,436 additions and 0 deletions.
194 changes: 194 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
name: Build & Test

on:
pull_request:
push:
branches:
- main
# schedule:
# # runs the CI everyday at 10AM
# - cron: "0 10 * * *"

jobs:
# General build, check, and test steps
build_and_test:
runs-on: ubuntu-latest

steps:
# Setup
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- uses: bluefireteam/melos-action@v2
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: rustfmt, clippy

# Rust
- name: Check Rust format
working-directory: ./packages/savgol/native/src
run: rustfmt --check lib.rs
- name: Rust code analysis
run: cargo clippy -- -D warnings
- name: Run Rust tests
run: cargo test
- name: Build Rust code for Dart tests
run: cargo build -r

# Dart/Flutter
# TODO: ignore generated files
# - name: Check Dart format
# run: melos run check-format --no-select
# - name: Dart code analysis
# run: melos run analyze --no-select
# - name: Run Dart tests
# run: melos run test

macos_integration_test:
runs-on: macos-latest

steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- uses: bluefireteam/melos-action@v2
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable

- name: Build the XCFramework
run: melos run build:apple
- name: Copy the XCFramework to the needed location
run: |
CURR_VERSION=savgol-v`awk '/^version: /{print $2}' packages/savgol/pubspec.yaml`
cp platform-build/SavGol.xcframework.zip packages/flutter_savgol/macos/Frameworks/$CURR_VERSION.zip
echo Copied file!
- name: Run Flutter integration tests
working-directory: packages/flutter_savgol/example
run: flutter test -d macos integration_test

windows_integration_test:
runs-on: windows-latest

steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- uses: bluefireteam/melos-action@v2
- uses: goto-bus-stop/setup-zig@v2
- uses: KyleMayes/install-llvm-action@v1
with:
version: "15"
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable

- name: Build the binaries
run: melos run build:other
- name: Copy the binaries to the needed location
shell: bash
run: |
CURR_VERSION=savgol-v`awk '/^version: /{print $2}' packages/savgol/pubspec.yaml`
cp platform-build/other.tar.gz packages/flutter_savgol/windows/$CURR_VERSION.tar.gz
echo Copied file!
- name: Run Flutter integration tests
working-directory: packages/flutter_savgol/example
run: flutter test -d windows integration_test

linux_integration_test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Install dependencies for flutter integration test
run: sudo apt update && sudo apt-get install -y libglu1-mesa ninja-build clang cmake pkg-config libgtk-3-dev liblzma-dev
- uses: pyvista/setup-headless-display-action@v1
- uses: subosito/flutter-action@v2
- uses: bluefireteam/melos-action@v2
- uses: goto-bus-stop/setup-zig@v2
- uses: KyleMayes/install-llvm-action@v1
with:
version: "15"
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable

- name: Build the binaries
run: melos run build:other
- name: Copy the binaries to the needed location
run: |
CURR_VERSION=savgol-v`awk '/^version: /{print $2}' packages/savgol/pubspec.yaml`
cp platform-build/other.tar.gz packages/flutter_savgol/linux/$CURR_VERSION.tar.gz
echo Copied file!
- name: Run Flutter integration tests
working-directory: packages/flutter_savgol/example
run: flutter test -d linux integration_test

ios_integration_test:
runs-on: macos-latest

steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- uses: bluefireteam/melos-action@v2
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable

- name: Start iOS Simulator
run: |
DEVICE_ID=$(xcrun xctrace list devices | grep iPhone | head -1 | awk '{print $NF}' | tr -d '()')
echo "DEVICE_ID=$DEVICE_ID" >> $GITHUB_ENV
xcrun simctl boot $DEVICE_ID
- name: Build the XCFramework
run: melos run build:apple
- name: Copy the XCFramework to the needed location
run: |
CURR_VERSION=savgol-v`awk '/^version: /{print $2}' packages/savgol/pubspec.yaml`
cp platform-build/SavGol.xcframework.zip packages/flutter_savgol/ios/Frameworks/$CURR_VERSION.zip
echo Copied file!
- name: Run Flutter integration tests
working-directory: packages/flutter_savgol/example
run: flutter test -d ${{ env.DEVICE_ID }} integration_test

android_integration_test:
runs-on: macos-latest

steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- uses: bluefireteam/melos-action@v2
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: nttld/setup-ndk@v1
with:
ndk-version: r25b
- uses: actions/setup-java@v3
with:
distribution: zulu
java-version: "11.x"

- name: Build the binaries
run: melos run build:android
- name: Copy the binaries to the needed location
run: |
CURR_VERSION=savgol-v`awk '/^version: /{print $2}' packages/savgol/pubspec.yaml`
cp platform-build/android.tar.gz packages/flutter_savgol/android/$CURR_VERSION.tar.gz
echo Copied file!
- name: Run Flutter integration tests
uses: Wandalen/wretry.action@master # sometimes android tests are flaky
with:
attempt_limit: 5
action: reactivecircus/android-emulator-runner@v2
with: |
api-level: 33
target: google_apis
arch: x86_64
ram-size: 1024M
disk-size: 2048M
script: cd packages/flutter_savgol/example && flutter test -d `flutter devices | grep android | tr ' ' '\n' | grep emulator-` integration_test
53 changes: 53 additions & 0 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Publish Release(s)

on:
push:
tags:
- "*"

jobs:
publish_github_release:
# macOS because we can cross-compile to all other platforms from it
runs-on: macos-latest

steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- uses: bluefireteam/melos-action@v2
- uses: goto-bus-stop/setup-zig@v2
- uses: KyleMayes/install-llvm-action@v1
with:
version: "15"
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: nttld/setup-ndk@v1
with:
ndk-version: r25b

- name: Build all library binaries
run: melos run build

- name: Create GitHub release
uses: softprops/action-gh-release@v1
with:
files: platform-build/*

publish_pub_release:
needs: publish_github_release
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- uses: bluefireteam/melos-action@v2
- name: Setup pub.dev credentials
run: |
mkdir -p $HOME/.config/dart
cat << EOF > $HOME/.config/dart/pub-credentials.json
${{ secrets.PUB_CRED_JSON }}
EOF
- name: Dry-run publish to pub.dev
run: melos publish -y --dry-run
- name: Publish to pub.dev
run: melos publish -y --no-dry-run
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
target/
platform-build/
.dart_tool/
.idea/
melos_savgol.iml
93 changes: 93 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Change Log

All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## 2023-09-23

### Changes

---

Packages with breaking changes:

- There are no breaking changes in this release.

Packages with other changes:

- [`flutter_savgol` - `v0.0.2+3`](#flutter_savgol---v0023)

---

#### `flutter_savgol` - `v0.0.2+3`

- **FIX**: missing dependency.


## 2023-09-23

### Changes

---

Packages with breaking changes:

- There are no breaking changes in this release.

Packages with other changes:

- [`flutter_savgol` - `v0.0.2+2`](#flutter_savgol---v0022)

---

#### `flutter_savgol` - `v0.0.2+2`

- **FIX**: snip example.


## 2023-09-23

### Changes

---

Packages with breaking changes:

- There are no breaking changes in this release.

Packages with other changes:

- [`flutter_savgol` - `v0.0.2+1`](#flutter_savgol---v0021)

---

#### `flutter_savgol` - `v0.0.2+1`

- **FIX**: something.


## 2023-09-23

### Changes

---

Packages with breaking changes:

- There are no breaking changes in this release.

Packages with other changes:

- [`flutter_savgol` - `v0.0.2`](#flutter_savgol---v002)
- [`savgol` - `v1.1.0`](#savgol---v110)

---

#### `flutter_savgol` - `v0.0.2`

- **FEAT**: initial.

#### `savgol` - `v1.1.0`

- **FEAT**: initial.

Loading

0 comments on commit cea967d

Please sign in to comment.