Skip to content

jolicode/castor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Castor
A lightweight and modern task runner for Automation, CI/CD & DevOps.
Automate everything. In PHP. Simply. Efficiently. Elegantly.

Write your automation scripts in PHP, run them from the CLI.
No need for Bash, Makefiles or YAML.

  • ✅ 100% PHP - define tasks as simple PHP functions
  • âš¡ Fast & native - no configuration, no boilerplate
  • 🔧 Provided with a bunch of useful built-in functions
  • 🧠 Autocompletion & descriptions for each task
  • 🧰 Easy to integrate in your dev workflows

Presentation

Castor is a DX oriented task runner, that is designed to help you automate your development tasks and workflows in a simple and efficient way.

It can be viewed as an alternative to Makefile, Fabric, Invoke, Shell scripts, etc., but it leverages PHP's scripting capabilities and extensive library ecosystem.

It comes with many features to make your life easier:

  • Seamless parsing of arguments and options, simplifying input handling
  • Autocomplete support for faster and error-free typing
  • A built-in list of useful functions:
    • run(): Run external processes, enabling seamless integration with external tools
    • io(): Display beautiful output and interacts with the terminal
    • watch(): Watch files and automatically triggers actions on file modifications
    • fs(): Create, remove, and manipulate files and directories
    • And even more advanced functions

Get started in 10 seconds

curl "https://castor.jolicode.com/install" | bash

castor

→ Castor can also be installed in many other ways (phar, static binaries, Composer, Github Action, etc), see the installation documentation.

Basic usage

In Castor, tasks are set up as typical PHP functions marked with the #[AsTask()] attribute in a castor.php file.

These tasks can run any PHP code but also make use of various functions for standard operations that come pre-packaged with Castor.

For example, the following castor.php file:

use Castor\Attribute\AsTask;

#[AsTask()]
function hello(): void
{
    echo 'Hello from castor';
}

Will expose a hello task that you can run with castor hello:

$ castor hello
Hello from castor

Then, you can go wild and create more complex tasks:

#[AsTask(description: 'Clean the infrastructure (remove container, volume, networks)')]
function destroy(bool $force = false)
{
    if (!$force) {
        io()->warning('This will permanently remove all containers, volumes, networks... created for this project.');
        io()->comment('You can use the --force option to avoid this confirmation.');

        if (!io()->confirm('Are you sure?', false)) {
            io()->comment('Aborted.');

            return;
        }
    }

    run('docker-compose down -v --remove-orphans --volumes --rmi=local');

    notify('The infrastructure has been destroyed.')
}

→ Want to see basic usages and main features of Castor? Read the Getting started documentation

Real-world use cases

  • Run database migrations
  • Deploy your app with one command
  • Manage assets or translations
  • Bootstrap environments
  • Automate internal tools

→ See more examples from the community.

What developers say

"Finally a task runner that feels like PHP. No weird DSL, just functions."
— Every Castor user, probably

"I thought I needed Bash, Make, and half a DevOps degree. Turns out I just needed Castor."
— A surprisingly relieved developer

"We migrated from Make to Castor and nobody cried. That's a win."
— Senior Developer, now less grumpy

Why not Make / Robo / Phing / Deployer / Symfony Console?

Because:

  • Make is not PHP, and is hard to maintain in large projects
  • Others are either too verbose, OOP-heavy, requiring YML or XML configurations or are specialized in deployment only.
  • Symfony Console is a great base - but Castor is built on top of it and gives you superpowers

→ See detailed comparisons in our FAQ

Want more?

Discover more by reading the docs:



JoliCode is sponsoring this project

About

🦫 A lightweight and modern task runner for Automation, CI/CD & DevOps.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors 34