133 lines
3.8 KiB
Dart
133 lines
3.8 KiB
Dart
// ignore_for_file: avoid_print
|
|
|
|
import 'dart:io';
|
|
|
|
void main() async {
|
|
Directory.current = Directory(Platform.script.toFilePath()).parent.parent;
|
|
String flutterExecutable = Platform.isWindows ? 'flutter.bat' : 'flutter';
|
|
|
|
print("Build script for Ollama App by JHubi1");
|
|
print("Report issues at: https://github.com/JHubi1/ollama-app/issues");
|
|
|
|
print('----------');
|
|
|
|
print('Extracting version from pubspec.yaml ...');
|
|
var pubspec = File('pubspec.yaml');
|
|
var versionLine = await pubspec
|
|
.readAsLines()
|
|
.then((lines) => lines.firstWhere((line) => line.contains('version')));
|
|
var version = versionLine.split(':').last.trim().split('+').first.trim();
|
|
var versionCode = versionLine.split(':').last.trim().split('+')[1].trim();
|
|
print(
|
|
"Building Ollama App v$version (build $versionCode) - this may take a while");
|
|
|
|
print('----------');
|
|
|
|
await execute('Android', flutterExecutable, [
|
|
'build',
|
|
'apk',
|
|
'--obfuscate',
|
|
'--split-debug-info=build\\debugAndroid'
|
|
]);
|
|
|
|
// ----------
|
|
|
|
// await execute('Windows x64', flutterExecutable, [
|
|
// 'build',
|
|
// 'windows',
|
|
// '--obfuscate',
|
|
// '--split-debug-info=build\\debugWindows'
|
|
// ]);
|
|
|
|
// await execute(
|
|
// 'Windows x64 installer',
|
|
// 'iscc.exe',
|
|
// ['windows_installer/ollama.iss', '/qp', '/dAppVersion=$version'],
|
|
// " > Inno Setup is not installed. Please install it from https://www.jrsoftware.org/isdl.php#stable\n Then add the Inno Setup directory to your PATH environment variable.");
|
|
|
|
// ----------
|
|
|
|
// not supported by flutter yet
|
|
|
|
// await execute('Windows arm64', flutterExecutable, [
|
|
// 'build',
|
|
// 'windows',
|
|
// '--obfuscate',
|
|
// '--split-debug-info=build\\debugWindows'
|
|
// ]);
|
|
|
|
// await execute(
|
|
// 'Windows arm64 installer',
|
|
// 'iscc.exe',
|
|
// [
|
|
// 'windows_installer/ollama.iss',
|
|
// '/qp',
|
|
// '/dAppVersion=$version',
|
|
// '/dAppArchitectures=arm64'
|
|
// ],
|
|
// " > Inno Setup is not installed. Please install it from https://www.jrsoftware.org/isdl.php#stable\n Then add the Inno Setup directory to your PATH environment variable.");
|
|
|
|
print('----------');
|
|
|
|
stdout.write('Copying build output to build\\.output ');
|
|
try {
|
|
var outputDir = Directory('build\\.output');
|
|
if (await outputDir.exists()) {
|
|
await outputDir.delete(recursive: true);
|
|
}
|
|
await outputDir.create();
|
|
|
|
await copyFile('build\\app\\outputs\\flutter-apk\\app-release.apk',
|
|
'build\\.output\\ollama-android-v$version.apk');
|
|
await copyFile(
|
|
'build\\windows\\x64\\runner\\ollama-windows-x64-v$version.exe',
|
|
'build\\.output\\ollama-windows-x64-v$version.exe');
|
|
print('- done');
|
|
} catch (_) {
|
|
print('- failed');
|
|
}
|
|
|
|
print("Output: ${Directory('build\\.output').absolute.path.toString()}");
|
|
|
|
stdout.write('Done. Press Enter to exit. ');
|
|
|
|
stdin.readLineSync();
|
|
}
|
|
|
|
Future<void> copyFile(String sourcePath, String destinationPath) async {
|
|
var sourceFile = File(sourcePath);
|
|
if (await sourceFile.exists()) {
|
|
await sourceFile.copy(destinationPath);
|
|
}
|
|
}
|
|
|
|
Future<void> execute(String title, String command, List<String> arguments,
|
|
[String? errorText]) async {
|
|
stdout.write('$title ');
|
|
ProcessResult process;
|
|
try {
|
|
process = await Process.run(command, arguments);
|
|
} catch (e) {
|
|
print('- failed');
|
|
print("> Errors:");
|
|
stdout.write('\x1B[31m');
|
|
print(e);
|
|
stdout.write('\x1B[0m');
|
|
if (errorText != null) {
|
|
print(errorText);
|
|
}
|
|
return;
|
|
}
|
|
|
|
process.exitCode != 0 ? print('- failed') : print('- done');
|
|
if (process.exitCode != 0) {
|
|
print("> Errors:");
|
|
stdout.write('\x1B[31m');
|
|
process.stderr.toString().split('\n').forEach(print);
|
|
stdout.write('\x1B[0m');
|
|
if (errorText != null) {
|
|
print(errorText);
|
|
}
|
|
}
|
|
}
|