p-hatan/ mirror

pub repository

mirror.p-hatan.ir

io

0.3.2+1

Utilities for the Dart VM Runtime.

Download archive

Readme

Contains utilities for the Dart VM's dart:io.

Build Status

Contributing

NOTE: Due to the changing nature of the Dart SDK (towards 2.0.0), running dartfmt requires the local executable:

$ pub run dart_style:format

Usage - io.dart

Files

isExecutable

Returns whether a provided file path is considered executable on the host operating system.

Processes

ExitCode

An enum-like class that contains known exit codes.

ProcessManager

A higher-level service for spawning and communicating with processes.

Use spawn to create a process with std[in|out|err] forwarded by default
/// Runs `dartfmt` commands and `pub publish`.
Future<Null> main() async {
  final manager = new ProcessManager();
  
  // Runs dartfmt --version and outputs the result via stdout.
  print('Running dartfmt --version');
  var spawn = await manager.spawn('dartfmt', ['--version']);
  await spawn.exitCode;
  
  // Runs dartfmt -n . and outputs the result via stdout.
  print('Running dartfmt -n .');
  spawn = await manager.spawn('dartfmt', ['-n', '.']);
  await spawn.exitCode;
  
  // Runs pub publish. Upon hitting a blocking stdin state, you may directly
  // output to the processes's stdin via your own, similar to how a bash or
  // shell script would spawn a process.
  print('Running pub publish');
  spawn = await manager.spawn('pub', ['publish']);
  await spawn.exitCode;
  
  // Closes stdin for the entire program.
  await sharedStdIn.terminate();
}

sharedStdIn

A safer version of the default stdin stream from dart:io that allows a subscriber to cancel their subscription, and then allows a new subscriber to start listening. This differs from the default behavior where only a single listener is ever allowed in the application lifecycle:

test('should allow multiple subscribers', () async {
  final logs = <String>[];
  final asUtf8 = sharedStdIn.transform(UTF8.decoder);
  // Wait for input for the user.
  logs.add(await asUtf8.first);
  // Wait for more input for the user.
  logs.add(await asUtf8.first);
  expect(logs, ['Hello World', 'Goodbye World']);
});

For testing, an instance of SharedStdIn may be created directly.

Usage - ansi.dart

import 'dart:io' as io;
import 'package:io/ansi.dart';

void main() {
  // To use one style, call the `wrap` method on one of the provided top-level
  // values.
  io.stderr.writeln(red.wrap("Bad error!"));

  // To use multiple styles, call `wrapWith`.
  print(wrapWith('** Important **', [red, styleBold, styleUnderlined]));

  // The wrap functions will simply return the provided value unchanged if
  // `ansiOutputEnabled` is false.
  //
  // You can override the value `ansiOutputEnabled` by wrapping code in
  // `overrideAnsiOutput`.
  overrideAnsiOutput(false, () {
    assert('Normal text' == green.wrap('Normal text'));
  });
}
Changelog

0.3.2+1

  • ansi.dart

    • The "forScript" code paths now ignore the ansiOutputEnabled value. Affects the escapeForScript property on AnsiCode and the wrap and wrapWith functions when forScript is true.

0.3.2

  • ansi.dart

    • Added forScript named argument to top-level wrapWith function.

    • AnsiCode

      • Added String get escapeForScript property.

      • Added forScript named argument to wrap function.

0.3.1

  • Added SharedStdIn.nextLine (similar to readLineSync) and lines:
main() async {
  // Prints the first line entered on stdin.
  print(await sharedStdIn.nextLine());
  
  // Prints all remaining lines.
  await for (final line in sharedStdIn.lines) {
    print(line);
  }
}
  • Added a copyPath and copyPathSync function, similar to cp -R.

  • Added a dependency on package:path.

  • Added the remaining missing arguments to ProcessManager.spawnX which forward to Process.start. It is now an interchangeable function for running a process.

0.3.0

  • BREAKING CHANGE: The arguments argument to ProcessManager.spawn is now positional (not named) and required. This makes it more similar to the built-in Process.start, and easier to use as a drop in replacement:
