phel-lang/cli-skeleton
Composer 安装命令:
composer create-project phel-lang/cli-skeleton
包简介
A minimalistic skeleton to build your cli-app using Phel Lang.
README 文档
README
Phel is a functional Lisp that compiles to PHP. This repository is a minimal, opinionated starting point for building a real CLI application with Phel.
It ships:
- A data-driven command dispatcher built on top of
phel\cli(a thin wrapper oversymfony/console) with two sample subcommands:greetandadd. - An exportable Phel module (
adder-module) consumed from PHP via the auto-generatedPhelGenerated\CliSkeleton\Modules\AdderModuleclass. - Tests that exercise both pure logic and the CLI handler boundary using
phel\cli's built-in test helpers.
Requirements
- PHP >= 8.4 (phpbrew on Linux, shivammathur/homebrew-php on macOS)
- Composer
A
build/Dockerfileanddocker-compose.ymlare included if you'd rather not install PHP locally.
Getting started
git clone <this repo> cd cli-skeleton composer install
Run the CLI from sources
composer dev # invoke default command (greet)
vendor/bin/phel run cli-skeleton.main greet alice --loud
vendor/bin/phel run cli-skeleton.main add 1 2 3
Compile a standalone PHP code
composer build # → out/main.php
php out/main.php greet alice
php out/main.php add 1 2 3
Run the tests
composer test
Format
composer format
REPL
composer repl
Project layout
src/
├── main.phel ; wires the Application + dispatches
├── commands/
│ ├── greet.phel ; subcommand: greet
│ └── adder.phel ; subcommand: add
├── modules/
│ └── adder-module.phel ; pure logic, exported to PHP
└── PhelGenerated/ ; auto-generated PHP wrappers
tests/
├── commands/ ; CLI handler smoke tests
└── modules/ ; pure unit tests
example/
└── using-exported-phel-function.php ; call a Phel fn from PHP
phel-config.php ; build / export / format config
Adding a new command
- Create
src/commands/<name>.phelexposing adef <name>-commandmap (seegreet.phelfor the spec —phel\clidocs atvendor/phel-lang/phel-lang/docs/cli-guide.mdcover every option). - Register it in
src/main.phelby adding it to the:commandsvector. - Drop a test in
tests/commands/<name>-test.phel(usecli/argv+cli/buffered-outputto drive the handler in-process).
Exporting Phel functions to PHP
Mark a function with {:export true} (see src/modules/adder-module.phel),
then run:
composer export # regenerates src/PhelGenerated/** php example/using-exported-phel-function.php
Docker
docker compose up -d --build
docker exec -ti -u dev phel_cli_skeleton bash
composer install
More
- Phel docs: https://phel-lang.org/documentation/getting-started/
phel\cliguide:vendor/phel-lang/phel-lang/docs/cli-guide.md
统计信息
- 总下载量: 75
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-06-06