Skip to content

star-setup/core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Star Setup

A lightweight CLI to clone, configure, and wire single or multi-repo CMake ecosystems.

CI License: MIT

Quick Start

# Interactive mode
star-setup

# Single-repo mode
star-setup username/repo

# Mono-repo mode
star-setup username/repo --repos user/lib1 user/lib2

Prerequisites

  • Git
  • CMake

Installation

Download the latest binary from Releases, or:

Homebrew (macOS/Linux)

brew install star-setup/tap/star-setup

npm

npm install -g @star-setup/star-setup

Shell (Linux/macOS)

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/star-setup/core/releases/latest/download/star-setup-installer.sh | sh

PowerShell (Windows)

powershell -ExecutionPolicy Bypass -c "irm https://github.com/star-setup/core/releases/latest/download/star-setup-installer.ps1 | iex"

pip

pip install star-setup

Windows Installer

Download the .msi from Releases.

Build from source

cargo install --git https://github.com/star-setup/core

Usage

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 complete

Single 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-workspace

Workspace Structure

build-mono/
├── CMakeLists.txt # Auto-generated root project
├── lib1/
├── lib2/
├── my-repo/       # Test repository
└── build/         # Build output

BUILD_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 myprofile

Config 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 myconfig

Development

git clone https://github.com/star-setup/core
cd core
cargo test
cargo clippy --all-targets -- -D warnings

License

MIT License — see LICENSE for details.

About

Lightweight CLI to clone, configure, and wire single or multi-repo ecosystems for CMake.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages