豫言 / 批量发布 @ 0.1.0
发现当前目录的软件包,生成完整发行归档并批量发布。
包说明.汉语.md
# 批量发布
豫言原生工具。默认只列出当前目录的包;--打包 生成 ZIP,--发布 才上传。
源码从 Git 的已跟踪文件和未被忽略的新文件收集,尊重子包边界,拒绝敏感文件名和符号链接。不支持非 Git 源码目录。
独立构建包包含依赖闭包源码、Wasm 工具链(编译器 yy4_bs.wasm、豫构 yy豫构.wasm)、Node 宿主(`豫言操作系统/宿主/节点/` 下的三个 .cjs 与同代值桥)及重建脚本;重建只需 Node.js。可执行包的程序是 .wasm 模块,用 Node 宿主运行。独立构建树只含依赖闭包,其中的包描述去掉「包含在」「包含包」(发行源码保持原样);纯接口包(只有 。接口。豫/。应用接口。豫)不能被普通编译器检查,独立构建时跳过类型检查。
命令示例见 yy批量发布 -h。上传令牌通过权限为 600 的 curl 配置文件传入,不出现在命令行参数或日志;配置文件使用后删除。
发行 ZIP 保留在输出目录,默认重试复用同一文件。源码变化后可用 `--重新打包`,同包版本的不同 ZIP 会产生新的服务器上传序数,历史修订仍可下载。
## 使用
在仓库根目录构建工具:
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 批量发布 --输出 yy批量发布.wasm
node 豫言操作系统/宿主/节点/宿主.cjs yy批量发布.wasm --所有者 豫言
node 豫言操作系统/宿主/节点/宿主.cjs yy批量发布.wasm --打包 --所有者 豫言
在网站登录、验证邮箱、绑定所有者后生成上传令牌。通过终端隐藏输入,避免写进 shell 历史:
read -rs YY_UPLOAD_TOKEN
export YY_UPLOAD_TOKEN
node 豫言操作系统/宿主/节点/宿主.cjs yy批量发布.wasm --发布 --所有者 豫言
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 供原样重试。输出目录带互斥锁,异常中断遗留锁时,先确认没有运行任务,再删除该输出目录下的 .发布锁。
当前运行包包含本机可执行程序;程序所需的外部数据、服务和动态库仍须按该包说明准备。工具不推断尚未声明的运行时资源。文件名检查不是通用秘密扫描,请先检查将要公开的源码;不要强制跟踪凭据文件。
## 验证
新 ZIP 额外提供 `文档/包信息.json`(依赖摘要、说明路径)和 `文档/接口/模块映射.json`(包内文件对应 API 页)。门户据此分开包首页、文档和文件树;阅读页在内容域全页打开,可切换同修订文档与源码,不使用 iframe。已有 ZIP 不会自动改写,更新阅读材料仍需 `--重新打包`。
node --test 应用/发布/批量发布/批量发布.test.mjs
测试使用临时 Git 仓库、工具链替身和本机 HTTP 服务,不向生产发布。完整构建验收需另用实际包执行 --打包,并解开构建目录内的 tar.gz 运行重建.sh。
批量真实归档验收发现服务端原有固定前缀读取会展开整个 base64 字符串,触发栈溢出;现已改为只读取 64 字节。服务端初始堆同步调整为 128 MiB,以容纳 ZIP 和 base64 正文;栈保持 32 MiB。正式批量发布前必须部署这些配套修复,本工具不会自动部署服务器。
包说明.文言.md
# 批量发布 新档附包信息.json 记所依与说明,接口之模块映射.json 记文件与篇之属。门户分包籍、文档、文件树;内容域自成阅读页,同次文与源可互易,不复嵌窗。旧档不擅改,更新材料须重新打包。 此器以豫言作。常行惟列诸包,加“--打包”乃成档,加“--发布”乃上传。源码取 Git 所录及未忽略之新文,子包有界;拒敏感名及链接。 构建之档备所依、Wasm 工具链(编译器 yy4_bs.wasm、豫构 yy豫构.wasm)及 Node 宿主(`豫言操作系统/宿主/节点/` 下三 .cjs 与同代之值桥);重建唯须 Node.js。可执行之包,其程序为 .wasm 之模,以 Node 宿主行之。独立构建之树唯载所依之闭包,其中包述去「包含在」「包含包」(发行之源码存其原文);纯接口之包(唯有 。接口。豫/。应用接口。豫)常编译器不能检之,独立构建时略其类型检查。 上传之符藏于私有暂文,不列于命令;用毕即删。已成 ZIP 留以再传。异文可加“--重新打包”,版名不易而上传序增;同档重试仍归原序,旧籍可下载。 先行“yy豫构 构建 批量发布”,后行“yy批量发布 --所有者 豫言”观其计划。加“--打包”制档,加“--发布”上传;上传之符取 YY_UPLOAD_TOKEN。可用“--包”择一包。默认成档于 .yybuild/发布,工作副本不改。 文档以“构建包”成接口,以“构建源码”览本包,不纳所依及子包,不复立导入索引。首页列包籍、双语说明及成败,接口与源码互通;生成状态.json 各记其果。说明转义而陈,不行其 HTML。 接口败则明记之,残篇不入发行;源码不合语法者以纯文示之。源码站败则不成档。可读非谓可构建,库仍须验型,可执行之包仍须成器。重新打包者,新档既成乃备其旧于“旧档.XXXXXX/发布.zip”;败则原档不动。重传旧档不进其序,各次材料不相杂。 器之运行包惟附当前平台之程序,外部数据与动态库仍依其说明而备。敏感名之检非能尽察秘密,发布者须先审其文。测试惟传于本机,不入公府。 真档验收见内服取摘要时误析全档,今改惟取首六十四字节,并备一百二十八 MiB 之堆。公府须先部署此修复,乃可批量上传;此器不擅部署。