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
寻观「标准库」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「构建基础」之「包定位」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「配置解析」之书。
寻观「包配置」之「包依赖」之书。
寻观「批量发布」之「发布工具」之书。
寻观「拓展库」之「网页客户端」之「核心」之书。
「:文言:独档备其所依,重建不问原地。汉语:在独立暂存目录实际构建,发行材料不依赖原工作树的绝对路径。:」
「包存径」乃化「包记录」而「字符串」也。
「包存径」者会「记录」而『软件/』附(「记录」中「零」)附『/』附(「记录」中「一」)也。
「备运行时」乃化「字符串」而化「字符串」而「有」也。
「备运行时」者会「工具链」而会「根」而
虑「源根」者「路径合并」于「工具链」于『运行时支持库』而
虑「无」者「态射」授以「字符串」授以「有」于(「相对文件们」于「源根」)于(会「径」而
若「文件存在」于(「路径合并」于「源根」于「径」)则「复制文件」于(「路径合并」于「源根」于「径」)于(「路径合并」于「根」于(『运行时支持库/』附「径」))否则「元」)而
虑「无」者「态射」授以「字符串」授以「有」于(「滤」授以「字符串」于(会「名」而「串结尾是它吗」于『.a』于「名」)于(「读文件夹」于「源根」))于(会「名」而
「复制文件」于(「路径合并」于「源根」于「名」)于(「路径合并」于「根」于(『运行时支持库/』附「名」)))而
虑「无」者「复制文件」于(「路径合并」于「工具链」于『yy4_bs』)于(「路径合并」于「根」于『yy4_bs』)而
虑「无」者「复制文件」于(「路径合并」于「工具链」于『yy豫构』)于(「路径合并」于「根」于『yy豫构』)而
若「文件存在」于(「路径合并」于「工具链」于『LICENSE』)则「复制文件」于(「路径合并」于「工具链」于『LICENSE』)于(「路径合并」于「根」于『LICENSE』)否则「发生事故」授以「有」于『工具链缺少 LICENSE,不能再分发』也。
「备文档资源」乃化「字符串」而化「字符串」而「有」也。
「备文档资源」者会「工具链」而会「根」而
虑「无」者「态射」授以「字符串」授以「有」于(「列」【『网站/共用/主题.css』,『网站/共用/界面.js』,『工具/文档网站生成器/界面.css』,『工具/源码树浏览器/资源/界面.css』】)于(会「径」而
「复制文件」于(「路径合并」于「工具链」于「径」)于(「路径合并」于「根」于「径」))而「元」也。
「补阅读导航」乃化「字符串」而化「字符串」而「有」也。
「补阅读导航」者会「目录」而会「导航」而
虑「无」者「态射」授以「字符串」授以「有」于(「读文件夹」于「目录」)于(会「名」而
若「串结尾是它吗」于『.html』于「名」则
虑「径」者「路径合并」于「目录」于「名」而
「写文件」于「径」于(「串查找替换」于(「读文件」于「径」)于『</body>』于(「导航」附『</body>』))
否则「元」)而「元」也。
「生成文档」乃化「字符串」而化「包记录」而化「包」而化「字符串」而「有」也。
「生成文档」者会「工具链」而会「记录」而会「配置」而会「输出」而
虑「根」者「包存径」于「记录」而
虑「包文件」者「路径合并」于「根」于(「获取文件名」于(「记录」中「二」))而
虑「暂接口」者「路径合并」于(「获取当前路径」于「元」)于『接口文档暂存』而
虑「无」者「建目录」于「输出」而
「:文言:接口之败明记,源码之览不废;残篇留于构建暂地,不入发行。汉语: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』)于(「路径合并」于「发行根」于『源码/工具链许可』)而
虑「命令」者『./yy豫构 』附(若「包为库」于「配置」则『类型检查』否则『构建』)附『 』附(「壳引」于(「包名」于「配置」))附『 --所有者 』附(「壳引」于(「包所有者」于「配置」))附『 --编译器 ./yy4_bs』而
虑「无」者「写文件」于(「路径合并」于「构建根」于『重建.sh』)于(『#!/bin/sh
set -eu
cd "$(dirname "$0")"
』附「命令」附『
』)而
虑「无」者「行步骤」于『chmod』于(「列」【『u+x』,(「路径合并」于「构建根」于『重建.sh』)】)而
虑「结果」者「尝试运行」授以「字符串」于(会「无」而
虑「无」者「换目录」于「构建根」而
虑「无」者「生成文档」于「工具链」于「记录」于「配置」于(「路径合并」于「发行根」于『文档』)而
虑「无」者若「包为库」于「配置」则「行步骤」于『./yy豫构』于(「列」【『类型检查』,(「包名」于「配置」),『--所有者』,(「包所有者」于「配置」),『--编译器』,『./yy4_bs』】)
否则虑「程序径」者「路径合并」于「暂根」于(「包程序」于「配置」)而
虑「无」者「行步骤」于『./yy豫构』于(「列」【『构建』,(「包名」于「配置」),『--所有者』,(「包所有者」于「配置」),『--编译器』,『./yy4_bs』,『--输出』,「程序径」】)而
虑「运行根」者「路径合并」于「暂根」于『运行树』而
虑「无」者「复制文件」于「程序径」于(「路径合并」于「运行根」于(「包程序」于「配置」))而
虑「无」者「建目录」于(「路径合并」于「发行根」于『运行』)而
「行步骤」于『tar』于(「列」【『-czf』,(「路径合并」于「发行根」于(『运行/』附「系统」附『-』附「架构」附『.tar.gz』)),『-C』,「运行根」,『.』】)而
虑「无」者「建目录」于(「路径合并」于「发行根」于『构建』)而
虑「无」者「行步骤」于『tar』于(「列」【『-czf』,(「路径合并」于「发行根」于(『构建/』附「系统」附『-』附「架构」附『.tar.gz』)),『软件』,『运行时支持库』,『yy4_bs』,『yy豫构』,『重建.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』于(「列」【「临时档」,「归档」】)而「归档」)
于(会「错」而(「换目录」于「原目录」;(「发生事故」授以「字符串」于「错」)))而
虑「无」者「换目录」于「原目录」而「结果」也。