A lightweight CLI to clone, configure, and wire single or multi-repo ecosystems.
# Interactive mode
star-setup
# Single-repo mode
star-setup username/repo
# Mono-repo mode
star-setup username/repo --repos user/lib1 user/lib2- Git
- At least one supported build system:
- CMake
- Meson
Download the latest binary from Releases, or:
brew install star-setup/tap/star-setupnpm install -g @star-setup/star-setupcurl --proto '=https' --tlsv1.2 -LsSf https://github.com/star-setup/core/releases/latest/download/star-setup-installer.sh | shpowershell -ExecutionPolicy Bypass -c "irm https://github.com/star-setup/core/releases/latest/download/star-setup-installer.ps1 | iex"pip install star-setupDownload the .msi from Releases.
cargo install --git https://github.com/star-setup/core| Flag | Description |
|---|---|
--ssh |
Clone via SSH instead of HTTPS |
--https |
Force HTTPS (default) |
--verbose |
Print commands as they run |
| Flag | Description |
|---|---|
--build-type <TYPE> |
Build type: Debug (default) or Release |
--build-dir <DIR> |
Build output directory (default: build) |
--build-system <SYSTEM> |
Skip auto-detection and use cmake or meson |
--no-build |
Configure only, skip build step |
--clean |
Remove build directory before configuring |
--cmake-arg <ARG> |
Pass additional argument to CMake |
--meson-arg <ARG> |
Pass additional argument to Meson |
| Flag | Description |
|---|---|
--repos <REPOS>... |
List of dependency repositories |
--mono-dir <DIR> |
Workspace directory (default: build-mono) |
--profile <NAME> |
Use a saved profile |
| Flag | Description |
|---|---|
--dry-run |
Print what would happen without making any changes |
--timing |
Show timing for each phase |
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]:
Configure only (skip build)? (y/n) [N]:
Interactive mode complete
# Clone and build using a single repository
star-setup username/repoClones multiple repositories into a single workspace and auto-detects the build system. For CMake projects, generates a root CMakeLists.txt wiring all repositories as subdirectories. For Meson projects, generates a root meson.build and auto-generates local .wrap files bridging canonical dependency names to cloned directories.
# Clone and build a test repo and a manual repo list
star-setup username/repo --repos user/lib1 user/lib2
# Clone and build a test repo and a saved profile
star-setup username/repo --profile myprofilebuild-mono/
├── CMakeLists.txt # Auto-generated root project
├── repos/
│ ├── user-my-repo/ # Test repository
│ ├── user-lib1/
│ └── user-lib2/
└── build/ # Build output
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).
build-mono/
├── meson.build # Auto-generated root project
├── repos/
│ ├── user-my-repo/ # Test repository
│ ├── user-lib1/
│ ├── user-lib2/
│ ├── lib1.wrap # Auto-generated local wrap
│ └── lib2.wrap # Auto-generated local wrap
└── build/ # Build output
Manage an existing mono-repo workspace.
# Pull latest changes for all repos
star-setup workspace update
# Show status of all repos
star-setup workspace status
# Show status with ahead/behind remote
star-setup workspace status --fetch
# Remove build directory
star-setup workspace cleanWorkspace flags:
| Flag | Description |
|---|---|
--path <DIR> |
Workspace root directory (default: current directory) |
--mono-dir <DIR> |
Workspace directory name (default: build-mono) |
--build-dir <DIR> |
Build directory name (default: build) |
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 profile list
# Remove a profile
star-setup profile remove myprofile
# Use a profile
star-setup username/repo --profile myprofileConfig files are checked in this order:
./.star-setup.json(current directory)~/.star-setup.json(home directory)
# Initialize a default config file
star-setup config init
# Add a named config
star-setup config add myconfig --ssh --build-type Release
# List configs
star-setup config list
# Remove a config
star-setup config remove myconfig
# Use a config
star-setup username/repo --config myconfiggit clone https://github.com/star-setup/core
cd core
cargo test
cargo clippy --all-targets -- -D warningsMIT License — see LICENSE for details.