豫言 / 批量发布 @ 0.1.0

发现当前目录的软件包,生成完整发行归档并批量发布。

源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。

包说明.汉语.md

# 批量发布

豫言原生工具。默认只列出当前目录的包;--打包 生成 ZIP,--发布 才上传。
源码从 Git 的已跟踪文件和未被忽略的新文件收集,尊重子包边界,拒绝敏感文件名和符号链接。不支持非 Git 源码目录。

独立构建包面向当前 macOS/Linux 平台,包含依赖闭包源码、编译器、豫构、运行时及重建脚本;系统工具链与包声明的 C 系统库仍需安装。可执行包只提供当前平台运行包,不宣称跨平台发行。

命令示例见 yy批量发布 -h。上传令牌通过权限为 600 的 curl 配置文件传入,不出现在命令行参数或日志;配置文件使用后删除。
发行 ZIP 保留在输出目录,默认重试复用同一文件。源码变化后可用 `--重新打包`,同包版本的不同 ZIP 会产生新的服务器上传序数,历史修订仍可下载。

## 使用

在仓库根目录构建工具:

    ./yy豫构 构建 批量发布 --输出 yy批量发布
    ./yy批量发布 --所有者 豫言
    ./yy批量发布 --打包 --所有者 豫言

在网站登录、验证邮箱、绑定所有者后生成上传令牌。通过终端隐藏输入,避免写进 shell 历史:

    read -rs YY_UPLOAD_TOKEN
    export YY_UPLOAD_TOKEN
    ./yy批量发布 --发布 --所有者 豫言
    unset YY_UPLOAD_TOKEN

默认输出 .yybuild/发布/<所有者>/<包名>/<版本>/发布.zip。可用 --包 包名 先测试单包,用 --输出 指向扫描目录外的目录。--工具链 指向含 yy4_bs、yy豫构、运行时源码和 LICENSE 的 Git 工作树;文档工具缺失时自动构建。

发布文档复用两个标准工具:`yy文档网站生成器 构建包` 生成目标包的 API 文档,`yy源码树浏览器 构建源码` 浏览目标包的暂存源码(不含依赖或子包)。不再创建临时导入索引。工具链应使用支持这些命令的新版二进制,缺失时会自动构建。

`文档/index.html` 是统一阅读首页,展示包身份、双语说明及生成状态;`接口/` 与 `源码浏览/` 各自保持原有界面并提供相互导航。`生成状态.json` 分别记录两个生成器的结果。说明按转义纯文本显示,不执行其中 HTML。

API 生成失败时明确标记失败,部分 API 页面留在构建暂存区、不进入 ZIP,源码浏览仍生成;语法错误文件由浏览器退回转义纯文本。源码浏览失败或缺少首页仍阻止打包。文档可阅读不代表构建成功:原有库类型检查、可执行包实际构建仍须通过,不能借此绕过错误测试包的构建要求。

`--发布 --重新打包 --所有者 豫言` 会生成当前版本的新 ZIP 并发布修订。新档生成失败时不动旧档;成功后旧 ZIP 保存到同目录的 `旧档.XXXXXX/发布.zip`。每个服务器修订独立保存完整材料,不混用新旧文档。字节相同的 ZIP 重试复用原修订;重新上传旧 ZIP 不会将旧修订提升为最新。
发布只发送 ZIP 原始字节,服务器最终检查所有者。材料未展开完全视为失败,保留 ZIP 供原样重试。输出目录带互斥锁,异常中断遗留锁时,先确认没有运行任务,再删除该输出目录下的 .发布锁。

当前运行包包含本机可执行程序;程序所需的外部数据、服务和 C 动态库仍须按该包说明准备。工具不推断尚未声明的运行时资源。文件名检查不是通用秘密扫描,请先检查将要公开的源码;不要强制跟踪凭据文件。

## 验证

    node --test 工具/批量发布/批量发布.test.mjs

测试使用临时 Git 仓库、工具链替身和本机 HTTP 服务,不向生产发布。完整构建验收需另用实际包执行 --打包,并解开构建目录内的 tar.gz 运行重建.sh。

批量真实归档验收发现服务端原有固定前缀读取会展开整个 base64 字符串,触发栈溢出;现已改为只读取 64 字节。服务端初始堆同步调整为 128 MiB,以容纳 ZIP 和 base64 正文;栈保持 32 MiB。正式批量发布前必须部署这些配套修复,本工具不会自动部署服务器。

包说明.文言.md

# 批量发布

此器以豫言作。常行惟列诸包,加“--打包”乃成档,加“--发布”乃上传。源码取 Git 所录及未忽略之新文,子包有界;拒敏感名及链接。

构建之档备所依、编译器、豫构与运行时,惟供当前平台;系统工具与 C 库仍须自备。可执行之包附当前平台之器。

上传之符藏于私有暂文,不列于命令;用毕即删。已成 ZIP 留以再传。异文可加“--重新打包”,版名不易而上传序增;同档重试仍归原序,旧籍可下载。

先行“yy豫构 构建 批量发布”,后行“yy批量发布 --所有者 豫言”观其计划。加“--打包”制档,加“--发布”上传;上传之符取 YY_UPLOAD_TOKEN。可用“--包”择一包。默认成档于 .yybuild/发布,工作副本不改。

文档以“构建包”成接口,以“构建源码”览本包,不纳所依及子包,不复立导入索引。首页列包籍、双语说明及成败,接口与源码互通;生成状态.json 各记其果。说明转义而陈,不行其 HTML。

接口败则明记之,残篇不入发行;源码不合语法者以纯文示之。源码站败则不成档。可读非谓可构建,库仍须验型,可执行之包仍须成器。重新打包者,新档既成乃备其旧于“旧档.XXXXXX/发布.zip”;败则原档不动。重传旧档不进其序,各次材料不相杂。

器之运行包惟附当前平台之程序,外部数据与动态库仍依其说明而备。敏感名之检非能尽察秘密,发布者须先审其文。测试惟传于本机,不入公府。

真档验收见内服取摘要时误析全档,今改惟取首六十四字节,并备一百二十八 MiB 之堆。公府须先部署此修复,乃可批量上传;此器不擅部署。