move fast because or as if driven by the wind.
Why? | Goals | Status | Getting started
A tool for streamlining the many version and source control processes of your development workflow written with an emphasis on general usage information and error diagnostics. Agnostic to your codebase’s internals and overall development environment, it just works.
Table of Contents
Scud aims to solve the following problems and integrate them into a single tool for enhancing and accelerating your workflow in any project:
Scud was originally a tool I wanted to build for myself in an attempt to bridge the gap between making changes to my codebase locally and seeing them reflected on a remote repository. I wanted to be able to do this without having to repeatedly write a series of verbose commands, use an assortment of various tools to get the job done or go through some unique setup process for each new project I created.
I was interested in a tool that would provide:
Scud is currently a work in progress, so its complete functionality is not yet finished. However, feel free to use it now, and update it when available. Scud will notify you during usage whenever a new update is available and provides a convenient update command, scud update [alias: scud up]
, which will update your local copy of scud to the latest version available.
Detailed below is a list of the current features and their status, as well as the roadmap for the future.
Roadmap:
clap_complete
crateman scud
via clap_mangen
crategit-cliff
or [``], will have to investigate tools for other VCSsgitoxide
as underlying VCS
NOTE: I aim to round out the core feature set of scud before exploring further functionality
For scud's declarative version control features (e.g. cap
, commit
, commit-all
, push
, pull
, stage
, state
, unstage
), scud is smart enough to detect the underlying version control system in which it is being used and will automatically use the appropriate commands, so you don't have to worry about the underlying implementation details, it just works.
Scud supports a commit workflow that can produce commit messages following an assortment of commit message formats (Angular, Conventional, etc.) enabling developers to create human-readable commit messages in a simple, modular, and easily configurable manner.
Scud provides a declarative, concise interface to the underlying version control system, allowing developers to create and iterate on software in a simple yet powerful fashion.
You can get started using scud by following one of the installation methods detailed below. Additionally, it's important that you have the required prerequisites installed before you start using scud.
In order to get started using scud, it's important that you have Rust installed on your local machine which can be done via the simple one-liner,
```bash
curl https://sh.rustup.rs -sSf | sh ```
as seen on the official Rust website.
scud can be installed from crates.io:
```sh
$ cargo install scud ```
scud [SUBCOMMAND] [OPTIONS]
Options:
-h, --help Print help information
-V, --version Print version information
Subcommands:
```
commit Commits all staged files in the current local repository. [alias: c]
commit-all Stages all modified files in the current local repository and then commits them. [alias: ca]
info Useful information and diagnostics about your system and codebase [alias: in]
healthcheck Checks to see required dependencies (i.e. version control systems, CLIs for source control providers) are installed. [alias: hc]
help Print this message or the help of the given subcommand(s).
init Initializes a local repository with a given VCS provider (currently supported: git, mercurial, breezy). [alias: i]
new Creates a new local repository in the current directory with a specified VCS, if one does not already exist (local repo). Additionally, initializes a corresponding remote repository with a specified source control provider. [alias: n]
push Pushes all commits to the remote repository. [alias: ps]
pull Pulls all commits from the remote repository. [alias: pl]
setup Streamlines the setup process for various version control systems and source control providers. [alias: su]
stage Stages all modified files in the current local repository ensuring they are ready to be committed. [alias: s]
unstage Unstages all modified files in the current local repository so they are ready to be committed again. [alias: u]
update Handles the process of updating scud to the latest version. [alias: up] ```
NOTE: Many of scud's subcommands (where deemed appropriate) support the --dry-run
flag for testing usage in a low-stakes environment, as well as the --info
flag for getting a better idea of the operations scud is performing under the hood when the subcommand is issued.
Copyright © 2022, Josh Kersey