PACT (Project Automation and Cloning Tool) is a lightweight command-line utility written in C. It simplifies the process of creating and managing project directories. With configurable templates and support for Git and tmux, PACT provides a to extent customizable workflow for developers. Yet it's still my vision of how I like to work meaning it won't work for everyone and that's not the point of this tool either.
Rewrite in C of originaly writen by me but in Rust project (check branch inRust if intrested).
- Didn't want to write in Rust
- Wanted to learn more C
- Wanted to learn about suckless Philosophy from the insides Suckless.org
- WHY NOT? C is a simple language and this is a simple project. Thus why the need of dependencies?
-
New Project Creation:
- Automatically sets up a directory structure based on project type and programming language.
- Copies shared and language-specific templates into the project directory.
- Initializes Git repositories (if applicable).
- Starts a tmux session for the project.
-
Clone Existing Repositories:
- Clones a Git repository into a structured directory.
- Optionally renames the cloned repository.
- Starts a tmux session for the cloned project.
-
Fully Configurable:
- All configurations, including base directories, supported languages, and
templates, are managed in
config.h
- No external environment variables required.
- All configurations, including base directories, supported languages, and
templates, are managed in
I Store my templates in another repo PACT_templates But a template structure is included in pact_templates dir. You can use that
-
Clone the repository:
git clone [email protected]:Abishevs/PACT.git cd pact
-
Compile
make
-
Edit
config.h
to point to correct paths. Note use ABS paths! -
Recompile & install into
~/.local/bin/
make install
All paths should be absolute, only templates path is relative to the PACT_TEMPLATES (which is the root dir of where those are stored).
One can have both templates and or init_command set to NULL. init command cannot yet use Users aliases, only system wide.