Skip to content

Update Library manual #4

Update Library manual

Update Library manual #4

name: Update Library manual
on:
workflow_dispatch:
jobs:
update_framework:
runs-on: ubuntu-latest
steps:
- name: Checkout CEL Repository
uses: actions/checkout@v4
with:
path: android
- name: Grant execute permission for gradlew
run: chmod +x gradlew
working-directory: android
- name: Checkout CEL Rust Repository
uses: actions/checkout@v4
with:
repository: superwall/superscript
token: ${{ secrets.GITHUB_TOKEN }}
path: rust
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
- name: Extract Version Number from Cargo.toml
id: extract_version
run: |
version=$(grep '^version =' rust/Cargo.toml | sed -E 's/version = "(.*)"/\1/')
echo "VERSION_NUMBER=$version" >> $GITHUB_ENV
- name: Cache Rust toolchain
uses: actions/cache@v3
with:
path: |
~/.cargo
~/.rustup
key: ${{ runner.os }}-rust-toolchain-${{ hashFiles('**/rust-toolchain') }}
- name: Cache Cargo registry
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache Cargo build
uses: actions/cache@v3
with:
path: rust/target
key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-build-
- name: Install Rust (if not cached)
run: |
if [ ! -x "$(command -v rustup)" ]; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
fi
source $HOME/.cargo/env
shell: bash
- name: Install cross
run: cargo install cross --git https://github.com/cross-rs/cross
- name: Build Android Framework
run: |
chmod +x ./build_android.sh
./build_android.sh
working-directory: rust
- name: Replace binaries
run: |
rm -rf android/supercel/src/main/jniLibs/
mv rust/target/android/jniLibs android/supercel/src/main/jniLibs/
- name: Replace Kotlin File
run: |
rm -rf android/supercel/src/main/java/com/superwall/supercel/Cel.kt
mv rust/target/android/java/uniffi/cel/com/superwall/supercel/cel.kt android/supercel/src/main/java/com/superwall/supercel/CEL.kt
- name: Remove lines containing RequiresApi
run: |
sed -i '/RequiresApi/d' ./android/supercel/src/main/java/com/superwall/supercel/CEL.kt
- name: Build and publish
env:
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }}
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_KEY_PW}}
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SECRING }}
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_PW }}
run: ./gradlew publish
working-directory: android