refs/sputnik

Modern PHP TaskRunner with class-based tasks, Nette DI, and template engine

Maintainers

Package info

github.com/refsz/sputnik

pkg:composer/refs/sputnik

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 4

0.1.0 2026-04-03 12:15 UTC

README

CI Latest Release Packagist License: MIT PHP

A PHP TaskRunner for project automation. Class-based tasks, context switching, environment-aware execution.

What it does

Sputnik runs tasks defined as PHP classes. Each task is a single class with attributes -- no YAML actions, no function dumps, no DSL. You write normal PHP, Sputnik handles discovery, CLI, contexts, and shell routing.

#[Task(name: 'deploy', description: 'Deploy the application', environment: 'container')]
final class DeployTask implements TaskInterface
{
    public function __invoke(TaskContext $ctx): TaskResult
    {
        $ctx->shell('rsync -avz ./dist/ {{ deployPath }}/');
        $ctx->shellRaw('php artisan migrate --force');

        return TaskResult::success();
    }
}
$ php sputnik.phar deploy

Sputnik 0.1.0 │ .sputnik.dist.neon │ prod

▸ deploy · Deploy the application

  > rsync -avz ./dist/ /var/www/app/
  > php artisan migrate --force
✓ Done (1.24s)

Install

PHAR (recommended)

curl -Lo sputnik.phar https://github.com/refsz/sputnik/releases/latest/download/sputnik.phar
chmod +x sputnik.phar
php sputnik.phar init

Verify the download:

curl -Lo sputnik.phar.sha256 https://github.com/refsz/sputnik/releases/latest/download/sputnik.phar.sha256
sha256sum -c sputnik.phar.sha256

For IDE autocompletion you can additionally install via Composer: composer require --dev refs/sputnik. See Installation for details.

Key concepts

Tasks are PHP classes with #[Task] attributes. Options, arguments, and shell execution are built in. Writing Tasks

Contexts let you define named configurations -- different variables, different behavior. Switch with one command, no code changes. Contexts

Templates render files like .env with {{ variable }} syntax. Re-rendered automatically on context switch. Templates

Environments route commands transparently between host and container. A task marked environment: 'container' is automatically wrapped with your Docker executor. Environments

Links