Skip to content

fix: rename package + fix all CI failures #2

fix: rename package + fix all CI failures

fix: rename package + fix all CI failures #2

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
# ─────────────────────────────────────────────────────────────────────────────
# Job 1: Typecheck & Lint
# Verifies TypeScript compiles cleanly and ESLint passes on src/
# ─────────────────────────────────────────────────────────────────────────────
jobs:
typecheck-lint:
name: Typecheck & Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node 20
uses: actions/setup-node@v4
with:
node-version: 20
# No cache: yarn — we have no yarn.lock. npm is used in CI.
- name: Install dependencies
run: npm install --legacy-peer-deps
- name: Typecheck
run: npm run typecheck
- name: Lint
run: npm run lint
# ─────────────────────────────────────────────────────────────────────────────
# Job 2: Build
# Verifies bob compiles src/ to commonjs + esm + typescript outputs
# ─────────────────────────────────────────────────────────────────────────────
build:
name: Build Package
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node 20
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm install --legacy-peer-deps
- name: Build
run: npm run build
- name: Verify outputs exist
run: |
echo "=== CommonJS ==="
ls lib/commonjs/
echo "=== ESM ==="
ls lib/module/
echo "=== Types ==="
ls lib/typescript/src/
# ─────────────────────────────────────────────────────────────────────────────
# Job 3: Android — structure & manifest validation
# Full Kotlin compile requires a host app; we validate structure instead.
# ─────────────────────────────────────────────────────────────────────────────
android-validate:
name: Android Validate
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Validate Kotlin source files
run: |
echo "=== Kotlin source files ==="
find android/src -name "*.kt" | sort
echo "=== Checking required files exist ==="
required=(
"android/build.gradle"
"android/src/main/AndroidManifest.xml"
"android/src/main/java/com/rick427/backgroundtimer/BackgroundTimerModule.kt"
"android/src/main/java/com/rick427/backgroundtimer/BackgroundTimerPackage.kt"
"android/src/main/java/com/rick427/backgroundtimer/BackgroundTimerService.kt"
"android/src/main/java/com/rick427/backgroundtimer/AlarmReceiver.kt"
"android/src/main/java/com/rick427/backgroundtimer/BootReceiver.kt"
"android/src/main/java/com/rick427/backgroundtimer/TimerStore.kt"
"android/src/main/java/com/rick427/backgroundtimer/TimerData.kt"
)
for f in "${required[@]}"; do
if [ -f "$f" ]; then
echo " ✅ $f"
else
echo " ❌ MISSING: $f"
exit 1
fi
done
- name: Validate AndroidManifest permissions
run: |
echo "=== AndroidManifest.xml ==="
grep -E "uses-permission|service|receiver" android/src/main/AndroidManifest.xml
# Must declare foreground service permission
grep -q "FOREGROUND_SERVICE" android/src/main/AndroidManifest.xml && \
echo "✅ FOREGROUND_SERVICE declared" || \
(echo "❌ FOREGROUND_SERVICE missing" && exit 1)
# Must declare WakeLock
grep -q "WAKE_LOCK" android/src/main/AndroidManifest.xml && \
echo "✅ WAKE_LOCK declared" || \
(echo "❌ WAKE_LOCK missing" && exit 1)
- name: Validate namespace in build.gradle (AGP 8+ requirement)
run: |
grep -q 'namespace "com.rick427.backgroundtimer"' android/build.gradle && \
echo "✅ namespace declared" || \
(echo "❌ namespace missing from build.gradle (required for AGP 8+)" && exit 1)
# ─────────────────────────────────────────────────────────────────────────────
# Job 4: iOS — podspec & Swift source validation
# Full pod compile requires Xcode + RN installed. We do structural checks.
# ─────────────────────────────────────────────────────────────────────────────
ios-validate:
name: iOS Validate
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Validate Swift source files
run: |
echo "=== Swift source files ==="
find ios -name "*.swift" -o -name "*.m" -o -name "*.h" | sort
echo "=== Checking required files exist ==="
required=(
"ios/RNBackgroundTimer.swift"
"ios/RNBackgroundTimer.m"
"ios/RNBackgroundTimer-Bridging-Header.h"
"ios/BGTaskManager.swift"
"ios/TimerData.swift"
"ios/TimerStore.swift"
"ios/background-timer.podspec"
)
for f in "${required[@]}"; do
if [ -f "$f" ]; then
echo " ✅ $f"
else
echo " ❌ MISSING: $f"
exit 1
fi
done
- name: Validate podspec structure
run: |
echo "=== background-timer.podspec ==="
cat ios/background-timer.podspec
# Check required podspec fields
grep -q "s.name" ios/background-timer.podspec && \
echo "✅ name declared" || (echo "❌ name missing" && exit 1)
grep -q "s.version" ios/background-timer.podspec && \
echo "✅ version declared" || (echo "❌ version missing" && exit 1)
grep -q "s.platforms.*ios.*13" ios/background-timer.podspec && \
echo "✅ iOS 13 minimum declared" || \
(echo "❌ iOS 13 minimum missing from podspec" && exit 1)
grep -q "React-Core" ios/background-timer.podspec && \
echo "✅ React-Core dependency declared" || \
(echo "❌ React-Core missing" && exit 1)
- name: Validate BGTaskScheduler usage in Swift
run: |
grep -q "BGTaskScheduler" ios/BGTaskManager.swift && \
echo "✅ BGTaskScheduler used in BGTaskManager" || \
(echo "❌ BGTaskScheduler not found" && exit 1)
grep -q "beginBackgroundTask" ios/RNBackgroundTimer.swift && \
echo "✅ UIBackgroundTask used" || \
(echo "❌ UIBackgroundTask not found" && exit 1)