Pass argv

This commit is contained in:
Feodor Fitsner 2024-10-31 13:45:18 -07:00
parent dddf2f4b9b
commit d8f0832e3a
1 changed files with 20 additions and 18 deletions

View File

@ -22,7 +22,6 @@ const pythonModuleName = "{{ cookiecutter.python_module_name }}";
final hideLoadingPage = final hideLoadingPage =
bool.tryParse("{{ cookiecutter.hide_loading_animation }}".toLowerCase()) ?? bool.tryParse("{{ cookiecutter.hide_loading_animation }}".toLowerCase()) ??
true; true;
const outLogFilename = "console.log";
const errorExitCode = 100; const errorExitCode = 100;
List<CreateControlFactory> createControlFactories = [ List<CreateControlFactory> createControlFactories = [
@ -55,8 +54,7 @@ if os.getenv("FLET_PLATFORM") == "android":
ssl._create_default_https_context = create_default_context ssl._create_default_https_context = create_default_context
app_temp_dir = os.getenv("FLET_APP_TEMP") out_file = open("{outLogFilename}", "w+", buffering=1)
out_file = open(os.path.join(app_temp_dir, "$outLogFilename"), "w+", buffering=1)
callback_socket_addr = os.getenv("FLET_PYTHON_CALLBACK_SOCKET_ADDR") callback_socket_addr = os.getenv("FLET_PYTHON_CALLBACK_SOCKET_ADDR")
if ":" in callback_socket_addr: if ":" in callback_socket_addr:
@ -78,7 +76,7 @@ sys.exit = flet_exit
ex = None ex = None
try: try:
sys.argv = [{argv}] sys.argv = {argv}
runpy.run_module("{module_name}", run_name="__main__") runpy.run_module("{module_name}", run_name="__main__")
except Exception as e: except Exception as e:
ex = e ex = e
@ -87,13 +85,15 @@ except Exception as e:
sys.exit(0 if ex is None else $errorExitCode) sys.exit(0 if ex is None else $errorExitCode)
"""; """;
String outLogFilename = "";
// global vars // global vars
String pageUrl = ""; String pageUrl = "";
String assetsDir = ""; String assetsDir = "";
String appDir = ""; String appDir = "";
Map<String, String> environmentVariables = {}; Map<String, String> environmentVariables = {};
void main([List<String>? args]) async { void main(List<String> args) async {
if (isProduction) { if (isProduction) {
// ignore: avoid_returning_null_for_void // ignore: avoid_returning_null_for_void
debugPrint = (String? message, {int? wrapWidth}) => null; debugPrint = (String? message, {int? wrapWidth}) => null;
@ -113,8 +113,7 @@ void main([List<String>? args]) async {
pageUrl: pageUrl, pageUrl: pageUrl,
assetsDir: assetsDir, assetsDir: assetsDir,
hideLoadingPage: hideLoadingPage, hideLoadingPage: hideLoadingPage,
createControlFactories: createControlFactories createControlFactories: createControlFactories)
)
: FutureBuilder( : FutureBuilder(
future: runPythonApp(args), future: runPythonApp(args),
builder: builder:
@ -129,11 +128,10 @@ void main([List<String>? args]) async {
} else { } else {
// no result of error // no result of error
return FletApp( return FletApp(
pageUrl: pageUrl, pageUrl: pageUrl,
assetsDir: assetsDir, assetsDir: assetsDir,
hideLoadingPage: hideLoadingPage, hideLoadingPage: hideLoadingPage,
createControlFactories: createControlFactories createControlFactories: createControlFactories);
);
} }
}); });
} else if (snapshot.hasError) { } else if (snapshot.hasError) {
@ -188,6 +186,8 @@ Future prepareApp() async {
environmentVariables["FLET_APP_DATA"] = appDataPath; environmentVariables["FLET_APP_DATA"] = appDataPath;
environmentVariables["FLET_APP_TEMP"] = appTempPath; environmentVariables["FLET_APP_TEMP"] = appTempPath;
outLogFilename = path.join(appTempPath, "console.log");
environmentVariables["FLET_PLATFORM"] = environmentVariables["FLET_PLATFORM"] =
defaultTargetPlatform.name.toLowerCase(); defaultTargetPlatform.name.toLowerCase();
@ -206,11 +206,13 @@ Future prepareApp() async {
return ""; return "";
} }
Future<String?> runPythonApp(List<String>? args) async { Future<String?> runPythonApp(List<String> args) async {
var argvItems = args.map((a) => "\"${a.replaceAll('"', '\\"')}\"");
var argvItems = args?.map((a) => "\"${a.replaceAll('"', '\\"')}\""); var argv = "[${argvItems.isNotEmpty ? argvItems.join(',') : '""'}]";
var argv = "[${argvItems != null ? argvItems.join(',') : ''}]"; var script = pythonScript
var script = pythonScript.replaceAll('{module_name}', pythonModuleName).replaceAll('{argv}', argv); .replaceAll("{outLogFilename}", outLogFilename)
.replaceAll('{module_name}', pythonModuleName)
.replaceAll('{argv}', argv);
var completer = Completer<String>(); var completer = Completer<String>();