Skip to content

Instantly share code, notes, and snippets.

@kasperpeulen
Last active August 29, 2015 14:25
Show Gist options
  • Select an option

  • Save kasperpeulen/c63885c37e77e1c1ea32 to your computer and use it in GitHub Desktop.

Select an option

Save kasperpeulen/c63885c37e77e1c1ea32 to your computer and use it in GitHub Desktop.
A basic example of a command-based application.

#args:command_runner example

A basic example of a command-based application.

The command dart main.dart install [library] will add the library to the main.dart file. For example try dart main.dart install http:http.

Main library: args:command_runner
Main elements: CommandRunner CommandRunner.addCommand
Gist: https://gist.github.com/kasperpeulen/c63885c37e77e1c1ea32

import 'dart:io';
import 'package:args/command_runner.dart';
import 'package:grinder/grinder.dart' as grind;
main(List<String> arguments) {
CommandRunner runner = new CommandRunner("dartnow", "Gist manager.")
..addCommand(new InstallCommand());
runner.run(arguments);
}
class InstallCommand extends Command {
final name = "install";
final description = "Install a library to the gist.";
String get package => argResults.rest[0].split(':')[0];
String get library => argResults.rest[0].split(':')[1];
InstallCommand();
void run() {
if (package != 'dart') {
grind.run('pub', arguments: 'global run den install $package'.split(' '));
grind.run('pub', arguments: 'get'.split(' '));
}
addLibray();
String printMessage = package == 'dart'
? 'Added $package:$library to main.dart'
: 'Added package:$package/$library.dart to main.dart';
print(printMessage);
}
void addLibray() {
File mainFile = new File('main.dart');
String mainFileString = mainFile.readAsStringSync();
String importString = package == 'dart'
? "import '$package:$library';"
: "import 'package:$package/$library.dart';";
mainFile.writeAsStringSync('$importString\n$mainFileString');
}
}
name: args.command_runner__CommandRunner_CommandRunner.addCommand
description: |
A basic example of a command-based application.
The command `dart main.dart install [library]` will add the library to the
`main.dart` file. For example try `dart main.dart install http:http`.
homepage: https://gist.github.com/kasperpeulen/c63885c37e77e1c1ea32
environment:
sdk: '>=1.0.0 <2.0.0'
dependencies:
args: '>=0.13.2 <0.14.0'
grinder: '>=0.7.2 <0.8.0'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment