@star-setup/star-setup
v0.1.0
Published
Lightweight CLI to clone, configure, and wire single or multi-repo CMake ecosystems
Downloads
151
Readme
Star Setup
A lightweight CLI to clone, configure, and wire single or multi-repo CMake ecosystems.
Quick Start
# Interactive mode
star-setup
# Single-repo mode
star-setup username/repo
# Mono-repo mode
star-setup username/repo --repos user/lib1 user/lib2Prerequisites
- Git
- CMake
Installation
Download the latest binary from Releases, or build from source:
cargo install --git https://github.com/star-setup/coreUsage
Interactive Mode
Running star-setup without arguments launches interactive mode, guiding you through all options.
Star Setup Interactive Mode
Enter repository (user/repo or URL): user/repo
Use SSH? (y/n) [N]:
Verbose? (y/n) [N]:
Clean build directory if exists? (y/n) [N]:
Select mode: (1) Single Repo (2) Mono-Repo: 1
Build type [Debug]:
Build directory [build]:
Additional CMake args (space separated):
Configure only (skip build)? (y/n) [N]:
Interactive mode completeSingle Repository Mode
# Clone and build via HTTPS
star-setup username/repo
# Clone and build via SSH
star-setup username/repo --ssh
# Common flags
star-setup username/repo --build-type Release
star-setup username/repo --build-dir out
star-setup username/repo --no-build
star-setup username/repo --clean
star-setup username/repo --verbose
star-setup username/repo --cmake-arg=-DCMAKE_CXX_COMPILER=clang++Mono-Repo Mode
Clones multiple repositories into a single workspace and generates a root CMakeLists.txt that wires them together as subdirectories.
# Manual repo list
star-setup username/repo --repos user/lib1 user/lib2
# Use a saved profile
star-setup username/repo --profile myprofile
# With SSH and custom directory
star-setup username/repo --repos user/lib1 user/lib2 --ssh --mono-dir my-workspaceWorkspace Structure
build-mono/
├── CMakeLists.txt # Auto-generated root project
├── lib1/
├── lib2/
├── my-repo/ # Test repository
└── build/ # Build outputBUILD_LOCAL
Mono-repo mode sets -DBUILD_LOCAL=ON when configuring CMake. This flag tells your test repository to link against local module directories instead of fetching them remotely via FetchContent:
# In your test repo's CMakeLists.txt
if(NOT BUILD_LOCAL)
FetchContent_Declare(mylib
GIT_REPOSITORY https://github.com/user/mylib.git
GIT_TAG main
)
endif()This allows the same repository to work both standalone (fetching dependencies automatically) and inside a mono-repo workspace (linking locally for full cross-module debugging).
Profile Mode
Profiles represent a saved ecosystem of libraries commonly used together.
# Add a profile
star-setup --profile-add myprofile user/lib1 user/lib2
# List profiles
star-setup --list-profiles
# Remove a profile
star-setup --profile-remove myprofile
# Use a profile
star-setup username/repo --profile myprofileConfig Mode
Config files are checked in this order:
./.star-setup.json(current directory)~/.star-setup.json(home directory)
# Initialize a default config file
star-setup --init-config
# Add a named config
star-setup --config-add myconfig --ssh --build-type Release
# List configs
star-setup --list-configs
# Remove a config
star-setup --config-remove myconfig
# Use a config
star-setup username/repo --config myconfigDevelopment
git clone https://github.com/star-setup/core
cd core
cargo test
cargo clippy --all-targets -- -D warningsLicense
MIT License — see LICENSE for details.
