createPlatformScript static method

File createPlatformScript({
  1. required String unixContents,
  2. required String windowsContents,
  3. String? scriptPrefix,
  4. String? unixScriptInterpreter = "/bin/sh",
  5. bool setUnixPermissions = true,
  6. int? windowsCodePage = WindowsCodePage.utf8,
  7. WindowsScriptType windowsScriptType = WindowsScriptType.batch,
})

Implementation

static io.File createPlatformScript({
  required String unixContents,
  required String windowsContents,
  String? scriptPrefix,
  String? unixScriptInterpreter = "/bin/sh",
  bool setUnixPermissions = true,
  int? windowsCodePage = WindowsCodePage.utf8,
  WindowsScriptType windowsScriptType = WindowsScriptType.batch,
}) {
  final script = io.Directory.systemTemp.getUniqueFileSync(
    prefix: scriptPrefix,
    extension: io.Platform.isWindows ? windowsScriptType._extension : "sh",
  );

  if (io.Platform.isWindows) {
    createWindowsScript(
      file: script,
      type: windowsScriptType,
      windowsCodePage: windowsCodePage,
      contents: windowsContents,
    );
  } else {
    if (null != unixScriptInterpreter) {
      unixContents = """
#! $unixScriptInterpreter

$unixContents
""";
    }

    script.writeAsStringSync(
      unixContents,
      flush: true,
      mode: io.FileMode.writeOnly,
      encoding: io.systemEncoding,
    );

    final chmod = ChmodCliTool();
    if (setUnixPermissions && chmod.existsSync()) {
      chmod.setPermissionsSync(
        filepath: script.path,
        owner: {read, write, execute},
        group: {read, execute},
        other: {read, execute},
      );
    }
  }

  return script;
}