mirror of
https://github.com/FoggedLens/deflock-app.git
synced 2026-02-12 16:52:51 +00:00
Proper fix for building locally and through GH actions
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -92,7 +92,9 @@ Thumbs.db
|
||||
# Secrets or signing keys (add if used)
|
||||
*.keystore
|
||||
.env
|
||||
lib/keys.properties
|
||||
|
||||
# Local OSM client ID configuration (contains secrets)
|
||||
build_keys.conf
|
||||
|
||||
# ───────────────────────────────
|
||||
# For now - not targeting these
|
||||
|
||||
10
build_keys.conf.example
Normal file
10
build_keys.conf.example
Normal file
@@ -0,0 +1,10 @@
|
||||
# Local OSM client ID configuration for builds
|
||||
# Copy this file to build_keys.conf and fill in your values
|
||||
# This file is gitignored to keep your keys secret
|
||||
#
|
||||
# Get your client IDs from:
|
||||
# Production: https://www.openstreetmap.org/oauth2/applications
|
||||
# Sandbox: https://master.apis.dev.openstreetmap.org/oauth2/applications
|
||||
|
||||
OSM_PROD_CLIENTID=your_production_client_id_here
|
||||
OSM_SANDBOX_CLIENTID=your_sandbox_client_id_here
|
||||
61
do_builds.sh
61
do_builds.sh
@@ -4,6 +4,35 @@
|
||||
BUILD_IOS=true
|
||||
BUILD_ANDROID=true
|
||||
|
||||
# Function to read key=value from file
|
||||
read_from_file() {
|
||||
local key="$1"
|
||||
local file="build_keys.conf"
|
||||
|
||||
if [ ! -f "$file" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Read key=value pairs, ignoring comments and empty lines
|
||||
while IFS='=' read -r k v; do
|
||||
# Skip comments and empty lines
|
||||
if [[ "$k" =~ ^[[:space:]]*# ]] || [[ -z "$k" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Remove leading/trailing whitespace
|
||||
k=$(echo "$k" | xargs)
|
||||
v=$(echo "$v" | xargs)
|
||||
|
||||
if [ "$k" = "$key" ]; then
|
||||
echo "$v"
|
||||
return 0
|
||||
fi
|
||||
done < "$file"
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
# Parse arguments
|
||||
for arg in "$@"; do
|
||||
case $arg in
|
||||
@@ -18,11 +47,39 @@ for arg in "$@"; do
|
||||
echo " --ios Build only iOS"
|
||||
echo " --android Build only Android"
|
||||
echo " (default builds both)"
|
||||
echo ""
|
||||
echo "OSM client IDs must be configured in build_keys.conf"
|
||||
echo "See build_keys.conf.example for format"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Load client IDs from build_keys.conf
|
||||
if [ ! -f "build_keys.conf" ]; then
|
||||
echo "Error: build_keys.conf not found"
|
||||
echo "Copy build_keys.conf.example to build_keys.conf and fill in your OSM client IDs"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Loading OSM client IDs from build_keys.conf..."
|
||||
OSM_PROD_CLIENTID=$(read_from_file "OSM_PROD_CLIENTID")
|
||||
OSM_SANDBOX_CLIENTID=$(read_from_file "OSM_SANDBOX_CLIENTID")
|
||||
|
||||
# Check required keys
|
||||
if [ -z "$OSM_PROD_CLIENTID" ]; then
|
||||
echo "Error: OSM_PROD_CLIENTID not found in build_keys.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$OSM_SANDBOX_CLIENTID" ]; then
|
||||
echo "Error: OSM_SANDBOX_CLIENTID not found in build_keys.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build the dart-define arguments
|
||||
DART_DEFINE_ARGS="--dart-define=OSM_PROD_CLIENTID=$OSM_PROD_CLIENTID --dart-define=OSM_SANDBOX_CLIENTID=$OSM_SANDBOX_CLIENTID"
|
||||
|
||||
appver=$(grep "version:" pubspec.yaml | head -1 | cut -d ':' -f 2 | tr -d ' ' | cut -d '+' -f 1)
|
||||
echo
|
||||
echo "Building app version ${appver}..."
|
||||
@@ -30,7 +87,7 @@ echo
|
||||
|
||||
if [ "$BUILD_IOS" = true ]; then
|
||||
echo "Building iOS..."
|
||||
flutter build ios --no-codesign || exit 1
|
||||
flutter build ios --no-codesign $DART_DEFINE_ARGS || exit 1
|
||||
|
||||
echo "Converting .app to .ipa..."
|
||||
./app2ipa.sh build/ios/iphoneos/Runner.app || exit 1
|
||||
@@ -42,7 +99,7 @@ fi
|
||||
|
||||
if [ "$BUILD_ANDROID" = true ]; then
|
||||
echo "Building Android..."
|
||||
flutter build apk || exit 1
|
||||
flutter build apk $DART_DEFINE_ARGS || exit 1
|
||||
|
||||
echo "Moving Android files..."
|
||||
cp build/app/outputs/flutter-apk/app-release.apk "../deflock_v${appver}.apk" || exit 1
|
||||
|
||||
@@ -1,36 +1,16 @@
|
||||
// OpenStreetMap OAuth client IDs for this app.
|
||||
|
||||
import 'dart:io';
|
||||
|
||||
String _readFromProperties(String key) {
|
||||
final file = File('lib/keys.properties');
|
||||
if (!file.existsSync()) return '';
|
||||
|
||||
final lines = file.readAsLinesSync();
|
||||
for (final line in lines) {
|
||||
if (line.startsWith(key + '=')) {
|
||||
return line.substring(key.length + 1);
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
// These must be provided via --dart-define at build time.
|
||||
|
||||
String get kOsmProdClientId {
|
||||
const fromBuild = String.fromEnvironment('OSM_PROD_CLIENTID');
|
||||
if (fromBuild.isNotEmpty) return fromBuild;
|
||||
|
||||
final fromFile = _readFromProperties('OSM_PROD_CLIENTID');
|
||||
if (fromFile.isNotEmpty) return fromFile;
|
||||
|
||||
throw Exception('OSM_PROD_CLIENTID not configured');
|
||||
throw Exception('OSM_PROD_CLIENTID not configured. Use --dart-define=OSM_PROD_CLIENTID=your_id');
|
||||
}
|
||||
|
||||
String get kOsmSandboxClientId {
|
||||
const fromBuild = String.fromEnvironment('OSM_SANDBOX_CLIENTID');
|
||||
if (fromBuild.isNotEmpty) return fromBuild;
|
||||
|
||||
final fromFile = _readFromProperties('OSM_SANDBOX_CLIENTID');
|
||||
if (fromFile.isNotEmpty) return fromFile;
|
||||
|
||||
throw Exception('OSM_SANDBOX_CLIENTID not configured');
|
||||
throw Exception('OSM_SANDBOX_CLIENTID not configured. Use --dart-define=OSM_SANDBOX_CLIENTID=your_id');
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
# OpenStreetMap OAuth Client IDs
|
||||
# Copy this file to keys.properties and fill in your values for local development
|
||||
# These are used as fallback when environment variables are not provided via --dart-define.
|
||||
#
|
||||
# Get your client IDs from:
|
||||
# Production: https://www.openstreetmap.org/oauth2/applications
|
||||
# Sandbox: https://master.apis.dev.openstreetmap.org/oauth2/applications
|
||||
|
||||
OSM_PROD_CLIENTID=your_production_client_id_here
|
||||
OSM_SANDBOX_CLIENTID=your_sandbox_client_id_here
|
||||
Reference in New Issue
Block a user