getMixCliTool method

Future<ElixirMixCliTool> getMixCliTool()

Implementation

Future<ElixirMixCliTool> getMixCliTool() async {
  final exe = await Directory.systemTemp.getUniqueFile(
    prefix: "elixir_mix",
    extension: Platform.isWindows ? "bat" : "sh",
  );

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

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