12 breaking releases
0.13.0 | Sep 24, 2022 |
---|---|
0.11.1 | Aug 21, 2022 |
0.5.0 | Jul 31, 2022 |
#2035 in Development tools
165KB
2.5K
SLoC
๐จ scud
๐ง WIP ๐ง
move fast because or as if driven by the wind.
Why? | Goals | Status | Getting started
A tool for streamlining the many version control processes of your development workflow written with an emphasis on ease-of-use and expressive usage diagnostics.
Table of Contents
About
Why build scud?
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.
Goals
I was interested in a tool that would provide:
- Declarative Version and Source Control is a set of high-level, declarative operations for accelerating the repetitive tasks common in the development process of any project.
- Agnostic to codebase internals and development environment, not tied to your codebase's language (i.e. works in Rust-based projects, but not JavaScript, Python), or to the developer's shell (i.e. works in Fish, but not Zsh, Bash, Elvish, etc.).
- Easy to use, with a simple, intuitive interface.
- Fast, performance isn't hindered by the underlying implementation details.
- Useful diagnostics, inspired by Rust's compiler diagnostics, general usage information and error messages should be clear and concise with expressive syntactic and semantic highlighting.
Status
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.
Roadmap
- Implement Shell tab completions for scud via
clap_complete
crate - Create man page for scud available for users by using
man scud
viaclap_mangen
crate
- Experiment with distributing tool via docker container to allow for even faster onboarding of new developers by not having to install scud's dependencies on the developer's machine
- In the future, I would like to add support for other version control systems, such as Mercurial and Breezy, as well as source control providers, such as GitHub, GitLab and BitBucket.
NOTE: I aim to round out the core feature set of scud before exploring further functionality
Features and Functionality
โก Supercharged Commits
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.
๐ค Declarative and Rich Version Control Primitives
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.
Getting Started
You can get started using scud by following one of the installation methods detailed below. Additionally, you must have the required prerequisites installed before you start using scud.
Prerequisites
To get started using scud, you must have Rust installed on your local machine which can be done via the simple one-liner,
# Install Rust and toolchain manager, rustup.
curl https://sh.rustup.rs -sSf | sh
as seen on the official Rust website.
Installation
From crates.io
scud can be installed from crates.io:
# Install scud from crates.io.
$ cargo install scud
Usage
Command Line Arguments
scud [SUBCOMMAND] [OPTIONS]
Options:
-h, --help Print help information
-V, --version Print version information
Subcommands:
# Useful for creating, updating, and deleting branches as well as visualizing and switching between them.
branch Handles CRUD operations when it comes to repository branching. [alias: br]
# Useful when you have reached a codebase state you want to remember
commit Commits all staged files in the current local repository. [alias: c]
# Useful for further streamlining the stage and commit process.
commit-all Stages all modified files in the current local repository and then commits them. [alias: ca]
# Useful for checking to see if your system is setup to work with all of the features of scud.
healthcheck Checks to see required dependencies are installed. [alias: hc]
# Useful for quickly checking scud's subcommands and options.
help Print this message or the help of the given subcommand(s).
# Useful for initializing a new local repository.
init Initializes a local repository with a given VCS provider (currently supported: git, mercurial, breezy). [alias: i]
# Useful for pushing your local commits to the remote repository.
push Pushes all commits to the remote repository. [alias: ps]
# Useful for pulling remote commits to your local repository.
pull Pulls all commits from the remote repository. [alias: pl]
# Useful for staging all modified files in your local repository, making them ready to be committed.
stage Stages all modified files in the current local repository ensuring they are ready to be committed. [alias: s]
# Useful for reverting changes made to files tracked by your version control system.
unstage Unstages all modified files in the current local repository so they are ready to be committed again. [alias: u]
# Useful for useful updating scud to the latest version.
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.
Similar Projects
- cocogitto - Cocogitto is a set of cli tools for the conventional commit and semver specifications.
- Commitizen - Create committing rules for projects ๐ auto bump versions โฌ๏ธ and auto changelog generation ๐
- cz cli - The commitizen command line utility. #BlackLivesMatter
- gitnow - Speed up your Git workflow. ๐
- gitflow - Git extensions to provide high-level repository operations for Vincent Driessen's branching model.
License
Copyright
Copyright ยฉ 2022, Josh Kersey
Dependencies
~13โ23MB
~349K SLoC