From 150380fbcf0cd0be3d02e6ee40909d5a8edac59c Mon Sep 17 00:00:00 2001 From: DJDoubleD <34967020+DJDoubleD@users.noreply.github.com> Date: Mon, 22 Jul 2024 00:59:37 +0200 Subject: [PATCH] add build helper script --- README.md | 15 +++- custom_navigator | 2 +- equalizer_flutter | 2 +- lib/settings.g.dart | 168 +++++++++++++++++++++++++++++++++++++++++++ move_to_background | 2 +- run_build_runner.ps1 | 45 ++++++++++++ 6 files changed, 230 insertions(+), 4 deletions(-) create mode 100644 lib/settings.g.dart create mode 100644 run_build_runner.ps1 diff --git a/README.md b/README.md index 133b3f3..3ee4b71 100644 --- a/README.md +++ b/README.md @@ -46,12 +46,25 @@ git submodule init git submodule update ``` -Compile: +Build generated files: + +Use following script to (re)build generated classes in submodules and main project: + +```powershell +.\run_build_runner.ps1 +``` + +or run these commands manually in the relevant submodules to (re)build the generated files: ```powershell flutter pub get dart run build_runner clean dart run build_runner build --delete-conflicting-outputs +``` + +Compile: + +```powershell flutter build apk --split-per-abi --release ``` diff --git a/custom_navigator b/custom_navigator index 8be4f92..a8f15ef 160000 --- a/custom_navigator +++ b/custom_navigator @@ -1 +1 @@ -Subproject commit 8be4f92387ed47f9e4590f4b3c8a022617ae2ddc +Subproject commit a8f15ef7574d1356aa7a82107aef103b655c8d98 diff --git a/equalizer_flutter b/equalizer_flutter index 27ef0a2..2fd74d8 160000 --- a/equalizer_flutter +++ b/equalizer_flutter @@ -1 +1 @@ -Subproject commit 27ef0a2b16b21b0138003640e3c5f1b57a430583 +Subproject commit 2fd74d8a6a95d0e6a07a07210f051c4ead283597 diff --git a/lib/settings.g.dart b/lib/settings.g.dart new file mode 100644 index 0000000..291b025 --- /dev/null +++ b/lib/settings.g.dart @@ -0,0 +1,168 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'settings.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +Settings _$SettingsFromJson(Map json) => Settings( + downloadPath: json['downloadPath'] as String?, + arl: json['arl'] as String?, + ) + ..language = json['language'] as String? + ..ignoreInterruptions = json['ignoreInterruptions'] as bool? ?? false + ..enableEqualizer = json['enableEqualizer'] as bool? ?? false + ..wifiQuality = + $enumDecodeNullable(_$AudioQualityEnumMap, json['wifiQuality']) ?? + AudioQuality.MP3_320 + ..mobileQuality = + $enumDecodeNullable(_$AudioQualityEnumMap, json['mobileQuality']) ?? + AudioQuality.MP3_128 + ..offlineQuality = + $enumDecodeNullable(_$AudioQualityEnumMap, json['offlineQuality']) ?? + AudioQuality.FLAC + ..downloadQuality = + $enumDecodeNullable(_$AudioQualityEnumMap, json['downloadQuality']) ?? + AudioQuality.FLAC + ..downloadFilename = + json['downloadFilename'] as String? ?? '%artist% - %title%' + ..albumFolder = json['albumFolder'] as bool? ?? true + ..artistFolder = json['artistFolder'] as bool? ?? true + ..albumDiscFolder = json['albumDiscFolder'] as bool? ?? false + ..overwriteDownload = json['overwriteDownload'] as bool? ?? false + ..downloadThreads = (json['downloadThreads'] as num?)?.toInt() ?? 2 + ..playlistFolder = json['playlistFolder'] as bool? ?? false + ..downloadLyrics = json['downloadLyrics'] as bool? ?? true + ..trackCover = json['trackCover'] as bool? ?? false + ..albumCover = json['albumCover'] as bool? ?? true + ..nomediaFiles = json['nomediaFiles'] as bool? ?? false + ..artistSeparator = json['artistSeparator'] as String? ?? ', ' + ..singletonFilename = + json['singletonFilename'] as String? ?? '%artist% - %title%' + ..albumArtResolution = + (json['albumArtResolution'] as num?)?.toInt() ?? 1400 + ..tags = + (json['tags'] as List?)?.map((e) => e as String).toList() ?? + [ + 'title', + 'album', + 'artist', + 'track', + 'disc', + 'albumArtist', + 'date', + 'label', + 'isrc', + 'upc', + 'trackTotal', + 'bpm', + 'lyrics', + 'genre', + 'contributors', + 'art' + ] + ..theme = + $enumDecodeNullable(_$ThemesEnumMap, json['theme']) ?? Themes.Dark + ..useSystemTheme = json['useSystemTheme'] as bool? ?? false + ..colorGradientBackground = + json['colorGradientBackground'] as bool? ?? true + ..blurPlayerBackground = json['blurPlayerBackground'] as bool? ?? false + ..font = json['font'] as String? ?? 'Deezer' + ..lyricsVisualizer = json['lyricsVisualizer'] as bool? ?? false + ..displayMode = (json['displayMode'] as num?)?.toInt() + ..primaryColor = + Settings._colorFromJson((json['primaryColor'] as num?)?.toInt()) + ..useArtColor = json['useArtColor'] as bool? ?? false + ..deezerLanguage = json['deezerLanguage'] as String? ?? 'en' + ..deezerCountry = json['deezerCountry'] as String? ?? 'US' + ..logListen = json['logListen'] as bool? ?? false + ..proxyAddress = json['proxyAddress'] as String? + ..lastFMUsername = json['lastFMUsername'] as String? + ..lastFMPassword = json['lastFMPassword'] as String? + ..spotifyClientId = json['spotifyClientId'] as String? + ..spotifyClientSecret = json['spotifyClientSecret'] as String? + ..spotifyCredentials = json['spotifyCredentials'] == null + ? null + : SpotifyCredentialsSave.fromJson( + json['spotifyCredentials'] as Map); + +Map _$SettingsToJson(Settings instance) => { + 'language': instance.language, + 'ignoreInterruptions': instance.ignoreInterruptions, + 'enableEqualizer': instance.enableEqualizer, + 'arl': instance.arl, + 'wifiQuality': _$AudioQualityEnumMap[instance.wifiQuality]!, + 'mobileQuality': _$AudioQualityEnumMap[instance.mobileQuality]!, + 'offlineQuality': _$AudioQualityEnumMap[instance.offlineQuality]!, + 'downloadQuality': _$AudioQualityEnumMap[instance.downloadQuality]!, + 'downloadPath': instance.downloadPath, + 'downloadFilename': instance.downloadFilename, + 'albumFolder': instance.albumFolder, + 'artistFolder': instance.artistFolder, + 'albumDiscFolder': instance.albumDiscFolder, + 'overwriteDownload': instance.overwriteDownload, + 'downloadThreads': instance.downloadThreads, + 'playlistFolder': instance.playlistFolder, + 'downloadLyrics': instance.downloadLyrics, + 'trackCover': instance.trackCover, + 'albumCover': instance.albumCover, + 'nomediaFiles': instance.nomediaFiles, + 'artistSeparator': instance.artistSeparator, + 'singletonFilename': instance.singletonFilename, + 'albumArtResolution': instance.albumArtResolution, + 'tags': instance.tags, + 'theme': _$ThemesEnumMap[instance.theme]!, + 'useSystemTheme': instance.useSystemTheme, + 'colorGradientBackground': instance.colorGradientBackground, + 'blurPlayerBackground': instance.blurPlayerBackground, + 'font': instance.font, + 'lyricsVisualizer': instance.lyricsVisualizer, + 'displayMode': instance.displayMode, + 'primaryColor': Settings._colorToJson(instance.primaryColor), + 'useArtColor': instance.useArtColor, + 'deezerLanguage': instance.deezerLanguage, + 'deezerCountry': instance.deezerCountry, + 'logListen': instance.logListen, + 'proxyAddress': instance.proxyAddress, + 'lastFMUsername': instance.lastFMUsername, + 'lastFMPassword': instance.lastFMPassword, + 'spotifyClientId': instance.spotifyClientId, + 'spotifyClientSecret': instance.spotifyClientSecret, + 'spotifyCredentials': instance.spotifyCredentials, + }; + +const _$AudioQualityEnumMap = { + AudioQuality.MP3_128: 'MP3_128', + AudioQuality.MP3_320: 'MP3_320', + AudioQuality.FLAC: 'FLAC', + AudioQuality.ASK: 'ASK', +}; + +const _$ThemesEnumMap = { + Themes.Light: 'Light', + Themes.Dark: 'Dark', + Themes.Deezer: 'Deezer', + Themes.Black: 'Black', +}; + +SpotifyCredentialsSave _$SpotifyCredentialsSaveFromJson( + Map json) => + SpotifyCredentialsSave( + accessToken: json['accessToken'] as String?, + refreshToken: json['refreshToken'] as String?, + scopes: + (json['scopes'] as List?)?.map((e) => e as String).toList(), + expiration: json['expiration'] == null + ? null + : DateTime.parse(json['expiration'] as String), + ); + +Map _$SpotifyCredentialsSaveToJson( + SpotifyCredentialsSave instance) => + { + 'accessToken': instance.accessToken, + 'refreshToken': instance.refreshToken, + 'scopes': instance.scopes, + 'expiration': instance.expiration?.toIso8601String(), + }; diff --git a/move_to_background b/move_to_background index c9432d6..600f91b 160000 --- a/move_to_background +++ b/move_to_background @@ -1 +1 @@ -Subproject commit c9432d688568d7ba3c453f982ce0bf397d1b0296 +Subproject commit 600f91b77430341fdd2ce100e42e8b6acf8b677b diff --git a/run_build_runner.ps1 b/run_build_runner.ps1 new file mode 100644 index 0000000..4939dbf --- /dev/null +++ b/run_build_runner.ps1 @@ -0,0 +1,45 @@ +# Main project directory +$mainProjectDir = Get-Location + +# Function to run build_runner commands +function Invoke-BuildRunner { + param ( + [string]$dir, + [string]$name + ) + Write-Host "Processing $name at $dir" -ForegroundColor Cyan + Set-Location $dir + + Write-Host "Running 'flutter pub get' for $name" -ForegroundColor Green + flutter pub get + + Write-Host "Running 'dart run build_runner clean' for $name" -ForegroundColor Green + dart run build_runner clean + + Write-Host "Running 'dart run build_runner build --delete-conflicting-outputs' for $name" -ForegroundColor Green + dart run build_runner build --delete-conflicting-outputs + + Write-Host "Running 'flutter clean' for $name" -ForegroundColor Green + flutter clean +} + +# Extract submodule paths from .gitmodules +$submodulePaths = git config --file .gitmodules --name-only --get-regexp path | ForEach-Object { + git config --file .gitmodules --get $_ +} | Where-Object { $_ -notmatch "http" } + +# Run build_runner for each submodule +foreach ($submodule in $submodulePaths) { + $submodulePath = Join-Path -Path $mainProjectDir -ChildPath $submodule + Invoke-BuildRunner $submodulePath "submodule $submodule" +} + +# Run build_runner for the main project +Invoke-BuildRunner $mainProjectDir "main project" + +# Clean and get dependencies for the main project again +Set-Location $mainProjectDir +Write-Host "Running 'flutter clean' for the main project" -ForegroundColor Yellow +flutter clean +Write-Host "Running 'flutter pub get' for the main project" -ForegroundColor Yellow +flutter pub get