发行材料。豫
yuyan · 430 行 · 23871 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430
寻观「标准库」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「构建基础」之「包定位」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「配置解析」之书。
寻观「包配置」之「包依赖」之书。
寻观「批量发布」之「发布工具」之书。
寻观「网页客户端」之「核心」之书。
寻观「癸象工具」之「癸象数据结构」之书。
「:文言:独档备其所依,重建不问原地。汉语:在独立暂存目录实际构建,发行材料不依赖原工作树的绝对路径。:」
「包存径」乃化「包记录」而「字符串」也。
「包存径」者会「记录」而
『软件/』附(「记录」中「零」)附『/』附(「记录」中「一」)
也。
「:文言:工具链唯网页汇编之模:编译器与豫构,由 Node 宿主行之。汉语:工具链只有 Wasm 模块:编译器 yy4_bs.wasm 与豫构 yy豫构.wasm,用 Node 宿主(随 豫言操作系统 目录一起复制)运行。:」
「备运行时」乃化「字符串」而化「字符串」而「有」也。
「备运行时」者会「工具链」而会「根」而
虑「无」者
「复制文件」于(「路径合并」于「工具链」于『yy4_bs.wasm』)
于(「路径合并」于「根」于『yy4_bs.wasm』)
而
虑「无」者
「复制文件」于(「路径合并」于「工具链」于『yy豫构.wasm』)
于(「路径合并」于「根」于『yy豫构.wasm』)
而
若「文件存在」于(「路径合并」于「工具链」于『LICENSE』)则
「复制文件」于(「路径合并」于「工具链」于『LICENSE』)
于(「路径合并」于「根」于『LICENSE』)
否则
「发生事故」授以「有」于『工具链缺少 LICENSE,不能再分发』
也。
「:文言:重建唯需节点宿主三文与同代之值桥,同于工具链包之 yy稳定节点宿主;故惟复此四者,不复全目,免裸机试具之链与无用之巨文。值桥为构建之产,先取宿主之旁者,无则取工具链包者。汉语:独立构建树重建时只需 Node 宿主的三个文件和同代值桥(与 Wasm 工具链包里的 yy稳定节点宿主 相同),所以只把这四个文件复制到 豫言操作系统/宿主/节点/,不再复制整个 豫言操作系统/(其中有裸机测试夹具的符号链接和许多无关文件)。值桥是构建产物:先取工具链里宿主旁的那份,没有时取 yy稳定节点宿主 里的。:」
「节点宿主文件们」乃「列」于「字符串」也。
「节点宿主文件们」者「列」【『宿主.cjs』,『进程桥接.cjs』,『编译线程.cjs』】也。
「备操作系统」乃化「字符串」而化「字符串」而「有」也。
「备操作系统」者会「工具链」而会「根」而
虑「源目录」者「路径合并」于「工具链」于『豫言操作系统/宿主/节点』而
虑「目的目录」者「路径合并」于「根」于『豫言操作系统/宿主/节点』而
虑「无」者
「态射」授以「字符串」授以「有」
于「节点宿主文件们」
于(会「名」而「复制文件」于(「路径合并」于「源目录」于「名」)于(「路径合并」于「目的目录」于「名」))
而
虑「旁桥」者「路径合并」于「源目录」于『yy节点值桥接.wasm』而
虑「包桥」者
「路径合并」于「工具链」于『yy稳定节点宿主/yy节点值桥接.wasm』而
虑「目的桥」者「路径合并」于「目的目录」于『yy节点值桥接.wasm』而
若「文件存在」于「旁桥」则
「复制文件」于「旁桥」于「目的桥」
否则若「文件存在」于「包桥」则
「复制文件」于「包桥」于「目的桥」
否则
「发生事故」授以「有」
于『工具链缺少节点值桥 yy节点值桥接.wasm;请先在工具链目录运行 yy豫构.wasm 目标 值桥』
也。
「备文档资源」乃化「字符串」而化「字符串」而「有」也。
「备文档资源」者会「工具链」而会「根」而
虑「无」者
「态射」授以「字符串」授以「有」
于(「列」【
『应用/文档站/库/文档界面/主题.css』,
『应用/文档站/库/文档界面/界面.js』,
『应用/文档站/文档网站生成器/界面.css』,
『应用/文档站/源码树浏览器/资源/界面.css』,
『应用/文档站/源码树浏览器/资源/浏览.js』
】)于(会「径」而「复制文件」于(「路径合并」于「工具链」于「径」)于(「路径合并」于「根」于「径」))
而
「元」
也。
「补阅读导航」乃化「字符串」而化「字符串」而「有」也。
「补阅读导航」者会「目录」而会「导航」而
虑「无」者
「态射」授以「字符串」授以「有」
于(「读文件夹」于「目录」)
于(会「名」而
若「串结尾是它吗」于『.html』于「名」则
虑「径」者「路径合并」于「目录」于「名」而
「写文件」
于「径」
于(「串查找替换」于(「读文件」于「径」)于『</body>』于(「导航」附『</body>』))
否则
「元」
)
而
「元」
也。
「编码文串列表」乃化(「列」于「字符串」)而「字符串」也。
「编码文串列表」者会「列值」而
『[』附(「间合」
于『,』
于(「态射」授以「字符串」授以「字符串」于「列值」于(会「文」而『"』附(「癸象字符串转义」于「文」)附『"』)))附
『]』
也。
「生成文档」乃化「字符串」而化「包记录」而化「包」而化「字符串」而「有」也。
「生成文档」者会「工具链」而会「记录」而会「配置」而会「输出」而
虑「根」者「包存径」于「记录」而
虑「包文件」者
「路径合并」于「根」于(「获取文件名」于(「记录」中「二」))而
虑「暂接口」者
「路径合并」于(「获取当前路径」于「元」)于『接口文档暂存』而
虑「无」者「建目录」于「输出」而
「:文言:包之说明与所依,另录为静态籍。汉语:门户只读取 JSON 元数据和转义说明,不加载上传者 HTML。:」
虑「依赖名」者
「态射」授以「包引用」授以「字符串」
于(「配置数据」之「包依赖」于「配置」)
于(会「引用」而
(鉴「引用」中「零」而
有「可无」则「包所有者」于「配置」
或有(「可有」于「主」)则「主」)附『 / 』附(「引用」中「一」))而
虑「无」者
「写文件」
于(「路径合并」于「输出」于『包信息.json』)
于(『{"dependencies":』附(「编码文串列表」于「依赖名」)附『,"readmes":』附(「编码文串列表」
于(「包说明」于「配置」))附『}』)而
「:文言:接口之败明记,源码之览不废;残篇留于构建暂地,不入发行。汉语:API 失败不冒充成功,也不把部分生成物装入 ZIP。:」
虑「接口成」者
「尝试运行」授以「爻」
于(会「无」而
虑「无」者
「行步骤」于(「路径合并」于「工具链」于『yy文档网站生成器』)
于(「列」【『构建包』,「包文件」,「暂接口」】)而
虑「无」者
「须」
于(「文件存在」于(「路径合并」于「暂接口」于『index.html』))
于『接口文档缺少首页』
而
「阳」
)
于(会「错」而(「打印行」
于(『API 文档生成失败,保留源码阅读:』附「错」);
「阴」))而
虑「无」者
若「接口成」则「行步骤」
于『mv』
于(「列」【「暂接口」,(「路径合并」于「输出」于『接口』)】)
否则
「元」
而
虑「源码页」者「路径合并」于「输出」于『源码浏览』
而
虑「无」者
「行步骤」于(「路径合并」于「工具链」于『yy源码树浏览器』)
于(「列」【『构建源码』,「根」,「源码页」】)
而
虑「无」者
「须」于(「文件存在」于(「路径合并」于「源码页」于『index.html』))于『源码浏览缺少首页』
而
虑「导航」者
『<nav aria-label="包文档导航" style="position:fixed;bottom:1rem;right:1rem;z-index:100;padding:.6rem;background:white;color:#222;border:1px solid #888;border-radius:.4rem;writing-mode:horizontal-tb"><a href="../index.html">包说明 / 阅读首页</a> · <a href="../源码浏览/index.html">源码浏览</a>』
附(若「接口成」则『 · <a href="../接口/index.html">API 文档</a>』否则『 · API 文档生成失败』)附『</nav>』
而
虑「无」者「补阅读导航」于「源码页」于「导航」
而
虑「无」者
若「接口成」则「补阅读导航」于(「路径合并」于「输出」于『接口』)于「导航」否则「元」
而
虑「说明」者
「串组合并」于(「态射」授以「字符串」授以「字符串」
于(「包说明」于「配置」)
于(会「径」而
『<section><h2>』附(「转义网页文字」于「径」)附『</h2><pre>』附(「转义网页文字」
于(「读文件」于(「路径合并」于「根」于「径」)))附『</pre></section>』))
而
虑「无」者
「写文件」
于(「路径合并」于「输出」于『index.html』)
于(『<!doctype html><html lang="zh-CN"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>包阅读首页</title><style>body{max-width:64rem;margin:2rem auto;padding:1rem;font:18px/1.7 system-ui}pre{white-space:pre-wrap;overflow-wrap:anywhere}nav{margin:1rem 0}</style><body><h1>』
附
(「转义网页文字」于((「包所有者」于「配置」)附『 / 』附(「包名」于「配置」)附『 @ 』附(「包版本」
于「配置」)))附
『</h1><p>』附(「转义网页文字」于(「包简介」于「配置」))附
『</p><nav><a href="源码浏览/index.html">览源码 / 源码浏览</a> · 』附
(
若「接口成」则
『<a href="接口/index.html">览接口 / API 文档</a>(已生成)』
否则
『接口未成 / API 文档生成失败;源码仍可阅读。』
)附
『</nav><p>源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。</p>』附「说明」附
『</body></html>』)
而
「写文件」
于(「路径合并」于「输出」于『生成状态.json』)
于(『{"源码浏览":"已生成","API文档":"』附(
若「接口成」则『已生成』否则『生成失败』)附『"}』)
也。
「:文言:构建之树唯载所依之闭包,父与兄弟不在,故去其「包含在」「包含包」,免豫构两向之校败之;发行之源码仍存原文。汉语:独立构建树只含依赖闭包,父包与兄弟包不在其中,所以删去暂存包描述里的「包含在」「包含包」两个字段(语句自行首起,到以“也。”结尾的行为止),免得豫构的两向校验失败;发行源码里的包描述保持原样。:」
「去层级行们」乃化(「列」于「字符串」)而化「爻」而(「列」于「字符串」)也。
「去层级行们」者会「行们」而会「跳过中」而
鉴「行们」而
有「罄」则「罄」授以「字符串」
或有(「缀」于「此行」于「余」)则
若「跳过中」则
「去层级行们」于「余」于(「非」于(「串结尾是它吗」于『也。』于「此行」))
否则若「或者」于(「串开头是它吗」于『「包含在」者』于「此行」)
于(「串开头是它吗」于『「包含包」者』于「此行」)则
「去层级行们」
于「余」
于(「非」于(「串结尾是它吗」于『也。』于「此行」))
否则
「缀」于「此行」于(「去层级行们」于「余」于「阴」)
也。
「暂存包去层级」乃化「字符串」而「有」也。
「暂存包去层级」者会「包文件」而
虑「行们」者
「按字符分段」于『「:换行:」』于(「读文件」于「包文件」)
而
「写文件」于「包文件」于(「间合」于『「:换行:」』于(「去层级行们」于「行们」于「阴」))
也。
「:文言:纯接口之包,其源唯「。接口。豫」「。应用接口。豫」声明之文,常编译器不能以之为模而检之,故独立构建时略其类型检查,惟打包源码与文档。汉语:纯接口包的源文件只有 。接口。豫/。应用接口。豫 声明文件,普通编译器不能把它们当模块检查(见豫言操作系统接口总纲),所以独立构建时跳过类型检查,只打包源码与文档。:」
「纯接口包吗」乃化「字符串」而「爻」也。
「纯接口包吗」者会「目录」而
虑「源码们」者「收集包源码」于「目录」于「阳」而
虑「普通们」者
「滤」授以「字符串」
于(会「文」而「且」
于(「非」于(「串结尾是它吗」于『。接口。豫』于「文」))
于(「非」于(「串结尾是它吗」于『。应用接口。豫』于「文」)))
于「源码们」
而
「且」
于(「大于」于(「长度」授以「字符串」于「源码们」)于「零」)
于(「等于」于(「长度」授以「字符串」于「普通们」)于「零」)
也。
「制作归档」乃
化「包索引」而
化「包记录」而
化「字符串」而
化「字符串」而
化「字符串」而
化「字符串」而
「字符串」
也。
「制作归档」者会「索引」而会「记录」而会「工具链」而会「输出根」而会「系统」而会「架构」而
虑「配置」者「解析包文件」于(「记录」中「二」)而
虑「目录」者
「路径合并」于「输出根」于((「记录」中「零」)附『/』附(「记录」中「一」)附『/』附(「包版本」于「配置」))而
虑「无」者「建目录」于「目录」而
虑「归档」者「路径合并」于「目录」于『发布.zip』而
若「且」于(「文件存在」于「归档」)于(「非」于(「包内含名」于(「获取参数」于「元」)于『--重新打包』))则
虑「无」者「行步骤」于『unzip』于(「列」【『-tqq』,「归档」】)而
虑「旧声明」者
「求输出」于『unzip』于(「列」【『-p』,「归档」,(『源码/』附(「获取文件名」于(「记录」中「二」)))】)而
虑「无」者
「须」
于(「串相等」于「旧声明」于(「去尾」于(「读文件」于(「记录」中「二」))))
于『已有 ZIP 的包声明与工作树不同,请更新版本或使用新的输出目录』
而
(「打印行」于(『复用已生成 ZIP:』附「归档」);
「归档」)
否则
虑「原目录」者「获取当前路径」于「元」
而
虑「暂根」者
「求输出」于『mktemp』于(「列」【『-d』,『/tmp/yy发行材料.XXXXXX』】)
而
虑「构建根」者「路径合并」于「暂根」于『构建树』
而
虑「发行根」者「路径合并」于「暂根」于『发行』
而
虑「图」者「解析包图」于「索引」于(「包身份」于「记录」)
而
虑「无」者「打印行」于(『暂存材料:』附「暂根」)
而
虑「无」者
「态射」授以「包标识」授以「有」
于(「图」中「一」)
于(会「身份」
而
虑「包记」者「查包」于(「图」中「零」)于「身份」而
虑「暂目」者「路径合并」于「构建根」于(「包存径」于「包记」)而
虑「无」者「复制包」于「索引」于「包记」于「暂目」而
「暂存包去层级」于(「路径合并」于「暂目」于(「获取文件名」于(「包记」中「二」))))而
虑「无」者
「复制包」于「索引」于「记录」于(「路径合并」于「发行根」于『源码』)而
虑「无」者「备运行时」于「工具链」于「构建根」而
虑「无」者「备操作系统」于「工具链」于「构建根」而
虑「无」者「备文档资源」于「工具链」于「构建根」而
虑「无」者
「复制文件」于(「路径合并」于「工具链」于『LICENSE』)
于(「路径合并」于「发行根」于『源码/工具链许可』)
而
虑「命令」者
『node 豫言操作系统/宿主/节点/宿主.cjs ./yy豫构.wasm 』附(
若「包为库」于「配置」则『类型检查』否则『构建』)附『 』附(「壳引」于(「包名」于「配置」))附
『 --所有者 』附(「壳引」于(「包所有者」于「配置」))附『 --编译器 ./yy4_bs.wasm』
而
虑「无」者
「写文件」
于(「路径合并」于「构建根」于『重建.sh』)
于(『#!/bin/sh
set -eu
cd "$(dirname "$0")"
』附「命令」附『
』)而
虑「无」者
「行步骤」于『chmod』于(「列」【『u+x』,(「路径合并」于「构建根」于『重建.sh』)】)而
虑「结果」者
「尝试运行」授以「字符串」
于(会「无」
而
虑「无」者「换目录」于「构建根」而
虑「无」者
「生成文档」于「工具链」于「记录」于「配置」于(「路径合并」于「发行根」于『文档』)而
虑「无」者
若「包为库」于「配置」则(
若「纯接口包吗」于(「包目录」于「记录」)则
「打印行」于(『纯接口包,跳过类型检查:』附(「包名」于「配置」))
否则
「行步骤」
于『./yy豫构.wasm』
于(「列」【
『类型检查』,
(「包名」于「配置」),
『--所有者』,
(「包所有者」于「配置」),
『--编译器』,
『./yy4_bs.wasm』
】)
)
否则
虑「程序径」者「路径合并」于「暂根」于(「包程序」于「配置」)
而
虑「无」者
「行步骤」
于『./yy豫构.wasm』
于(「列」【
『构建』,
(「包名」于「配置」),
『--所有者』,
(「包所有者」于「配置」),
『--编译器』,
『./yy4_bs.wasm』,
『--输出』,
「程序径」
】)
而
虑「运行根」者「路径合并」于「暂根」于『运行树』
而
虑「无」者
「复制文件」
于「程序径」
于(「路径合并」于「运行根」于(「包程序」于「配置」))
而
虑「无」者「建目录」于(「路径合并」于「发行根」于『运行』)而
「行步骤」
于『tar』
于(「列」【
『-czf』,
(「路径合并」于「发行根」于(『运行/』附「系统」附『-』附「架构」附『.tar.gz』)),
『-C』,
「运行根」,
『.』
】)
而
虑「无」者「建目录」于(「路径合并」于「发行根」于『构建』)而
虑「无」者
「行步骤」
于『tar』
于(「列」【
『-czf』,
(「路径合并」于「发行根」于(『构建/』附「系统」附『-』附「架构」附『.tar.gz』)),
『软件』,
『豫言操作系统』,
『yy4_bs.wasm』,
『yy豫构.wasm』,
『重建.sh』,
『LICENSE』
】)
而
虑「无」者「确认发行限制」于「系统」于「发行根」而
虑「无」者「换目录」于「发行根」而
虑「临时档」者「路径合并」于「暂根」于『发布.zip』而
虑「无」者
「行步骤」
于『env』
于(「列」【
(若「串相等」于「系统」于『Darwin』则『LC_ALL=en_US.UTF-8』否则『LC_ALL=C.UTF-8』),
『zip』,
『-q』,
『-r』,
『-D』,
『-X』,
「临时档」,
『.』
】)
而
虑「无」者
「须」
于(「非」于(「大于」于(「文件字节数」于「系统」于「临时档」)于「一六七七七二一六」))
于『ZIP 超过服务器 16 MiB 上限』而
「:文言:新档既成,乃藏其旧。汉语:构建失败不动旧 ZIP,成功后先保留可恢复的本地备份,再替换当前归档。:」
虑「无」者
若「文件存在」于「归档」则
虑「旧目录」者
「求输出」
于『mktemp』
于(「列」【『-d』,(「路径合并」于「目录」于『旧档.XXXXXX』)】)
而
「行步骤」
于『mv』
于(「列」【「归档」,(「路径合并」于「旧目录」于『发布.zip』)】)
否则
「元」
而
虑「无」者「行步骤」于『mv』于(「列」【「临时档」,「归档」】)而
「归档」
)
于(会「错」而(「换目录」于「原目录」;
(「发生事故」授以「字符串」于「错」)))
而
虑「无」者「换目录」于「原目录」而
「结果」
也。