abscissa 0.0.1

Application microframework with support for command-line option parsing, configuration, error handling, logging, and shell interactions
Documentation

Abscissa

Crate Docs Apache 2.0 Licensed Build Status Appveyor Status

Abscissa is a microframework for building Rust applications (either CLI tools or network/web services), aiming to provide a large number of features with a minimal number of dependencies, and with a strong focus on security.

Documentation

Features

  • command-line option parsing: simple declarative option parser based on (i.e. forked from) gumdrop. The option parser in Abcissa contains numerous improvements which provide better UX and tighter integration with the other parts of the framework (e.g. overriding configuration settings using command-line options).
  • configuration: declarative global configuration support using an RwLock on a lazy_static. Simple parsing of TOML configurations to serde-parsed global structures which can be dynamically updated at runtime.
  • error handling: generic Error type based on the failure crate, and a unified error-handling subsystem.
  • logging: uses the log and simplelog crates to automatically configure application-level logging, presently to standard output or files.
  • secrets management: the (optional) secrets module includes a Secret type which derives serde's Deserialize and can be used to represent secret values parsed from configuration files or elsewhere (e.g. credentials loaded from the environment or network requests)
  • shell interactions: support for colored terminal output (with color support autodetection). Useful for Cargo-like status messages with easy-to-use macros.

Frequently Asked Questions (FAQ)

Q1: Why is it called "abscissa"?

A1: An abscissa represents the elevation of a point above the y-axis. In that regard, "Abscissa" can be thought of as a pun about getting off the ground, or elevating your project.

The word "abscissa" is also the key to the Kryptos K2 panel.

License

The abscissa crate is distributed under the terms of the Apache License (Version 2.0).

Parts of this code were taken from the following projects, which have agreed to license their code under the Apache License (Version 2.0):

See LICENSE file in the toplevel directory for more information.