shell 2.0.0 copy "shell: ^2.0.0" to clipboard
shell: ^2.0.0 copied to clipboard

Wrapper over `dart:io` [Process] API's that supports additional features.

example/main.dart

import 'dart:io';
import 'package:file/local.dart';
import 'package:shell/shell.dart';

main() async {
  var fs = const LocalFileSystem();
  var shell = new Shell();
  var password = Platform.environment['PASSWORD'];
  print('Password: $password');

  // Pipe results to files, easily.
  var echo = await shell.start('echo', arguments: ['hello world']);
  await echo.stdout.writeToFile(fs.file('hello.txt'));
  await echo.stderr.drain();

  // You can run a program, and expect a certain exit code.
  //
  // If a valid exit code is returned, stderr is drained, and
  // you don't have to manually.
  //
  // Otherwise, a StateError is thrown.
  var find = await shell.start('find', arguments: ['.']);
  await find.expectExitCode([0]); // Can also call find.expectZeroExit()

  // Dump outputs.
  print(await find.stdout.readAsString());

  // You can also run a process and immediately receive a string.
  var pwd = await shell.startAndReadAsString('pwd', arguments: []);
  print('cwd: $pwd');

  // Navigation allows you to `cd`.
  shell.navigate('./lib/src');
  pwd = await shell.startAndReadAsString('pwd', arguments: []);
  print('cwd: $pwd');

  // We can make a separate shell, with the same settings.
  var forked = new Shell.copy(shell)
    ..sudo = true
    ..password = password;

  // Say hi, as an admin!
  var superEcho = await forked.start('echo', arguments: ['hello, admin!']);
  await superEcho.expectExitCode([0, 1]);
  await superEcho.stdout.writeToFile(fs.file('hello_sudo.txt'));
}
25
likes
120
pub points
83%
popularity

Publisher

unverified uploader

Wrapper over `dart:io` [Process] API's that supports additional features.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

file, path, platform, process

More

Packages that depend on shell