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.
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
RwLockon alazy_static. Simple parsing of TOML configurations to serde-parsed global structures which can be dynamically updated at runtime. - error handling: generic
Errortype based on thefailurecrate, and a unified error-handling subsystem. - logging: uses the
logandsimplelogcrates to automatically configure application-level logging, presently to standard output or files. - secrets management: the (optional)
secretsmodule includes aSecrettype which derives serde'sDeserializeand 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.