Metadata-Version: 2.4
Name: travi
Version: 0.1.1
Summary: Build project directory structures from JSON templates
Author-email: unclewall <unclewall@qq.com>
License: MIT
Project-URL: Homepage, https://github.com/yourname/travi
Project-URL: Repository, https://github.com/yourname/travi
Project-URL: Issues, https://github.com/yourname/travi/issues
Keywords: project,directory,structure,template,scaffold
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# travi

根据 JSON 模板一键构建项目目录结构。内置一套研发项目通用目录模板（计划/客户/设计/打样/供应/PPAP/SOP），也支持自定义 JSON。

## 安装

```bash
pip install travi
```

## 命令行用法

```bash
# 使用内置默认模板
travi D:\MyNewProject

# 使用自定义 JSON 模板
travi D:\MyNewProject my_structure.json

# 静默模式
travi D:\MyNewProject -q
```

## 作为库使用

```python
from travi import create_directory_structure

# 1. 内置默认模板
created = create_directory_structure(None, r"D:\MyNewProject")

# 2. JSON 文件
created = create_directory_structure("my_structure.json", r"D:\MyNewProject")

# 3. 直接传字典
created = create_directory_structure(
    {"src": {"core": {}}, "docs": {}},
    r"D:\MyNewProject",
    verbose=True,
)
print(f"新建了 {len(created)} 个目录")
```

## JSON 模板格式

键为目录名，值为子目录字典，空对象 `{}` 表示叶子目录：

```json
{
    "0plan": {
        "0patent": {}
    },
    "1customer": {
        "1input": {},
        "1output": {}
    }
}
```

## API

- `create_directory_structure(source, target_root, verbose=False) -> list[str]`
  构建目录，返回本次新建目录的绝对路径列表。`source` 为 `None` 时用内置模板。
- `load_structure(source) -> dict` 加载并校验结构定义。
- `TraviError` 所有可预期错误（文件不存在、JSON 非法、结构非法）的统一异常。

## License

MIT
