豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 8 行 · 662 字节 · UTF-8
§
「名称」者『发布连续自举包』也。
「所有者」者『豫言』也。
「版本」者『0.1.0』也。
「类型」者「典」【「种类」者『可执行文件』也,「入口」者『入口』也,「文件名」者『yy发布连续自举包』也,】也。
「简介」者『验证并发布编译器与构建器的双种子包。』也。
「说明」者「典」【「汉语」者『包说明.汉语.md』也,「文言」者『包说明.文言.md』也,】也。
「:文言:各器各籍,所依明列。汉语:独立软件包,分类目录不参与导入解析。:」
「依赖」者「列」【『标准库』】也。
yuyan · 192 行 · 12732 字节 · UTF-8
§
「:
生成、验证并发布供 GitHub Actions 使用的连续自举包。

本工具只允许从已推送且无已跟踪改动的 yybs 分支发布。它会:

一、使用现有稳定编译器完成三阶段自举并检查固定点;
二、生成并在本机重新构建可移植自举包;
三、下载当前远端资产作为回滚备份;
四、替换 continuous-bootstrap release 中的同名资产;
五、重新下载已发布资产并逐字节核验。

用法:

    ./yy豫构 构建 发布连续自举包
    ./yy发布连续自举包 --publish

临时目录不会自动删除,其中保留发布前的远端资产,可用于手工回滚。
:」

寻观「标准库」之书。
寻观「标准库」之「语言核心」之「异常」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「标准库」之「数据结构」之「多态列」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「进程」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「输入输出」之「笔」之书。


「去除末尾换行」乃化「字符串」而「字符串」也。
「去除末尾换行」者会「内容」而
    若「串结尾是它吗」于『「:换行:」』于「内容」
    则「获取子字符串」于「零」于(「减」于(「串长度」于「内容」)于「一」)于「内容」
    否则「内容」
也。

「命令失败文字」乃化「字符串」而化(
    「爻」「:退出状态:」合
    「字符串」「:标准输出:」合
    「字符串」「:错误输出:」
)而「字符串」也。
「命令失败文字」者会「说明」而会「结果」而
    「说明」附『「:换行:」标准输出:』附(「结果」中「一」)
        附『「:换行:」错误输出:』附(「结果」中「二」)
也。

「取得命令输出」乃化「字符串」而化(「列」于「字符串」)而「字符串」也。
「取得命令输出」者会「程序」而会「参数」而
    虑「结果」者「获取输出」于「程序」于「参数」而
    若「结果」中「零」
    则「去除末尾换行」于(「结果」中「一」)
    否则「发生事故」于(「命令失败文字」于(『命令执行失败:』附「程序」)于「结果」)
也。

「运行发布步骤」乃化「字符串」而化「字符串」而化(「列」于「字符串」)而「有」也。
「运行发布步骤」者会「说明」而会「程序」而会「参数」而
    (
        「打印行」于(『==> 』附「说明」);
        「成功运行并打印结果」于「程序」于「参数」;
        「元」
    )
也。

「要求仓库状态适合发布」乃化「有」而「字符串」也。
「要求仓库状态适合发布」者会「无」而
    虑「无」者若「且」于
        (「路径是普通文件」于『豫言编译器/入口。豫』)
        于(「路径是文件夹」于『.git』)
    则「元」
    否则「发生事故」于『请从豫言仓库根目录运行本工具』而
    虑「分支」者「取得命令输出」于『git』于
        ((「列」【『branch』,『--show-current』】))而
    虑「无」者若「串相等」于「分支」于『yybs』
    则「元」
    否则「发生事故」于(『只允许从 yybs 分支发布,当前分支为:』附「分支」)而
    虑「无」者「运行发布步骤」于『更新远端 yybs 引用』于『git』于
        ((「列」【『fetch』,『origin』,『yybs』】))而
    虑「当前提交」者「取得命令输出」于『git』于
        ((「列」【『rev-parse』,『HEAD』】))而
    虑「远端提交」者「取得命令输出」于『git』于
        ((「列」【『rev-parse』,『origin/yybs』】))而
    虑「无」者若「串相等」于「当前提交」于「远端提交」
    则「元」
    否则「发生事故」于
        (『当前提交尚未推送到 origin/yybs:「:换行:」当前:』附「当前提交」附
         『「:换行:」远端:』附「远端提交」)而
    虑「已跟踪改动」者「取得命令输出」于『git』于
        ((「列」【『status』,『--porcelain』,『--untracked-files=normal』】))而
    虑「无」者若「串相等」于「已跟踪改动」于『』
    则「元」
    否则「发生事故」于(『存在尚未提交的已跟踪改动,拒绝发布:「:换行:」』附「已跟踪改动」)而
    「当前提交」
