{"id":24016328,"url":"https://github.com/decodelabs/effigy","last_synced_at":"2026-03-18T01:35:36.140Z","repository":{"id":62820885,"uuid":"562777762","full_name":"decodelabs/effigy","owner":"decodelabs","description":"Universal CLI entry point","archived":false,"fork":false,"pushed_at":"2025-12-03T16:24:34.000Z","size":397,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2026-02-20T05:56:47.702Z","etag":null,"topics":["cli","developer-tools","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/decodelabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2022-11-07T08:36:17.000Z","updated_at":"2025-12-03T16:24:42.000Z","dependencies_parsed_at":"2024-04-26T11:49:32.747Z","dependency_job_id":"43d6e150-2389-4b12-a10f-08c84d4a7d28","html_url":"https://github.com/decodelabs/effigy","commit_stats":{"total_commits":117,"total_committers":1,"mean_commits":117.0,"dds":0.0,"last_synced_commit":"30c8c05d5a0502f71459da6a93fe1369b0f634ee"},"previous_names":[],"tags_count":105,"template":false,"template_full_name":null,"purl":"pkg:github/decodelabs/effigy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decodelabs%2Feffigy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decodelabs%2Feffigy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decodelabs%2Feffigy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decodelabs%2Feffigy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/decodelabs","download_url":"https://codeload.github.com/decodelabs/effigy/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decodelabs%2Feffigy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30640276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-18T00:09:27.587Z","status":"ssl_error","status_checked_at":"2026-03-18T00:09:26.123Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","developer-tools","php"],"created_at":"2025-01-08T08:48:58.180Z","updated_at":"2026-03-18T01:35:36.124Z","avatar_url":"https://github.com/decodelabs.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Effigy\n\n[![PHP from Packagist](https://img.shields.io/packagist/php-v/decodelabs/effigy?style=flat)](https://packagist.org/packages/decodelabs/effigy)\n[![Latest Version](https://img.shields.io/packagist/v/decodelabs/effigy.svg?style=flat)](https://packagist.org/packages/decodelabs/effigy)\n[![Total Downloads](https://img.shields.io/packagist/dt/decodelabs/effigy.svg?style=flat)](https://packagist.org/packages/decodelabs/effigy)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/decodelabs/effigy/integrate.yml?branch=develop)](https://github.com/decodelabs/effigy/actions/workflows/integrate.yml)\n[![PHPStan](https://img.shields.io/badge/PHPStan-enabled-44CC11.svg?longCache=true\u0026style=flat)](https://github.com/phpstan/phpstan)\n[![License](https://img.shields.io/packagist/l/decodelabs/effigy?style=flat)](https://packagist.org/packages/decodelabs/effigy)\n\n### Universal CLI entry point\n\nEffigy is a globally installed universal CLI tool for easily running tasks in your application.\n\n---\n\n\n## Installation\n\nThis package requires PHP 8.4 or higher.\n\nInstall via Composer:\n\n```bash\ncomposer global require decodelabs/effigy\n```\n\nYou will also need to have added your global composer installation bin directory to your $PATH in your ~/.bash_profile or ~/.bashrc file:\n\n```bash\nexport PATH=~/.config/composer/vendor/bin:$PATH\n```\n\n_Note, earlier versions of composer may store global config in `~/.composer/vendor/bin` - adapt your $PATH as necessary. You can find composer's home path with `composer global config home`_\n\n## Usage\n\nEffigy can be used to simplify running tasks in your project from the command line. Its primary job is to locate and load the main entry point to your project via a globally installed executable.\n\nSay for example, you currently run commands in your project though `webroot/index.php` as your primary entry point:\n\n```bash\nphp webroot/index.php run-task\n```\n\nDefine your entry point in your composer.json file:\n\n```json\n{\n    \"extra\": {\n        \"effigy\": {\n            \"entry\": \"webroot/index.php\"\n        }\n    }\n}\n```\n\nThen you can run CLI commands available in your project via the `effigy` executable directly:\n\n```bash\neffigy run-task\n```\n\nShould you need per-environment entry files, specify template keys in your composer config:\n\n```json\n{\n    \"extra\": {\n        \"effigy\": {\n            \"entry\": \"entry/{{env}}.php\"\n        }\n    }\n}\n```\n\nThen on first run, Effigy will ask for the \"env\" parameter and save it in a local config file (which gets added to your .gitignore).\n\n\n### Local installation\n\nIf you don't want to install Effigy globally, you can use it as a local executable in your project.\n\n```bash\ncomposer require decodelabs/effigy\nvendor/bin/effigy install-local\n```\n\nYou can then call effigy like so:\n\n```bash\n./effigy run-task\n```\n\n### PHP binary\n\nEffigy can use alternative versions of PHP on a per-project basis:\n\n```bash\neffigy set-php\n\u003e php8.1\n```\n\nThe bin path is stored in your local config and all process launches will use this going forward. Reset it to \"php\" to use the default system global binary.\n\n\n### Composer passthrough\n\nEffigy will attempt to run scripts defined in your composer.json:\n\n```json\n{\n    \"scripts\": {\n        \"analyze\": \"phpstan analyze\"\n    }\n}\n```\n\n```bash\neffigy analyze\n```\n\nYou can also run composer commands through effigy directly:\n\n```bash\neffigy composer require decodelabs/atlas\n```\n\nThis is especially useful if you have defined an alternative version of PHP for your project as global composer will use global PHP.\n\n## Licensing\nEffigy is licensed under the MIT License. See [LICENSE](./LICENSE) for the full license text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecodelabs%2Feffigy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdecodelabs%2Feffigy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecodelabs%2Feffigy/lists"}