main() {
  processManager.spawn('dart', ['--version']);
}
  • Fixed a bug where processes created from ProcessManager.spawn could not have their stdout/stderr read through their respective getters (a runtime error was always thrown).

  • Added ProcessMangaer#spawnBackground, which does not forward stdin.

  • Added ProcessManager#spawnDetached, which does not forward any I/O.

  • Added the shellSplit() function, which parses a list of arguments in the same manner as the POSIX shell.

0.2.0

  • Initial commit of...
    • FutureOr<bool> String isExecutable(path).
    • ExitCode
    • ProcessManager and Spawn
    • sharedStdIn and SharedStdIn
    • ansi.dart library with support for formatting terminal output

Installing

export PUB_HOSTED_URL=https://pub.mirror.p-hatan.ir
flutter pub add io
pubspec.yaml
name: io
description: >
  Utilities for the Dart VM Runtime.
version: 0.3.2+1
author: Dart Team <misc@dartlang.org>
homepage: https://github.com/dart-lang/io

environment:
  sdk: ">=1.22.0 <2.0.0"

dependencies:
  charcode: ^1.0.0
  meta: ^1.0.2
  path: ^1.5.1
  string_scanner: ">=0.1.5 <2.0.0"

dev_dependencies:
  dart_style: ^1.0.7
  test: ^0.12.0
  test_descriptor: ^1.0.0

Version history

VersionPublishedArchiveSHA-256
0.1.0-git2014-01-31T16:10:59.148830ZDownloadfd6aa308fe299d09bf8e74b904263f63b7edf9ac8da93a8cd4858e89cde8efa3
0.2.02017-08-15T17:10:25.884227ZDownload44bb445d895a73f61153049267ffa213a7862a8ee740e0cad2cb31f684e4d0f5
0.3.02017-10-12T04:32:28.258ZDownload5345fffe9fd4d236b1d34e39d03df62e3a68ec31fb470b77d8d1448a95004599
0.3.12017-12-01T21:15:39.731331ZDownload1f3d7c8bd50e8c2be52b75613d3efcda9d270350d4b58f0ad5f6e44c728e14b7
0.3.22018-01-30T23:32:02.719943ZDownload00073236d20de7ab837bdbb50ff35570dd77b3923ffd0d4aef755877fed1446c
0.3.2+12018-01-31T18:45:24.703422ZDownloadafc155bdced987c61cde283722e1561ad03be90740f1326cef7ffd9cd14310a3
0.3.32018-07-12T19:26:48.356685ZDownloadea4d347b41c9fb92e2cfc6ea987fff30c122c90675f7bbfab86e92c3761d5168
0.3.42020-04-03T20:45:23.709663ZDownload69955598ee18b1044fc2e5199a146ea871f59561d5fdda5bdf4cc80644d81a04
0.3.52021-02-24T18:34:49.536151ZDownload9148a33dc8fa396d4fc434625fa606744fa42b2e8dfff5ce5609938cd01aecea
1.0.02021-02-25T17:00:59.881409ZDownload15a5436d2a02dc60e6dc2fb5d7dfaac08b7b137cff3d4bf3158d38ecab656b69
1.0.22021-07-04T22:14:25.483705ZDownloadf2aaffe700540920b889f56f1d74db58a6a0269df5207a7b8f4fb78c71c6244a
1.0.32021-07-07T18:14:00.760001ZDownload0d4c73c3653ab85bf696d51a9657604c900a370549196a91f33e4c39af760852
1.0.42023-01-19T21:51:23.745664ZDownload2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e
1.0.52024-12-10T12:22:29.241911ZDownloaddfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
1.1.02026-08-28T20:42:26.818695ZDownload2635216ca6a737e60de577ffa1a48a0bec76ca8a62917cfc1bb88c14c570646f

Dependencies

charcode "^1.0.0"

meta "^1.0.2"

path "^1.5.1"

string_scanner "\u003e=0.1.5 \u003c2.0.0"