也。

「上传失败并尝试回滚」乃化「字符串」而化(
    「爻」「:退出状态:」合
    「字符串」「:标准输出:」合
    「字符串」「:错误输出:」
)而「字符串」也。
「上传失败并尝试回滚」者会「备份资产路径」而会「上传结果」而
    虑「回滚结果」者「获取输出」于『gh』于
        ((「列」【『release』,『upload』,『continuous-bootstrap』,「备份资产路径」,『--clobber』,『--repo』,『yuyan-lang/yuyan』】))而
    若「回滚结果」中「零」
    则「命令失败文字」于『发布新资产失败;旧资产已经自动恢复』于「上传结果」
    否则(「命令失败文字」于『发布新资产失败』于「上传结果」)附
        『「:换行:」自动恢复旧资产也失败:』附
        (「命令失败文字」于『回滚失败』于「回滚结果」)
也。

「发布连续自举包」乃化「有」而「有」也。
「发布连续自举包」者会「无」而
    虑「提交」者「要求仓库状态适合发布」于「元」而
    虑「临时根」者「取得命令输出」于『mktemp』于
        ((「列」【『-d』,『/tmp/yuyan-continuous-bootstrap.XXXXXX』】))而
    虑「二级编译器」者「路径合并」于(「获取当前路径」于「元」)于『yy2_bs』而
    虑「三级编译器」者「路径合并」于(「获取当前路径」于「元」)于『yy3_bs』而
    虑「四级编译器」者「路径合并」于(「获取当前路径」于「元」)于『yy4_bs』而
    虑「自举包目录」者「路径合并」于「临时根」于『yy-bootstrap』而
    虑「重建目录」者「路径合并」于「临时根」于『重建验证』而
    虑「压缩包路径」者「路径合并」于「临时根」于『yuyan-bootstrap-bundle.tar.gz』而
    虑「备份目录」者「路径合并」于「临时根」于『发布前备份』而
    虑「备份资产路径」者「路径合并」于「备份目录」于『yuyan-bootstrap-bundle.tar.gz』而
    虑「核验目录」者「路径合并」于「临时根」于『发布后核验』而
    虑「核验资产路径」者「路径合并」于「核验目录」于『yuyan-bootstrap-bundle.tar.gz』而

    虑「无」者「打印行」于(『将发布提交:』附「提交」)而
    虑「无」者「打印行」于(『临时及回滚目录:』附「临时根」)而
    虑「无」者「运行发布步骤」于『检查 GitHub 登录状态』于『gh』于
        ((「列」【『auth』,『status』】))而

    虑「无」者「运行发布步骤」于『经豫构完成三级自举及固定点验证』于『make』于(「列」【『连续自举』,『豫构』】)而
    虑「无」者「运行发布步骤」于『导出双种子自举包』于『./yy豫构』于
        (「列」【『自举包』,『--编译器』,「三级编译器」,『--输出』,「自举包目录」】)而
    虑「无」者「运行发布步骤」于『从可移植源码重建两个种子』于
        『cp』于(「列」【『-R』,「自举包目录」,「重建目录」】)而
    虑「无」者「运行发布步骤」于『验证副本,不把本机二进制混入发布包』于
        (「路径合并」于「重建目录」于『构建.sh』)于「罄」而
    虑「无」者「运行发布步骤」于『检查种子编译器』于(「路径合并」于「重建目录」于『yy_bs_stable』)于(「列」【『--version』】)而
    虑「无」者「运行发布步骤」于『检查种子豫构』于(「路径合并」于「重建目录」于『yy豫构_stable』)于(「列」【『-h』】)而
    「:文言:去机上附记,勿混入源码。汉语:macOS 打包禁用 AppleDouble 扩展属性文件,避免 Linux 把 ._*.c 当作源码。:」
    虑「无」者「运行发布步骤」于『压缩可移植自举包』于『env』于
        (「列」【『COPYFILE_DISABLE=1』,『tar』,『--no-xattrs』,『-czf』,「压缩包路径」,『-C』,「临时根」,『yy-bootstrap』】)而
    虑「历史名」者『bootstrap-bundle-』附「提交」附『.tar.gz』而
    虑「历史路径」者「路径合并」于「临时根」于「历史名」而
    虑「资产名们」者「取得命令输出」于『gh』于(「列」【『release』,『view』,『historical-bootstrap』,『--repo』,『yuyan-lang/yuyan』,『--json』,『assets』,『--jq』,『.assets[].name』】)而
    虑「无」者若「是子字符串吗」于「历史名」于「资产名们」则「元」否则(
        虑「无」者「运行发布步骤」于『保存不可变历史资产』于『cp』于(「列」【「压缩包路径」,「历史路径」】)而
        「运行发布步骤」于『发布不可变历史资产』于『gh』于(「列」【『release』,『upload』,『historical-bootstrap』,「历史路径」,『--repo』,『yuyan-lang/yuyan』】))而

    虑「无」者「运行发布步骤」于『创建远端资产备份目录』于『mkdir』于
        ((「列」【『-p』,「备份目录」】))而
    虑「无」者「运行发布步骤」于『下载当前 continuous-bootstrap 资产作为回滚备份』于『gh』于
        ((「列」【『release』,『download』,『continuous-bootstrap』,『--pattern』,『yuyan-bootstrap-bundle.tar.gz』,『--dir』,「备份目录」,『--clobber』,『--repo』,『yuyan-lang/yuyan』】))而

    虑「无」者「打印行」于『==> 发布新的 continuous-bootstrap 资产』而
    虑「上传结果」者「获取输出」于『gh』于
        ((「列」【『release』,『upload』,『continuous-bootstrap』,「压缩包路径」,『--clobber』,『--repo』,『yuyan-lang/yuyan』】))而
    虑「无」者若「上传结果」中「零」
    则(
        「打印行」于(「上传结果」中「一」);
        「标准错误打印行」于(「上传结果」中「二」);
        「元」
    )
    否则「发生事故」于(「上传失败并尝试回滚」于「备份资产路径」于「上传结果」)而

    虑「无」者「运行发布步骤」于『创建发布后核验目录』于『mkdir』于
        ((「列」【『-p』,「核验目录」】))而
    虑「无」者「运行发布步骤」于『重新下载已发布资产』于『gh』于
        ((「列」【『release』,『download』,『continuous-bootstrap』,『--pattern』,『yuyan-bootstrap-bundle.tar.gz』,『--dir』,「核验目录」,『--clobber』,『--repo』,『yuyan-lang/yuyan』】))而
    虑「无」者「运行发布步骤」于『逐字节核验远端资产』于『cmp』于
        ((「列」【「压缩包路径」,「核验资产路径」】))而

    虑「无」者「打印行」于『continuous-bootstrap 资产发布并核验成功。』而
    虑「无」者「打印行」于(『如需回滚,旧资产保存在:』附「备份资产路径」)而
    「元」
也。

「打印用法」乃化「有」而「有」也。
「打印用法」者会「无」而
    「标准错误打印行」于
        『用法:
  ./yy豫构 构建 发布连续自举包
  ./yy发布连续自举包 --publish
』
也。


鉴「获取参数」于「元」而
    有((「列」【『--publish』】))则「发布连续自举包」于「元」
    或有「其他」则(「打印用法」于「元」;「退出」于「二」)。