Argv
A lightweight, production-ready command-line argument parser for Dart.
Features
- Flags & Options - Boolean flags and value options with validation
- Commands - Nested command structures (git-like CLIs)
- Validation - Required arguments, allowed values, typo suggestions
- Simple API - Fluent, chainable interface
Quick Start
import 'package:argv/argv.dart';
void main(List<String> args) {
final parser = Argv('myapp')
.flag('verbose', abbr: 'v', description: 'Verbose output')
.option('output', abbr: 'o', defaultValue: 'result.txt')
.positional('input');
final result = parser.run(args);
if (result.flag('verbose')) {
print('Processing ${result.positional('input')}...');
}
}
Commands
final git = Argv('git');
git.command('commit')
.option('message', abbr: 'm', required: true)
.flag('all', abbr: 'a')
.on((result) {
print('Committing: ${result.option('message')}');
});
git.run(['commit', '-m', 'Initial commit', '--all']);
Context
Define multiple on
functions for the same command (like a middleware).
void requireName(ArgvResult res) {
if(res.positional('name') == null) throw Exception('Missing name');
}
final mosaic = Argv('mosaic');
git.command('enable').on(requireName).on(...do something);
git.command('disable').on(requireName);
You can also build the context and access it from every on callback
void requireName(ArgvResult res) {
if(res.positional('name') == null) throw Exception('Missing name');
}
Future<void> register(ArgvResult res) async {
final ctx = await Context.load();
res.set(ctx);
}
final mosaic = Argv('mosaic');
git.command('enable').on(requireName).on(register).on((res) {
final ctx = res.get<Context>();
... use your ctx here
});
Installation
dependencies:
argv: ^1.0.0
Usage Examples
# Basic usage
myapp --verbose --output result.txt input.txt
# Commands with options
git commit -m "Fix bug" --all
docker run -d --name myapp nginx:latest
# Validation with suggestions
myapp --verbos # Error: Unknown argument --verbos. Did you mean --verbose?
Libraries
- argv
- This is a sample arg parser for building CLI application.