start method

void start({
  1. Progress? progress,
  2. bool runInShell = false,
  3. bool detached = false,
  4. bool terminal = false,
  5. bool nothrow = false,
  6. bool privileged = false,
  7. String? workingDirectory,
})

Runs the contents of this String as a command line application.

DCli performs Glob expansion on command arguments. See run for details.

Use runInShell if the command needs to be run inside an OS shell (e.g bash). runInShell defaults to false.

Use detached to start the application as a fully detached subprocess.

You cannot process output from a detached process and it will continuing running after the dcli process exits. The detached process is also detached from the console and as such no output from the process will be visible.

Use terminal when you need the process attached to a terminal. When attached to a terminal you will not be able to process any of the output from the child process. (e.g. forEach won't work.)

You can NOT use terminal and detached at the same time.

Use workingDirectory to specify the directory the process should be run from.

If you need to run a command with escalated privileged then set the privileged argument to true. On Linux this equates to using the sudo command. The advantage of using the 'privileged' option is that it will first check if you are already running in a privileged environment. This is extremly useful if you are running in the likes of a Docker container that doesn't implement sudo but in which you are already running as root.

Any environment variables you set via env'xxx' will be passed to the new process.

If you need to pass an argument to your application that contains spaces then use nested quotes: e.g.

'wc "fred nurk.text"'.start(terminal: true);

See run if you just need to run a process with all the defaults. forEach to capture output to stdout and stderr toList to capture stdout and stderr to List<String> firstLine - returns just the first line written to stdout or stderr. lastLine - returns just the last line written to stdout or stderr. parser - returns a parser with the captured output ready to be interpreted as one of several file types.

Implementation

void start({
  Progress? progress,
  bool runInShell = false,
  bool detached = false,
  bool terminal = false,
  bool nothrow = false,
  bool privileged = false,
  String? workingDirectory,
}) {
  cmd.start(this,
      progress: progress ?? Progress(print, stderr: printerr),
      runInShell: runInShell,
      detached: detached,
      terminal: terminal,
      nothrow: nothrow,
      privileged: privileged,
      workingDirectory: workingDirectory);
}