appcore-args 1.0.2

Dependency-free bounded argument parsing, generated help and shell completion
Documentation
# appcore-args

`RawArgs::from_env` valida cada palavra antes de retê-la e para no primeiro
argumento inválido. Não coleta o restante de argv em um buffer do AppCore antes
de aplicar os limites de quantidade e bytes.

```text
       #######
    ###       ###
   ##   ## ##   ##
        ## ##
   ##   ## ##   ##
     ###########
```

Autor: [dnettoRaw](https://github.com/dnettoRaw)

[English]README.en.md | [Français]README.fr.md

Primitivas sem dependências e multiplataforma para parsing de linha de
comando, ajuda, validação e completion de shell em executáveis AppCore.

O crate possui SemVer independente, não tem dependências e pode ser consumido
por qualquer executável Rust sem o AppCore Runtime.

`appcore-args` oferece comandos aninhados, opções herdadas, argumentos tipados e
limitados, erros determinísticos, ajuda gerada, candidatos de completion e
scripts dinâmicos para Bash, Zsh, Fish e PowerShell. Ele não executa
comportamento do Runtime e não usa código `unsafe`.

```rust
use appcore_args::{ArgumentSpec, CliParser, CliSpec, CommandSpec, OptionSpec, RawArgs};

let spec = CliSpec::new("demo")
    .option(OptionSpec::flag("verbose").short('v'))
    .command(CommandSpec::new("run").argument(
        ArgumentSpec::new("mode").required(true).possible_value("safe"),
    ));
let parsed = CliParser::new(&spec)
    .parse(&RawArgs::parse(["run", "safe", "-v"])? )?;

assert_eq!(parsed.command_path(), &["run"]);
assert!(parsed.has_flag("verbose"));
# Ok::<(), Box<dyn std::error::Error>>(())
```

Veja o [guia em português](wiki/guide.pt.md), o
[exemplo minimo](wiki/examples/basic.pt.md) e o
[exemplo intermediario](wiki/examples/intermediate.pt.md). A documentação da API está no
[docs.rs](https://docs.rs/appcore-args).

Licença: MIT.

## Documentação estável

ID estável: **ACR-001**. Consulte o
[guia complementar de arquitetura e integração](https://wiki.appcore.dnettoraw.com/pt/crates/id/acr-001). Esse ID permanente
continua válido se a página da wiki mudar.