Metadata-Version: 2.4
Name: d-project
Version: 0.1.3
Summary: 项目流程管理命令行工具
Author-email: wangmengdi <790990241@qq.com>
License-File: LICENSE
Requires-Python: >=3.7
Requires-Dist: confection<1.0.0,>=0.0.4
Requires-Dist: importlib-metadata>=6.0.0; python_version < '3.8'
Requires-Dist: packaging>=24.0
Requires-Dist: python-dotenv<1.0.0,>=0.21.1
Requires-Dist: rich<14.0.0,>=13.3.1
Requires-Dist: srsly<3.0.0,>=2.4.5
Requires-Dist: typer<1.0.0,>=0.7.0
Requires-Dist: wasabi<2.0.0,>=1.1.1
Description-Content-Type: text/markdown

## 项目: d-project

### 描述

项目命令管理工具

### 特点

- 通过配置文件管理项目命令
- 支持 `.env` 自动加载
- 支持变量和环境变量插值
- 支持工作流编排和跳过未变更步骤
- 导出readme文件

### 安装

```
uv sync
```

### 使用

- 本地开发运行 CLI

```
uv run project --help
```

- 首先初始化project.yml文件

```
# 默认生成当前目录
uv run project init
# 若要修改目录
uv run project init ./configs/project.yml
```

- 运行自定义的命令或者流程

```
uv run project run some_command

uv run project run some_workflow
```

- `project run` 执行时会自动加载项目根目录下的 `.env`

```env
UV_PUBLISH_TOKEN=pypi-xxxx
```

- 可以参照下面的 `project.yml` 示例来定义命令和流程

- `project.yml` 字段说明

`title`
项目标题，主要用于帮助信息和文档生成。

`description`
项目描述，显示在帮助信息和生成文档中。

`vars`
项目内变量，可在配置中通过 `${vars.xxx}` 引用。

`env`
环境变量映射，可在配置中通过 `${env.xxx}` 引用；会读取系统环境变量和项目根目录 `.env`。

`check_requirements`
是否在运行前检查 `requirements.txt` 里的依赖是否安装。

`directories`
加载配置时自动创建的目录列表。

`workflows`
工作流定义，值是命令名列表，按顺序执行。

`commands`
命令列表。每个命令支持 `name`、`help`、`script`、`deps`、`outputs`、`outputs_no_cache`、`no_skip`。

- 示例 `project.yml`

```yaml
title: demo
description: describe project details
vars:
  name: demo
  dist_dir: dist
env:
  publish_token: UV_PUBLISH_TOKEN
check_requirements: false
directories:
  - dist
workflows:
  all:
    - build
    - publish
commands:
  - name: build
    help: build package artifacts
    script:
      - uv build
    deps:
      - pyproject.toml
    outputs:
      - ${vars.dist_dir}
  - name: publish
    help: publish current version to pypi
    script:
      - uv publish
    deps:
      - ${vars.dist_dir}
    outputs: []
    no_skip: true
```


- 生成READMD.md文件

```
uv run project document --output ./README.md
```
