Metadata-Version: 2.4
Name: firestart
Version: 0.2.1
Summary: FireStart - 一行命令启动你的常用应用和网站，和恢复轻量工作状态
Author: Harrypotoo
Author-email: 2314393852@qq.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: click>=8.0.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# FireStart——一行命令，启动你每天都要开的东西

> FireStart 解决的是那些**每天都要做、但不想一次次配置**的高频固定动作——上班打开常用软件、下班开摸鱼网站…… 预配置一次，以后一条命令一键启动。

## 为什么做这个

因为觉得自己用电脑时每次都要打开一堆网站和软件：
码代码时要手动点开 VSCode，遇到难题问 AI 要启动 Deepseek Harness、Chatbox，边用电脑还会边听歌，偶尔还会刷会 bilibili…… 于是想着能不能做个 CLI 工具，一行命令启动我高频使用的软件和网页。

## 安装

```bash
pip install firestart
```

安装完成后，终端里直接用 `fire` 命令。

---

## 核心概念

FireStart 里存的东西，分两类：

| 类型 | 存的是什么 | 能直接启动吗 | 例子 |
|------|-----------|:---:|------|
| “单发弹药” | 实际内容（网站 URL 或 exe 路径 + 启动参数） | 能 | `bilibili`、`vscode` |
| “组合弹药” | 一组“单发弹药名” | 一行命令逐个启动 | `dev`（启动 vscode + terminal + typora） |

## 命令详解

### 🔹add — 添加单发弹药

```bash
fire add <名称> <目标> [--args "参数1,参数2"] [--cwd "工作目录"]
```

最常见的三个场景：

**1. 添加网站**

```bash
fire add bilibili https://www.bilibili.com
fire add zhihu https://www.zhihu.com
```

**2. 添加本地应用**

```bash
fire add typora "C:\Program Files\Typora\Typora.exe"
```

**3. 带启动参数和工作目录**

```bash
# VSCode 启动后直接打开指定项目
fire add code "C:\Users\你\AppData\Local\Programs\Microsoft VS Code\Code.exe" --args "C:\project\myapp" --cwd "C:\project\myapp"
```

`--args` 多个参数用逗号分隔：例如`--args "-p,8080,-v"` → `['-p', '8080', '-v']`

---

### 🔹workspace — 管理组合弹药（组合点火）

```bash
fire workspace add <名称> <弹药1> <弹药2> ...    # 创建组合弹药
fire workspace list                               # 列出所有组合弹药
fire workspace remove <名称>                      # 删除组合弹药
```

**创建组合弹药前必须先有单发弹药**——组合弹药存的是单发弹药的引用名，不是拷贝。

```bash
# 先储备弹药
fire add code "C:\...\Code.exe" --args "C:\project"
fire add terminal "wt.exe"
fire add typora "C:\Program Files\Typora\Typora.exe"

# 再组合成组合弹药
fire workspace add dev code terminal notion

# 以后一条命令同时启动全部
fire dev
```

---

### 🔹点火（最常用）

```bash
fire <弹药名>
```

直接敲名字就点燃——不需要写 `open`、不需要写 `start`。如果是组合弹药，会同时启动里面所有弹药。

```bash
fire bilibili       # 打开 B 站
fire dev            # 点燃组合弹药：VSCode + 终端 + Notion 一起开
fire morning        # 摸鱼组合弹药：知乎 + B 站 + 网易云
```

### remove — 删除单发弹药

```bash
fire remove <名称>
```

> ⚠️ 组合弹药请用 `fire workspace remove <名称>`，不用 `fire remove`。

---

### 🔹list — 列出弹药库

```bash
fire list        # 简洁模式
fire list -v     # 详细模式（显示完整路径和参数）
```

输出示例：
```
🪖  单发弹药:
  bilibili
  zhihu
  code
💥 组合弹药:
  dev (3 发)
  morning (3 发)
```

---

### 🔹browser — 管理默认浏览器

打开网站时，默认用系统浏览器。如果你常用的是其他浏览器，可以全局设置一次：

```bash
fire browser set "C:\Program Files\Mozilla Firefox\firefox.exe"   # 设置
fire browser show                                                  # 查看当前设置
fire browser clear                                                 # 清除，恢复系统默认
```

设置后，用FireStart启动所有网站都会用这个浏览器打开。如果浏览器被卸载了、启动失败，会自动 更改到系统默认浏览器，不会卡死。

---

### 🔹config — 打开配置文件

```bash
fire config
```

用系统默认编辑器（Windows 是记事本）打开配置文件。配置文件是纯 JSON，你可以直接手写或手动编辑。

配置文件位置：`~/.firestart.json`（用户主目录下）

---

### 🔹export / import — 导入导出（换电脑必备）

```bash
fire export                        # 输出到终端
fire export my-config.json         # 导出到文件
fire import my-config.json         # 导入（默认合并到现有配置）
fire import my-config.json --overwrite   # 覆盖现有配置
```

---

## 示例配置文件格式

`~/.firestart.json` 的完整格式：

```json
{
  "_settings": {
    "browser": "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
  },

  "bilibili": "https://www.bilibili.com",

  "zhihu": "https://www.zhihu.com",

  "code": {
    "target": "C:\\Users\\你\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe",
    "args": ["C:\\project\\myapp"],
    "cwd": "C:\\project\\myapp"
  },

  "dev": {
    "items": ["code", "terminal", "notion"]
  }
}
```

| key | 含义 |
|-----|------|
| `_settings` | 全局设置（保留 key，不会被当成弹药） |
| 字符串值 | 最简单发格式（网站 URL 或 exe 路径） |
| `{target, args, cwd}` | 带参数的单发格式 |
| `{items: [...]}` | 组合弹药格式 |

---

## 项目结构

```
firestart/
├── __init__.py    # 版本号
├── cli.py         # 核心：所有命令 + 点火逻辑
└── config.py      # 配置文件读写 + 常量

setup.py           # 打包配置
requirements.txt   # 依赖（只有 click>=8.0.0）
```

### 核心技术点速览

| 技术 | 在哪用的 | 说明 |
|------|----------|------|
| `click` 框架 | 全部命令 | Python CLI 开发的事实标准 |
| 继承 `click.Group` | `FireGroup` 类 | 重写 `resolve_command`，让 `fire <名称>` 既能点到子命令也能点火 |
| `subprocess.Popen` | 本地应用启动 | 非阻塞，启动后立即返回，CLI 不卡壳 |
| `webbrowser` 标准库 | 网站启动 | 没配自定义浏览器时的 fallback |
| JSON + pathlib | 配置持久化 | 跨平台，配置文件在用户主目录 |

---

## 发布到 PyPI

```bash
pip install setuptools wheel twine
python setup.py sdist bdist_wheel
twine upload dist/*
```

---

## License

MIT
