Skip to main content
D

dsh-plugin-publisher

dried-persimmon-jpg/dsh-plugin-publisher

Publishes a local DSH plugin folder to GitHub: runs a local preflight, pushes a snapshot through the Git Data API, adds the dsh-plugin topic, and opens the awesome-dsh-plugin listing pull request. Its HTTP routes have no DSH access check, so a web page open in your browser could call them.

Install

dsh plugin --profile web add github:dried-persimmon-jpg/dsh-plugin-publisher

README

插件发布器 · dsh-plugin-publisher

在 DSH 里把本地插件一键发布到 GitHub,并可以顺手提交到 awesome-dsh-plugin 插件市场。

安装后打开 设置 → 发布(settings.section id 为 publisher,排在插件管理之后),四步走完即可发布:

  1. 令牌:粘贴 GitHub Personal Access Token(classic,勾 public_repo);令牌存进本机 DSH 凭据库,页面只显示"已配置"。
  2. 选插件:选目录或让插件扫描上一级目录,自动列出所有含 dsh.bundle.patch 的插件包。
  3. 体检:18 项本地检查(manifest、patch、入口、README/LICENSE/图标、体积、敏感信息与本机路径扫描);有 fail 项时按钮不可用。
  4. 仓库 + 市场:填仓库名/可见性/简介/Topics,一键发布;需要时自动建仓、推快照、加 dsh-plugin topic,并 fork 市场仓库开收录 PR。

它做了什么

  • 发布:走 GitHub REST(Git Data API)建 blob → tree → commit → ref,不依赖本机的 git。
  • 体检:全部在本地完成,不会上传任何文件;扫描 ghp_/私钥/sk- 等敏感串与本机绝对路径。
  • 市场 PR:只新增一个 data/plugins/<owner>__<repo>.yml(单引号包裹 YAML),fork 后建分支、按市场 PR 模板生成正文并开 PR。
  • 幂等:仓库已存在时不静默覆盖,会要求再确认一次,然后追加一个提交。

需要的权限

GitHub Personal Access Token(classic),scope:

  • public_repo —— 建/写公开仓库、fork 市场仓库并开 PR
  • 私有仓库发布需要 repo

令牌保存在 DSH 凭据库里的 DSH_GITHUB_TOKEN 引用;也可以用环境变量 DSH_GITHUB_TOKEN 提供。

接口

Host 侧注册在 /dsh-publisher/api:

方法路径说明
GET/status令牌状态、当前账号、市场分类
POST / DELETE/token校验并保存 / 删除令牌
POST/scan列出目录下的插件包
POST/preflight本地体检
GET/remote远端仓库是否存在、是否私有、创建时间
GET/listing市场是否已收录
POST/publish建仓 + 推送 + topic + 可选市场 PR
POST/market只提交市场 PR

限制

  • 市场只收录公开仓库,且仓库需满 1 天(CI 会自动重跑,无需重复提交)。
  • 单个文件上限 20 MB,整体上传上限 80 MB,最多 4000 个文件;node_modules、.git、.env、私钥文件等默认跳过。
  • 首次发布前建议先跑一遍体检,特别是"本机路径"这类警告:硬编码 D:\... 的插件换台机器就失效。

License

MIT

Related plugins