1 unstable release
0.1.0 | Mar 5, 2024 |
---|
#1726 in Development tools
23KB
235 lines
PRSM - Project Script Manager
Have you ever had a utils/
directory with a bunch of scripts you ran to manage your project? Format a suite of different files types? Run various linters in sequence, or if you find yourself so daring, in parallel? Keeping all these scripts together can be a hassle and you might find yourself wanting to use some form of a script manager, typically within the language the scripts are in. So, for instance, if you have a collection of Python scripts managing your project you may want to use a script manager written in Python.
This is what that is, but it's in Rust.
lib.rs
:
PRSM - Project Script Manager
prsm
(pronounced "prism") aims to speed up the process of writing simple project management
CLI applications. It's common to have a custom suite of formatting, linting, and debugging
scripts in separate shell/scripting files. However, for those interested in using Rust for
these purposes, it can be daunting to set up their scripts compared to others who use simpler
languages such as Python.
The intent of prsm
is to reduce any and all complexity of setting up the script manager so
you, the developer, can focus more time and energy into your management scripts. You're already
using Rust rather than the simpler alternatives. Why introduce even more complexity into your
life?
Using prsm
is easy thanks to the prsm
macro.
use prsm::prsm;
fn format() -> Result<(), std::io::Error> { Ok(()) }
fn lint() -> Result<(), std::io::Error> { Ok(()) }
let script_manager = prsm! {
[1] "Format repository files" => format(),
[2] "Lint Rust files" => lint()
};
script_manager.run();
Note that prsm
is a library dedicated to abstracting away the setup process of a script
manager. It is not interested in the explicit returns that you may have for your functions that
manage your project. It's best to use stateless functions for prsm
that do not have
meaningful return values, as prsm
will throw away any return value (other than errors, which
are returned for debugging purposes).