Features
- 🎯 Interactive Mode - Just run
sticksfor guided project setup with arrow key navigation - 🚀 Quick Project Setup - Create new C/C++ projects with a single command
- 📁 Multiple Build Systems - Support for both Makefile and CMake with automatic conversion
- 🔨 Smart Structure - Auto-generates organized project structure with source files and build configs
- 📦 Dependency Management - Easily add/remove dependencies in your Makefile
- 🔧 Multi-Source Support - Add multiple source files with automatic build integration
- 📝 Auto-Generated Config - Creates .gitignore, .editorconfig, Clang-format config, VSCode settings
- 🔄 Self-Updating - Built-in update mechanism that downloads from GitHub releases
- 📦 Package Manager Integration - Support for Conan and vcpkg for dependency management
- 🔧 Modular Features - Add/remove build systems and package managers to existing projects post-creation
- 🔀 Git Integration - Automatically initializes git repository when git is available
- ⚡ Command Aliases - Short aliases for faster typing (f, add-pm, rm-pm, etc.)
- 🎯 Zero Runtime Dependencies - Just needs GCC; no Rust/Cargo required after installation
- ✅ Quality Assured - Comprehensive test suite with 62 automated tests (100% coverage)
- 🔐 CI/CD Pipeline - Automated testing, building, and releases on every change
Installation
Choose the installation method that works best for you:
📦 Package Managers (Recommended)
Arch Linux (AUR)
Package Name: sticks-aur
# Using an AUR helper (recommended)
# or
# Or manually clone from AUR
See sticks-aur repository for packaging details.
Debian/Ubuntu
# Download the latest .deb package
🚀 Pre-built Binaries
🦀 From Cargo
Requires Rust toolchain from rustup.rs.
🔨 Build from Source
# Clone the repository
# Build release binary
# Install (choose one)
# or
Quick Start
Interactive Mode (Easiest!)
Just run sticks with no arguments for an interactive guided experience:
Follow the prompts to:
- Enter your project name
- Choose language (C or C++)
- Select build system (Makefile or CMake)
- Your project is created!
Use arrow keys to navigate, Enter to select.
Command Line
# Create a new C++ project with Makefile (default)
# Or with CMake build system
# Add a dependency
# Add more source files
# Build and run
Usage
Interactive Mode
Run sticks without any arguments to enter interactive mode:
This launches a guided setup where you can:
- Enter project name
- Select language (C or C++) using arrow keys
- Choose build system (Makefile or CMake) using arrow keys
- Confirm with Enter to create your project
Command Shortcuts
Common commands have short aliases for faster typing:
Feature Subcommand Aliases
Feature management also supports shortcuts:
Getting Started
Create a new project in a subdirectory:
Create with CMake build system:
Create with package manager integration:
Initialize in current directory:
Managing Dependencies
Add dependencies:
Automatically updates your Makefile's install-deps target.
Remove dependencies:
Cleans up the install-deps rule automatically when empty.
Adding Source Files
Sticks will:
- Create source files in
src/ - Create corresponding headers
- Update build file (Makefile or CMakeLists.txt) automatically
Package Manager Integration
Sticks supports C/C++ package managers for dependency management:
Conan
Create a project with Conan dependency management:
This generates a conanfile.txt. To add dependencies:
-
Edit
conanfile.txtand add packages to the[requires]section:[requires] libcurl/7.85.0 openssl/1.1.1q -
Install dependencies:
conan install . --build=missing
vcpkg
Create a project with vcpkg:
# or using short flag
This generates a vcpkg.json. To add dependencies:
-
Edit
vcpkg.jsonand add packages to the"dependencies"array:"dependencies": -
Install:
./vcpkg/vcpkg install -
CMakeLists.txt is pre-configured to use vcpkg toolchain
Enhancing Existing Projects
After creating a project, you can add or modify features using the sticks feature (or sticks f for short) command:
View Project Features
List all detected features and configurations:
Output shows:
- Current build system (Makefile or CMake)
- Configured package managers
- Configuration files status
Convert Build System
Change between Makefile and CMake:
# Convert Makefile project to CMake
# Convert CMake project to Makefile
# Optionally specify project name (auto-detected if omitted)
This will:
- Remove old build system file
- Generate new configuration with your source files
- Maintain project structure
Add Package Manager
Add Conan or vcpkg to an existing project:
# Add Conan to current project
# Add vcpkg
# Specify project name if needed
Remove Package Manager
Remove a package manager if you no longer need it:
Example Workflow
Start with a bare Makefile project, then enhance it:
# Create basic C project with Makefile
# Later, add CMake support
# Then add Conan for dependencies
# View all features
Generated Configuration Files
When you create a project, Sticks automatically generates:
- Build System Files:
MakefileorCMakeLists.txt(your choice) - Git:
.gitignore,.gitattributes(pre-configured for C/C++), auto-initializes git repository (if git is installed) - Code Style:
.editorconfig,.clang-format(consistent formatting) - IDE: VSCode
.vscode/settings.json,launch.json,tasks.json(if VS Code is installed) - Documentation:
README.md(project-specific template)
This gives you a professional, production-ready project structure out of the box!
Getting Help
Updating
Sticks can update itself without requiring Rust/Cargo:
This downloads the latest binary from GitHub releases and replaces your installation.
Alternative update methods:
# Arch Linux (using AUR package manager)
# Package name: sticks-aur
# or
# Cargo installation
Uninstallation
# Cargo installation
# Arch Linux (AUR package name: sticks-aur)
# or
# Debian/Ubuntu
# Manual installation
# or
Project Structure
A typical sticks-managed project looks like:
Technical Details
- Language: Rust 2021 edition
- Dependencies: clap 4, anyhow (build-time only)
- Dev Dependencies: serial_test (for isolated test execution)
- Runtime Requirements: GCC (for compiling your C/C++ projects)
- Supported Architectures: x86_64
- Supported Platforms: Linux (Arch, Debian, Ubuntu, others)
- Test Coverage: 62 comprehensive tests covering all core functionality (100% coverage)
- CI/CD: Automated testing, building, and releases via GitHub Actions
Contributing
We welcome contributions! Here's how to get involved:
- Report Issues: Found a bug? Open an issue
- Submit PRs: Fork the repo and submit pull requests
- Improve Docs: Help us make documentation better
See CONTRIBUTING.md for detailed guidelines.
Contributors
This project is maintained by:
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contact
Maintainer: mAmineChniti
Email: emin.chniti@esprit.tn
Repository: github.com/mAmineChniti/sticks
AUR Package: aur.archlinux.org/packages/sticks-aur