LinuxCommandLibrary

minifab

Create reproducible, isolated build environments

TLDR

Bring up the default Hyperledger Fabric network

$ minifab up [[-i|--fabric-release]] [minifab_version]
copy

Bring down the Hyperledger Fabric network
$ minifab down
copy

Install chaincode onto a specified channel
$ minifab install [[-n|--chaincode-name]] [chaincode_name]
copy

Install a specific chaincode version onto a channel
$ minifab install [[-n|--chaincode-name]] [chaincode_name] [[-v|--chaincode-version]] [chaincode_version]
copy

Initialize the chaincode after installation/upgrade
$ minifab approve,commit,initialize,discover
copy

Invoke a chaincode method with the specified arguments
$ minifab invoke [[-n|--chaincode-name]] [chaincode_name] [[-p|--chaincode-parameters]] '"[method_name]", ["argument1", "argument2", ...]'
copy

Make a query on the ledger
$ minifab blockquery [block_number]
copy

Quickly run an application
$ minifab apprun [[-l|--chaincode-language]] [app_programming_language]
copy

SYNOPSIS

minifab command [options]

PARAMETERS

help
    Displays help information for minifab or a specific subcommand.

create branch_name
    Creates a new branch in the local repository.

upload
    Uploads the current changes as a changelist to Gerrit.

rebase
    Rebases the current branch onto the upstream branch.

diff
    Shows the diff of changes against the current branch.

set-try
    Sets the trybots to run for the current changelist.

DESCRIPTION

minifab is a command-line tool specifically designed to simplify and speed up build processes within Chromium and Chromium-based projects.

It primarily interacts with the Chromium infrastructure, such as the Git repositories and the build system (GN).

The purpose of minifab is to abstract away the complexity of managing build configurations, dependencies, and code submissions (uploading CLs to Gerrit). It provides a higher-level interface, allowing developers to focus on coding rather than wrestling with build intricacies.

While its core functionality is centered around Chromium development, the principles of minifab can be adapted or understood for broader software development concepts: automation, dependency management, and build system abstraction.

CAVEATS

minifab is heavily tied to Chromium's specific build infrastructure. Its usage is therefore limited to projects which closely follow the same conventions. Its functionality may change without notice.

CONFIGURATION

minifab often relies on configuration files (e.g., .gclient, DEPS) that define the project's dependencies and build settings. These files instruct minifab on how to check out the code and set the environment up for building.

BUILD TARGETS

minifab leverages the build targets defined in the GN build system. These targets specify the modules to be built, their dependencies, and the build configurations (e.g., Debug, Release).

HISTORY

minifab was developed to improve the efficiency and ease of use for Chromium developers when handling build processes. Its development has been driven by the need for a lightweight and streamlined tool to interact with Chromium's build system and version control. It is an evolving tool, constantly being refined to meet the needs of Chromium contributors.

SEE ALSO

git(1), gn(1), gclient(1)

Copied to clipboard