A cli tool to automate the building and deployment of Bitcoin nodes

Overview

ℹ️ Automate Bitcoin builds, speed up deployment

Shran is an open-source cli tool being developed to address the needs of DMG Blockchain Solutions. It supports build configurations through a yaml file. Customizing a Bitcoin node with your own .so libraries, while avoiding the need to deal directly with the automake build system is made extremely simple. It's so easy, your dev ops team with no C++ experience can carry out builds, tests, and deployments.

🏗️ Development

The tool is written in Rust, so compiling and testing is simple

# Compile the source
cargo build

# Run the tests
cargo test

# Run the debug version
./target/debug/shran --help

🦸‍♂️ Features

⚠️ Shran is currently under heavy development

Current planned features

  • cli design
  • Github Api integration
  • Docker integration
  • Github action integration
  • Vanilla and Custom builds supported through a yaml file

⌨️ Usage ( Not complete )

shran 0.1.0
Matt Williams [email protected]
A command line tool for automating the process of building and deploying a Bitcoin node

USAGE:
    shran [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -b, --build-file <build-file>    Path to a `bitcoin-build.yaml` file

📜 Documentation ( Not complete )

🧙 Contributing ( Not complete )

Comments
  • feature-add-manifest-manager

    feature-add-manifest-manager

    Context

    Each time a release version is downloaded the ManifestManager must check if the version is already installed by checking the ~/.config/shran/manifest.yaml. if it doesn't exist it should be saved to the manifest file with the following meta data. If a release version is removed the corresponding manifest entry needs to be removed as well.

    Meta data

    1. Blockchain type (bitcoin)
    2. version of said blockchain (v23.0)
    3. published release date
    4. Release/Changelog release notes
    5. absolute path to installed source directory
    enhancement 
    opened by mattcoding4days 1
  • feature-add-auth-token-serializer

    feature-add-auth-token-serializer

    Context

    When shran auth --token is called, said token should be written to the ~/.config/shran/gh.yaml file. This is needed so when other subcommands like shran fetch --latest are called, they can actually check for that token on disk.

    enhancement 
    opened by mattcoding4days 1
  • feature-add-filsystem-manager

    feature-add-filsystem-manager

    Context

    File/directory creation and deletion need to be managed in a succinct manner that is applicable to where shran stores and loads and updates information on disk.

    enhancement 
    opened by mattcoding4days 1
  • github-api-octocrab

    github-api-octocrab

    Context

    shran needs a way to utilile github to pull down bitcoins source code, as well as connect to proprietary repositories that may have their own customized version of bitcoin that needs to be worked on or compiled or deployed. To do this I will utilze the ocotocrab library, and rely on github user tokens for verification.

    enhancement 
    opened by mattcoding4days 1
  • port-clap-v2-to-v3

    port-clap-v2-to-v3

    Context

    Clap just release a new major version 3.0.10. This has made some major improvements, and with all major version releases it has broken the v2 code

    enhancement 
    opened by mattcoding4days 1
  • tests-for-cli-interface

    tests-for-cli-interface

    Test all possible combinations of subcommands to verify proper usage is enforced, and descriptive error messages are given when commands are used wrong. Get code coverage up to > 90%

    enhancement 
    opened by mattcoding4days 1
  • feature-cli-redesign

    feature-cli-redesign

    Context

    The current cli design is proving to not be robust enough.

    Sub commands to remove

    1. shran fetch

      • fetch will be split up between new commands get and list
    2. shran generate

      • generate will be renamed to create

    Sub commands to add

    1. shran get

      • shran get --btc --latest
        • get the latest release of bitcoin
      • shran get --btc v23.0
        • get a specific version
    2. shran remove

      • shran remove --btc v23.0
    3. shran list

      • shran list --btc --local

        • List all versions installed on the local system
      • shran list --btc --remote

        • List all available versions on github

    Modified subcommands

    1. shran build
    • shran build --btc <v23.0> --with-strategy <path to strategy file>

      • --btc argument takes version to build
      • --with-strategy takes a path to build.yaml
      • builds bitcoin with a custom strategy
    • shran build --btc <v23.0> --rpc-node

      • --btc argument takes version to build
      • --rpc-node takes no argument
      • builds a node compiled with only the features needed for rpc functionality with -03 optimization
    • shran build --btc <v23.0> --wallet-node

      • --btc argument takes version to build
      • --wallet-node takes no argument
      • builds a node compiled with only the features needed for wallet functionality with -03 optimization
    • shran build --btc <v23.0> --full-node

      • --btc argument takes version to build
      • --full-node takes no argument
      • builds a node with all functionality with -03 optimization
    • shran build --btc <v23.0> --dev-node

      • --btc argument takes version to build
      • --dev-node takes no argument
      • builds a node in -02 and debug mode, with all tests enabled and all functionlity on
    1. shran create
      • shran create --btc --strategy
        • creates a build.yaml file configured for a full node, this option is for tinkerers, researchers, developers, and people who wish to heavily modify bitcoin builds. The generated build.yaml file can then be given to the build --with-strategy command
    enhancement 
    opened by mattcoding4days 1
Owner
Matt Williams
Rust && C++ programmer for DMG Blockchain Solutions
Matt Williams
Shellharden is a syntax highlighter and a tool to semi-automate the rewriting of scripts to ShellCheck conformance, mainly focused on quoting

Shellharden is a syntax highlighter and a tool to semi-automate the rewriting of scripts to ShellCheck conformance, mainly focused on quoting

Andreas Nordal 4.3k Dec 28, 2022
H2O Open Source Kubernetes operator and a command-line tool to ease deployment (and undeployment) of H2O open-source machine learning platform H2O-3 to Kubernetes.

H2O Kubernetes Repository with official tools to aid the deployment of H2O Machine Learning platform to Kubernetes. There are two essential tools to b

H2O.ai 16 Nov 12, 2022
A Rust command line tool to simplify embedded development and deployment.

Bobbin-CLI bobbin-cli is a tool designed to make it easy to build, deploy, test and debug embedded devices using a unified CLI. bobbin-cli understands

Bobbin 110 Dec 25, 2022
Automate your business flows, support, change tickets with Automatdeck

Automatdeck agent Website: https://automatdeck.com Documentation: https://doc.automatdeck.com Automatdeck agent is a simple lightweight IT automation

Kheshav Sewnundun 5 Aug 2, 2022
Count your code by tokens, types of syntax tree nodes, and patterns in the syntax tree. A tokei/scc/cloc alternative.

tcount (pronounced "tee-count") Count your code by tokens, types of syntax tree nodes, and patterns in the syntax tree. Quick Start Simply run tcount

Adam P. Regasz-Rethy 48 Dec 7, 2022
🗄️ A simple (and safe!) to consume history of Client and Studio deployment versions.

??️ Roblox Version Archive A simple (and safe!) to consume history of Client and Studio deployment versions. About Parsing Roblox's DeployHistory form

Brooke Rhodes 4 Dec 28, 2022
Contains challenges, write-ups, and deployment configurations from b01lersCTF 2023.

CTF Name A template repository for a CTF competition. This is a description of the CTF event. CTFTime Link Structure Challenges are organized by categ

null 7 Mar 29, 2023
Little example projects for learning Rust and building awesome cli tools! ⭐️

rust-cli-examples Examples of clean and well-tested command line utilities, written in Rust. ?? ?? What is this repo? This repo is a collection of man

Jim Lynch 5 Mar 31, 2023
Little exercises for learning Rust and building awesome cli tools! ⭐️

rust-cli-exercises Little exercises for learning Rust and building awesome cli tools! ⭐️ What's Here This repo is a collection of many extremely small

null 6 Apr 25, 2023
CLI program for building generative projects

NFT image generator This is the project to help artists to generate NFT collection, which can be generated from layers of PNG images. Usage Get archiv

null 10 Apr 27, 2022
Proof-of-concept on how to solve Bitcoin's light node sync problem with zkSNARKs

BTC Warp Prove and verify the longest Bitcoin PoW chain BTC Warp is a proof-of-concept system that aims to solve the client-syncing problem for Bitcoi

Succinct 45 May 31, 2023
A CLI tool to get help with CLI tools 🐙

A CLI tool to get help with CLI tools ?? halp aims to help find the correct arguments for command-line tools by checking the predefined list of common

Orhun Parmaksız 566 Apr 16, 2023
Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're working with files or directories, this tool simplifies common file operations with ease.

Rust FileOps Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're w

Harikesh Ranjan Sinha 5 May 2, 2024
Mercy is a public Rust crate created to assist with building cybersecurity frameworks, assessment tools, and numerous other projects

Mercy ?? Documentation Mercy is a public Rust crate created to assist with building cybersecurity frameworks, assessment tools, and numerous other pro

Umiko Security 2 Nov 27, 2022
Mercy is a public Rust crate created to assist with building cybersecurity frameworks, assessment tools, and numerous other projects

Mercy ?? Documentation Mercy is a public Rust crate created to assist with building cybersecurity frameworks, assessment tools, and numerous other pro

CyberSuki 2 Nov 27, 2022
A Rust library for building modular, fast and compact indexes over genomic data

mazu A Rust library for building modular, fast and compact indexes over genomic data Mazu (媽祖)... revered as a tutelary deity of seafarers, including

COMBINE lab 6 Aug 15, 2023
Rust API Server: A versatile template for building RESTful interfaces, designed for simplicity in setup and configuration using the Rust programming language.

RUST API SERVER Introduction Welcome to the Rust API Server! This server provides a simple REST interface for your applications. This README will guid

Harry Nguyen 3 Feb 25, 2024
A Rust library for building interactive prompts

inquire is a library for building interactive prompts on terminals. Demo Source Usage Put this line in your Cargo.toml, under [dependencies]. inquire

Mikael Mello 426 Dec 26, 2022