Metadata-Version: 2.4
Name: gp_hub
Version: 0.1.4
Summary: A tiny local-first package manager demo with build/publish/install commands
Author: notmmao
License-Expression: MIT
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Provides-Extra: cloud
Requires-Dist: flask; extra == "cloud"

# gp_hub

`gp_hub` 是一个本地优先的极简包管理系统 MVP，目标是提供类似 pip/npm/cargo 的基础体验。

当前包含六个核心能力：

- `build`: 构建项目产物（`tar.gz`）
- `publish`: 发布到本地仓库或 HTTP 云仓库
- `install`: 从本地仓库或云仓库安装包
- `list`: 列出本地仓库或云仓库中的包
- `search`: 按关键字搜索本地仓库或云仓库包
- `info`: 查看本地仓库或云仓库的包版本详情

并提供三条已安装包查询命令：

- `installed-list`: 列出当前项目已安装包
- `installed-search`: 按关键字搜索当前项目已安装包
- `installed-info`: 查看当前项目已安装包详情

并提供一条卸载命令：

- `uninstall`: 删除当前项目已安装包（支持按版本或整包删除）

## 安装（开发模式）

```bash
pip install -e .
```

## 快速开始

### 1) 构建

```bash
gp-hub build --project-dir . --dist-dir dist
```

### 2) 发布到本地仓库

```bash
gp-hub publish dist/gp_hub-0.1.0.tar.gz --repo-dir .gp_hub_repo
```

### 2.1) 启动本地模拟云服务（Flask）

```bash
gp-hub serve-cloud --host 127.0.0.1 --port 5000 --storage-dir .gp_hub_cloud
```

### 2.2) 发布到云（HTTP）

```bash
gp-hub publish dist/gp_hub-0.1.0.tar.gz --target cloud --cloud-url http://127.0.0.1:5000
```

### 3) 从仓库安装（本地/云）

```bash
gp-hub install gp_hub --version 0.1.0 --repo-dir .gp_hub_repo --project-dir .

# 或从云仓库安装
gp-hub install gp_hub --target cloud --cloud-url http://127.0.0.1:5000 --project-dir .
```

### 4) 列出仓库包

```bash
gp-hub list --repo-dir .gp_hub_repo
```

### 5) 搜索仓库包

```bash
gp-hub search gp --repo-dir .gp_hub_repo
```

### 6) 查看包信息

```bash
gp-hub info gp_hub --repo-dir .gp_hub_repo
```

### 7) 查询当前项目已安装包

```bash
gp-hub installed-list --project-dir .
gp-hub installed-search gp --project-dir .
gp-hub installed-info gp_hub --project-dir .
```

### 8) 卸载当前项目已安装包

```bash
# 卸载指定版本
gp-hub uninstall gp_hub --version 0.1.0 --project-dir .

# 卸载该包全部已安装版本
gp-hub uninstall gp_hub --project-dir .
```

## 配置文件（可选）

支持简单文本配置文件 `gp_hub.conf`（`key = value`，支持 `#` 注释）：

- 当前目录：`./gp_hub.conf`
- 其次：`$HOME/.gp_hub/gp_hub.conf`

可配置项：

- `default_target = local|cloud`
- `default_cloud_url = http://127.0.0.1:5000`
- `default_repo_dir = .gp_hub_repo`

命令行参数优先级高于配置文件；当 `publish/install/list/search/info` 未显式传 `--target/--cloud-url/--repo-dir` 时，会使用配置默认值。

## 本地仓库结构

默认仓库目录：`.gp_hub_repo/`

- `.gp_hub_repo/index.json`：包索引
- `.gp_hub_repo/<name>/<version>/<artifact>.tar.gz`：产物文件

本地云服务存储目录（模拟云端）默认：`.gp_hub_cloud/`

- `.gp_hub_cloud/index.json`：云包索引
- `.gp_hub_cloud/<name>/<version>/<artifact>.tar.gz`：云产物文件

安装记录位于：`.gp_hub/installed.json`

## 示例与测试

- 示例：`python examples/example_mvp_flow.py`
- 测试：`python -m pytest -q`
