| Crates.io | sticks |
| lib.rs | sticks |
| version | 0.3.6 |
| created_at | 2023-11-08 07:22:16.832809+00 |
| updated_at | 2025-12-09 01:01:46.153655+00 |
| description | A tool for managing C and C++ projects |
| homepage | |
| repository | https://github.com/mAmineChniti/sticks |
| max_upload_size | |
| id | 1028809 |
| size | 153,506 |
A modern, lightweight CLI tool for managing C and C++ projects
Features • Installation • Quick Start • Usage • Updating • Contributing
sticks for guided project setup with arrow key navigationChoose the installation method that works best for you:
Package Name: sticks-aur
# Using an AUR helper (recommended)
yay -S sticks-aur
# or
paru -S sticks-aur
# Or manually clone from AUR
git clone https://aur.archlinux.org/sticks-aur.git
cd sticks-aur
makepkg -si
See sticks-aur repository for packaging details.
# Download the latest .deb package
wget https://github.com/mAmineChniti/sticks/releases/latest/download/sticks_0.3.6-1_amd64.deb
sudo dpkg -i sticks_*.deb
wget https://github.com/mAmineChniti/sticks/releases/latest/download/sticks-linux-x86_64
chmod +x sticks-linux-x86_64
sudo mv sticks-linux-x86_64 /usr/local/bin/sticks
cargo install sticks
Requires Rust toolchain from rustup.rs.
# Clone the repository
git clone https://github.com/mAmineChniti/sticks.git
cd sticks
# Build release binary
cargo build --release
# Install (choose one)
sudo cp target/release/sticks /usr/local/bin/ # System-wide
# or
cp target/release/sticks ~/.local/bin/ # User only
Just run sticks with no arguments for an interactive guided experience:
sticks
Follow the prompts to:
Use arrow keys to navigate, Enter to select.
# Create a new C++ project with Makefile (default)
sticks cpp my-project
cd my-project
# Or with CMake build system
sticks cpp my-project --build cmake
cd my-project
# Add a dependency
sticks add libcurl
# Add more source files
sticks src utils network
# Build and run
make
./my-project
Run sticks without any arguments to enter interactive mode:
sticks
This launches a guided setup where you can:
Common commands have short aliases for faster typing:
sticks i # sticks init
sticks s myfile # sticks src myfile
sticks a libcurl # sticks add libcurl
sticks r libcurl # sticks remove libcurl
sticks u # sticks update
sticks f # sticks feature
Feature management also supports shortcuts:
sticks f list # List project features
sticks f add-pm conan myapp # Add Conan (shortcut for add-package-manager)
sticks f rm-pm vcpkg # Remove vcpkg (shortcut for remove-package-manager)
sticks f convert cmake # Convert build system
Create a new project in a subdirectory:
sticks c my-c-project # New C project with Makefile
sticks cpp my-cpp-project # New C++ project with Makefile
Create with CMake build system:
sticks c my-project --build cmake # C project with CMake
sticks cpp my-project --build cmake # C++ project with CMake
Create with package manager integration:
sticks cpp my-project --build cmake --package-manager conan # C++ with CMake and Conan
sticks c my-project --build cmake -p vcpkg # C with CMake and vcpkg
Initialize in current directory:
sticks init c # Initialize C project here
sticks init cpp --build cmake # Initialize C++ project with CMake
Add dependencies:
sticks add libcurl # Single dependency
sticks add openssl libpq zlib # Multiple dependencies
Automatically updates your Makefile's install-deps target.
Remove dependencies:
sticks remove libcurl # Remove single dependency
sticks remove openssl libpq # Remove multiple dependencies
Cleans up the install-deps rule automatically when empty.
sticks src utils # Adds src/utils.cpp (or .c) and header
sticks src network database # Add multiple source files
Sticks will:
src/Sticks supports C/C++ package managers for dependency management:
Create a project with Conan dependency management:
sticks cpp my-project --build cmake --package-manager conan
cd my-project
This generates a conanfile.txt. To add dependencies:
Edit conanfile.txt and add packages to the [requires] section:
[requires]
libcurl/7.85.0
openssl/1.1.1q
Install dependencies: conan install . --build=missing
Create a project with vcpkg:
sticks cpp my-project --build cmake --package-manager vcpkg
# or using short flag
sticks cpp my-project --build cmake -p vcpkg
cd my-project
This generates a vcpkg.json. To add dependencies:
Edit vcpkg.json and add packages to the "dependencies" array:
"dependencies": [
"libcurl",
"openssl"
]
Install: ./vcpkg/vcpkg install
CMakeLists.txt is pre-configured to use vcpkg toolchain
After creating a project, you can add or modify features using the sticks feature (or sticks f for short) command:
List all detected features and configurations:
sticks f list
Output shows:
Change between Makefile and CMake:
# Convert Makefile project to CMake
sticks f convert cmake
# Convert CMake project to Makefile
sticks f convert makefile
# Optionally specify project name (auto-detected if omitted)
sticks f convert cmake my_project
This will:
Add Conan or vcpkg to an existing project:
# Add Conan to current project
sticks f add-pm conan
# Add vcpkg
sticks f add-pm vcpkg
# Specify project name if needed
sticks f add-pm conan my_project
Remove a package manager if you no longer need it:
sticks f rm-pm conan
sticks f rm-pm vcpkg
Start with a bare Makefile project, then enhance it:
# Create basic C project with Makefile
sticks c my_app
cd my_app
# Later, add CMake support
sticks f convert cmake
# Then add Conan for dependencies
sticks f add-pm conan
# View all features
sticks f list
When you create a project, Sticks automatically generates:
Makefile or CMakeLists.txt (your choice).gitignore, .gitattributes (pre-configured for C/C++), auto-initializes git repository (if git is installed).editorconfig, .clang-format (consistent formatting).vscode/settings.json, launch.json, tasks.json (if VS Code is installed)README.md (project-specific template)This gives you a professional, production-ready project structure out of the box!
sticks --help # Show all commands
sticks <command> --help # Help for specific command
sticks --version # Show version
Sticks can update itself without requiring Rust/Cargo:
sticks update
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
yay -Syu sticks-aur
# or
paru -Syu sticks-aur
# Cargo installation
cargo install sticks --force
# Cargo installation
cargo uninstall sticks
# Arch Linux (AUR package name: sticks-aur)
yay -R sticks-aur
# or
paru -R sticks-aur
# Debian/Ubuntu
sudo apt remove sticks
# Manual installation
sudo rm /usr/local/bin/sticks
# or
rm ~/.local/bin/sticks
A typical sticks-managed project looks like:
my-project/
├── src/
│ ├── main.cpp # Entry point
│ ├── utils.cpp # Additional sources
│ └── network.cpp
├── include/
│ ├── utils.h # Headers
│ └── network.h
├── bin/ # Final compiled binaries (gitignored)
├── build/ # Object files and build artifacts (gitignored)
└── Makefile # Auto-generated, customizable
We welcome contributions! Here's how to get involved:
See CONTRIBUTING.md for detailed guidelines.
This project is maintained by:
mAmineChniti Creator & Maintainer |
omibo Contributor |
This project is licensed under the MIT License. See the LICENSE file for details.
Maintainer: mAmineChniti
Email: emin.chniti@esprit.tn
Repository: github.com/mAmineChniti/sticks
AUR Package: aur.archlinux.org/packages/sticks-aur
Made with ❤️ for the C/C++ community