getMixCliToolSync method

ElixirMixCliTool getMixCliToolSync()

Implementation

ElixirMixCliTool getMixCliToolSync() {
  final exe = Directory.systemTemp.getUniqueFileSync(
    prefix: "elixir_mix",
    extension: Platform.isWindows ? "bat" : "sh",
  );

  if (Platform.isWindows) {
    writeWindowsBatchScriptSync(
      file: exe,
      contents: """
REM Forward arguments to the actual executable
$executable ${_getMixCliToolStartArgs()} %*
""",
    );
  } else {
    exe.writeAsStringSync(
      """
#! /bin/sh
exec $executable ${_getMixCliToolStartArgs()} "\$@"
""",
      flush: true,
      mode: FileMode.writeOnly,
      encoding: systemEncoding,
    );
    ChmodCliTool().setPermissionsSync(
      filepath: exe.path,
      owner: {read, write, execute},
      group: {read, execute},
      other: {read, execute},
    );
  }

  return ElixirMixCliTool(
    executable: exe.path,
  );
}