clibu 1.1.2
clibu: ^1.1.2 copied to clipboard

Dart native js
Flutter Android iOS web

A tiny library to make the writing of command-line apps intuitive.

CLI 💻 #

Build Status

Making the writing of command-line apps in Dart intuitive. 💻

About 📚 #

Some time ago, I wanted to make a command-line tool in Dart. This is when I noticed that I didn't have a clue about how to make a responsive and "classic" command-line app. CLI covers this need. it allows you to make command-line apps in the way you are used to from GNU programs. Flags like --help or --version are provided out of the box.

Installation 📥 #

Adding to your project #

To add CLI to your project's dependencies, add this line to your project's pubspec.yaml:

From GitHub

depdencies:
  ...
  clibu:
    git: git://github.com/iamtheblackunicorn/cli.git

From Pub.dev

depdencies:
  ...
  clibu: ^1.1.2

The three dots represent anything else that you might have in the dependencies section. Having done that, re-fetch your project's dependencies by running this in the project's root directory:

$ dart pub get

Usage 🔨 #

Importing #

Import the command-line API like this:

import 'package:clibu/clibu.dart';

Import the API for files like this:

import 'package:clibu/files.dart';

API #

COMMAND-LINE API

class CommandLineApp

Key command-line app class. The entire app lives in this class.

void addArgument(String argumentName, String helpMessage, bool isActive)

Adds an argument to your app!

void appHelpMessage()

"Batteries-included" app help text! Prints help info about the app when the app is invoked with help, --help, or -h.

void appInfoMessage()

"Batteries-included" app info text! Prints info about the app when the app is invoked with info, --info, or -i.

void appVersionMessage()

"Batteries-included" app version text! Prints version info about the app when the app is invoked with version, --version, or -v.

bool argumentWasUsed(List

User method to check if an argument was used!

String getArgumentData(List

User method to fetch the data of an argument! This will only work if the isActive flag is true.

void runApp(List

This method runs the app! Batteries-included flags of help, info, and version.

FILES API

void runCommand(String shellCommand)

Runs a shell command and prints the output from STDERR and STDOUT.

String getFileContents(String filePath)

Returns the contents of a file as a string.

Map<String,dynamic> getJSONMap(String jsonString)

Returns a JSON string as a map.

String mapToJSON(Map<String,dynamic> jsonData)

Converts a Dart Map to a JSON string.

void writeToFile(String filePath, String fileContents)

Writes a string to a file.

bool fileExists(String filePath)

Checks whether a file exists.

void testFileFunctions()

A function to test all of the file functions.

Example 📲 #

This is what a minimal example using CLI Black Unicorn would look like.

/*
CLI by Alexander Abraham a.k.a. The Black Unicorn
licensed under the MIT license
*/

import 'package:clibu/clibu.dart';

// Inherits from the original class,
// "CommandLineApp".
class TestApp extends CommandLineApp {
  @override
  String appName = 'Test';
  @override
  String appVersion = '1.0';
  @override
  String appAuthor = 'The Black Unicorn';
  @override
  String appLicense = 'MIT license';
  @override
  Map<String, dynamic> argumentsDataBase = {};
}

// Function to execute when the option
// is called.
void greet(String name) {
  String greeting = 'Hello, $name!';
  print(greeting);
}

// Main entry point for the Dart VM.
void main(List<String> arguments) {
  TestApp myApp = TestApp();
  myApp.addArgument('--greet', 'greets the user with a specified name', true);
  if (myApp.argumentWasUsed(arguments, '--greet') == true) {
    greet(myApp.getArgumentData(arguments, '--greet'));
  }
  myApp.runApp(arguments); // finally running the app
}

Note 📜 #

  • CLI by Alexander Abraham a.k.a. The Black Unicorn
  • licensed under the MIT license
0
likes
110
pub points
43%
popularity

Publisher

blckunicorn.art

A tiny library to make the writing of command-line apps intuitive.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

dartdoc, pedantic

More

Packages that depend on clibu