豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 7 行 · 607 字节 · UTF-8
§
「名称」者『批量发布』也。
「所有者」者『豫言』也。
「版本」者『0.1.0』也。
「类型」者「典」【「种类」者『可执行文件』也,「入口」者『入口』也,「文件名」者『yy批量发布』也,】也。
「简介」者『发现当前目录的软件包,生成完整发行归档并批量发布。』也。
「说明」者「典」【「汉语」者『包说明.汉语.md』也,「文言」者『包说明.文言.md』也,】也。
「依赖」者「列」【『标准库』,『构建基础』,『包配置』,『拓展库』】也。
yuyan · 77 行 · 8602 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「标准库」之「网络」之「超文本传输协议」之书。
寻观「构建基础」之「包定位」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「配置解析」之书。
寻观「包配置」之「包依赖」之书。

「:文言:命令分参,不以客文入壳;档成则留,以备再传。汉语:子进程均使用参数数组,已有发行 ZIP 不重建,保证重试字节不变。:」
「须」乃化「爻」而化「字符串」而「有」也。
「须」者会「值」而会「错」而若「值」则「元」否则「发生事故」授以「有」于「错」也。
「去尾」乃化「字符串」而「字符串」也。
「去尾」者会「文」而若「串结尾是它吗」于『「:换行:」』于「文」则「去尾」于(「去除串结尾」于『「:换行:」』于「文」)否则「文」也。
「求输出」乃化「字符串」而化(「列」于「字符串」)而「字符串」也。
「求输出」者会「程序」而会「参数」而
  虑「应」者「获取输出」于「程序」于「参数」而
  若「应」中「零」则「去尾」于(「应」中「一」)否则「发生事故」授以「字符串」于(「程序」附『 失败:』附(「应」中「二」)附(「应」中「一」))也。
「行步骤」乃化「字符串」而化(「列」于「字符串」)而「有」也。
「行步骤」者会「程序」而会「参数」而
  (「打印行」于(『  → 』附「程序」附『 』附(「间合」于『 』于「参数」));
  「须」于(「等于」于(「运行并传递输出」于「程序」于「参数」)于「零」)于(『步骤失败:』附「程序」))也。
「建目录」乃化「字符串」而「有」也。
「建目录」者会「径」而「须」于(「运行」于『mkdir』于(「列」【『-p』,「径」】))于(『无法创建目录:』附「径」)也。
「换目录」乃化「字符串」而「有」也。
「换目录」者会「径」而虑「应」者「切换当前路径」于「径」而「须」于(「等于」于(「应」中「零」)于「零」)于(「应」中「一」)也。
「文件存在」乃化「字符串」而「爻」也。
「文件存在」者会「径」而若「路径存在」于「径」则「路径是普通文件」于「径」否则「阴」也。
「复制文件」乃化「字符串」而化「字符串」而「有」也。
「复制文件」者会「源」而会「目标」而
  虑「无」者「须」于(「且」于(「文件存在」于「源」)于(「非」于(「路径为链接」于「源」)))于(『拒绝链接或非普通文件:』附「源」)而
  虑「无」者「建目录」于(「获取文件夹名」于「目标」)而
  「须」于(「运行」于『cp』于(「列」【「源」,「目标」】))于(『复制失败:』附「源」)也。
「壳引」乃化「字符串」而「字符串」也。
「壳引」者会「文」而『'』附(「串查找替换」于「文」于『'』于『'"'"'』)附『'』也。
「敏感文件」乃化「字符串」而「爻」也。
「敏感文件」者会「径」而
  虑「名」者「获取文件名」于「径」而
  虑「敏感段」者「滤」授以「字符串」于(会「段」而「包内含名」于(「列」【『.ssh』,『.aws』,『.gnupg』,『.codex』,『.wrangler』】)于「段」)于(「按字符串分隔」于『/』于「径」)而
  若「非」于(「等于」于(「长度」授以「字符串」于「敏感段」)于「零」)则「阳」否则
  「或者」于(「或者」于(「串开头是它吗」于『.env』于「名」)于(「串开头是它吗」于『.dev.vars』于「名」))于
    (「或者」于(「包内含名」于(「列」【『id_rsa』,『id_ed25519』,『credentials』,『secrets.json』,『.npmrc』,『.pypirc』,『.netrc』】)于「名」)于(「或者」于(「串结尾是它吗」于『.key』于「名」)于(「串结尾是它吗」于『.pem』于「名」)))也。
「相对文件们」乃化「字符串」而(「列」于「字符串」)也。
「相对文件们」者会「根」而
  「滤」授以「字符串」于(会「文」而「非」于(「串相等」于「文」于『』))于
  (「按字符串分隔」于『「:换行:」』于(「求输出」于『git』于(「列」【『-C』,「根」,『-c』,『core.quotepath=false』,『ls-files』,『--cached』,『--others』,『--exclude-standard』,『--』,『.』】)))也。
「复制包」乃化「包索引」而化「包记录」而化「字符串」而「有」也。
「复制包」者会「索引」而会「记录」而会「目标」而
  虑「根」者「包目录」于「记录」而
  虑「无」者「建目录」于「目标」而
  虑「无」者「态射」授以「字符串」授以「有」于(「相对文件们」于「根」)于(会「相对」而
    虑「无」者「须」于(「非」于(「串开头是它吗」于『"』于「相对」))于『源码文件名含需 Git 转义的字符,请先更名』而
    虑「源」者「路径合并」于「根」于「相对」而
    若「非」于(「路径存在」于「源」)则「元」
    否则若「非」于(「包标识相等」于(「包身份」于(「所属包」于「索引」于「源」))于(「包身份」于「记录」))则「元」
    否则虑「无」者「须」于(「非」于(「敏感文件」于「相对」))于(『候选源码含敏感文件,拒绝发布:』附「相对」)而
      「复制文件」于「源」于(「路径合并」于「目标」于「相对」))而
  「须」于(「文件存在」于(「路径合并」于「目标」于(「获取文件名」于(「记录」中「二」))))于『包声明被 Git 忽略,不能生成发行包』也。
「收集发行文件」乃化「字符串」而(「列」于「字符串」)也。
「收集发行文件」者会「根」而「串联」授以「字符串」于
  (「态射」授以「字符串」授以(「列」于「字符串」)于(「读文件夹」于「根」)于(会「名」而
    若「包内含名」于(「列」【『.』,『..』】)于「名」则「罄」授以「字符串」否则
    虑「径」者「路径合并」于「根」于「名」而
    虑「无」者「须」于(「非」于(「路径为链接」于「径」))于(『材料中不能有符号链接:』附「径」)而
    若「路径是文件夹」于「径」则「收集发行文件」于「径」否则「列」【「径」】))也。
「文件字节数」乃化「字符串」而化「字符串」而「整数」也。
「文件字节数」者会「系统」而会「径」而「理解整数」于(「求输出」于『stat』于(「列」【(若「串相等」于「系统」于『Darwin』则『-f』否则『-c』),(若「串相等」于「系统」于『Darwin』则『%z』否则『%s』),「径」】))也。
「确认发行限制」乃化「字符串」而化「字符串」而「有」也。
「确认发行限制」者会「系统」而会「根」而
  虑「文件们」者「收集发行文件」于「根」而
  虑「无」者「须」于(「非」于(「大于」于(「长度」授以「字符串」于「文件们」)于「二零四八」))于『发行材料超过 2048 个文件』而
  虑「总量」者「从左折叠」授以「字符串」授以「整数」于(会「径」而会「已有」而
    虑「大小」者「文件字节数」于「系统」于「径」而
    虑「无」者「须」于(「非」于(「大于」于「大小」于「一六七七七二一六」))于(『文件超过 16 MiB:』附「径」)而「加」于「已有」于「大小」)于「零」于「文件们」而
  「须」于(「非」于(「大于」于「总量」于「六七一零八八六四」))于『发行材料展开后超过 64 MiB』也。
yuyan · 122 行 · 15231 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「构建基础」之「包定位」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「配置解析」之书。
寻观「包配置」之「包依赖」之书。
寻观「批量发布」之「发布工具」之书。
寻观「拓展库」之「网页客户端」之「核心」之书。

「:文言:独档备其所依,重建不问原地。汉语:在独立暂存目录实际构建,发行材料不依赖原工作树的绝对路径。:」
「包存径」乃化「包记录」而「字符串」也。
「包存径」者会「记录」而『软件/』附(「记录」中「零」)附『/』附(「记录」中「一」)也。
「备运行时」乃化「字符串」而化「字符串」而「有」也。
「备运行时」者会「工具链」而会「根」而
  虑「源根」者「路径合并」于「工具链」于『运行时支持库』而
  虑「无」者「态射」授以「字符串」授以「有」于(「相对文件们」于「源根」)于(会「径」而
    若「文件存在」于(「路径合并」于「源根」于「径」)则「复制文件」于(「路径合并」于「源根」于「径」)于(「路径合并」于「根」于(『运行时支持库/』附「径」))否则「元」)而
  虑「无」者「态射」授以「字符串」授以「有」于(「滤」授以「字符串」于(会「名」而「串结尾是它吗」于『.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』于(「列」【「临时档」,「归档」】)而「归档」)
      于(会「错」而(「换目录」于「原目录」;(「发生事故」授以「字符串」于「错」)))而
    虑「无」者「换目录」于「原目录」而「结果」也。
yuyan · 116 行 · 13235 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「操作系统」之「环境变量」之书。
寻观「标准库」之「操作系统」之「进程」之书。
寻观「构建基础」之「包定位」之书。
寻观「包配置」之「配置解析」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「包依赖」之书。
寻观「拓展库」之「癸象工具」之「癸象解析」之书。
寻观「拓展库」之「癸象工具」之「癸象数据结构」之书。
寻观「批量发布」之「发布工具」之书。
寻观「批量发布」之「发行材料」之书。

「帮助」者『yy批量发布:扫描当前 Git 工作目录中的所有 。包。豫
默认只列出计划,不构建、不联网、不上传。
  --打包                 生成源码、标准文档、独立构建包及当前平台运行包
  --发布                 生成或复用 ZIP,然后上传;必须指定 --所有者
  --重新打包             重新生成当前版本 ZIP,成档后备份旧 ZIP;上传新增修订
  --所有者 名称          只选择该所有者;服务器最终核对令牌身份
  --包 名称              只处理指定包(默认全部)
  --输出 目录            默认 .yybuild/发布;保留 ZIP 与逐包结果
  --工具链 目录          默认本工具所在目录,需 yy4_bs、yy豫构及运行时源码
  --服务 HTTPS地址       默认 https://packages.yuyan-lang.org
  -h, --help             显示帮助

示例:
  ./yy批量发布
  ./yy批量发布 --打包 --所有者 豫言
  ./yy批量发布 --发布 --所有者 豫言

发布读取 YY_UPLOAD_TOKEN;请在 shell 安全设置,不要把令牌写进参数。
失败包不阻止后续包;有任一失败时退出码为 1。再次运行复用已有 ZIP,
默认不重建已有 ZIP;加 --重新打包 后按工作树生成,服务器为不同 ZIP 分配同版本的新上传序数。
需 Git、curl、zip、tar、clang 和包声明的 C 系统库。
当前仅支持 macOS/Linux;独立构建与运行材料只针对当前平台。
』也。
「选项」即「字符串」合「字符串」合「字符串」合「字符串」合「字符串」合「字符串」也。
「读选项」乃化(「列」于「字符串」)而化「选项」而「选项」也。
「读选项」者会「参数」而会「值」而鉴「参数」而
  有「罄」则「值」
  或有(「缀」于『--重新打包』于「尾」)则「读选项」于「尾」于「值」
  或有(「缀」于『--打包』于「尾」)则「读选项」于「尾」于(『打包』与(「值」中「一」)与(「值」中「二」)与(「值」中「三」)与(「值」中「四」)与(「值」中「五」))
  或有(「缀」于『--发布』于「尾」)则「读选项」于「尾」于(『发布』与(「值」中「一」)与(「值」中「二」)与(「值」中「三」)与(「值」中「四」)与(「值」中「五」))
  或有(「缀」于『--所有者』于(「缀」于「名」于「尾」))则「读选项」于「尾」于((「值」中「零」)与「名」与(「值」中「二」)与(「值」中「三」)与(「值」中「四」)与(「值」中「五」))
  或有(「缀」于『--包』于(「缀」于「名」于「尾」))则「读选项」于「尾」于((「值」中「零」)与(「值」中「一」)与「名」与(「值」中「三」)与(「值」中「四」)与(「值」中「五」))
  或有(「缀」于『--输出』于(「缀」于「名」于「尾」))则「读选项」于「尾」于((「值」中「零」)与(「值」中「一」)与(「值」中「二」)与「名」与(「值」中「四」)与(「值」中「五」))
  或有(「缀」于『--工具链』于(「缀」于「名」于「尾」))则「读选项」于「尾」于((「值」中「零」)与(「值」中「一」)与(「值」中「二」)与(「值」中「三」)与「名」与(「值」中「五」))
  或有(「缀」于『--服务』于(「缀」于「名」于「尾」))则「读选项」于「尾」于((「值」中「零」)与(「值」中「一」)与(「值」中「二」)与(「值」中「三」)与(「值」中「四」)与「名」)
  或有「其他」则「发生事故」授以「选项」于『未知选项或缺少参数,请运行 -h』也。
「绝对径」乃化「字符串」而「字符串」也。
「绝对径」者会「径」而若「路径名是绝对路径」于「径」则「径」否则「路径合并」于(「获取当前路径」于「元」)于「径」也。
「上传归档」乃化「字符串」而化「字符串」而化「字符串」而「有」也。
「上传归档」者会「服务」而会「令牌」而会「归档」而
  虑「凭据」者「求输出」于『mktemp』于(「列」【『/tmp/yy上传凭据.XXXXXX』】)而
  虑「无」者「写文件」于「凭据」于(『header = "Authorization: Bearer 』附「令牌」附『"
』)而
  虑「结果」者「尝试运行」授以「字符串」于(会「无」而
    「求输出」于『env』于(「列」【『-u』,『YY_UPLOAD_TOKEN』,『curl』,『-q』,『--config』,「凭据」,『--silent』,『--show-error』,『--fail-with-body』,『--connect-timeout』,『30』,『--max-time』,『1800』,『--header』,『Content-Type: application/zip』,『--data-binary』,(『@』附「归档」),(「服务」附『/api/releases/zip』)】))
    于(会「错」而(「删文件」于「凭据」;(「发生事故」授以「字符串」于「错」)))而
  虑「无」者「删文件」于「凭据」而
  虑「无」者「写文件」于(「归档」附『.回应.json』)于「结果」而
  鉴「癸象解析」于「结果」而
    有(「癸象对象」于「字段」)则
      虑「完成」者「滤」授以(「字符串」合「癸象」)于(会「项」而「串相等」于(「项」中「零」)于『incomplete』)于「字段」而
      鉴「完成」而有(「列」【(「忽略」与(「癸象爻」于「未完」))】)则
        若「未完」则「发生事故」授以「有」于『版本已建立,但材料尚未全部展开;重传同一 ZIP 可补齐』否则「打印行」于(『发布成功:』附「结果」)
      或有「其他」则「发生事故」授以「有」于『版本已建立,但材料尚未全部展开;重传同一 ZIP 可补齐』
    或有「其他」则「发生事故」授以「有」于『服务未返回有效发布结果』也。
「执行批次」乃化「选项」而「有」也。
「执行批次」者会「选」而
  虑「根」者「真实路径」于(「获取当前路径」于「元」)而
  虑「索引」者「发现具名包」于「根」于『』而
  虑「包们」者「滤」授以「包记录」于(会「记」而
    「且」于(「或者」于(「串相等」于(「选」中「一」)于『』)于(「串相等」于(「选」中「一」)于(「记」中「零」)))于
      (「或者」于(「串相等」于(「选」中「二」)于『』)于(「串相等」于(「选」中「二」)于(「记」中「一」))))于「索引」而
  虑「无」者「须」于(「非」于(「等于」于(「长度」授以「包记录」于「包们」)于「零」))于『没有匹配的包』而
  虑「无」者「态射」授以「包记录」授以「有」于「包们」于(会「记」而「打印行」于((「包全名」于「记」)附『  版本:』附(「包版本」于(「解析包文件」于(「记」中「二」)))))而
  若「串相等」于(「选」中「零」)于『计划』则「打印行」于『以上仅为计划;加 --打包 或 --发布 执行。』
  否则虑「工具链」者「真实路径」于(「绝对径」于(「选」中「四」))而
    虑「系统」者「求输出」于『uname』于(「列」【『-s』】)而
    虑「架构」者「求输出」于『uname』于(「列」【『-m』】)而
    虑「无」者「须」于(「包内含名」于(「列」【『Darwin』,『Linux』】)于「系统」)于『当前只支持 macOS/Linux』而
    虑「令牌」者(「获取环境变量」于『YY_UPLOAD_TOKEN』)中「一」而
    虑「无」者若「串相等」于(「选」中「零」)于『发布』则
      「须」于(「且」于(「非」于(「串相等」于(「选」中「一」)于『』))于(「且」于(「等于」于(「字节长度」于「令牌」)于「六四」)于(「全部符合」授以「字符串」于(会「字」而「是子字符串吗」于「字」于『0123456789abcdef』)于(「获取字符」于「令牌」))))于『发布需要 --所有者 和有效的 YY_UPLOAD_TOKEN』否则「元」而
    虑「服务」者「选」中「五」而
    虑「无」者「须」于(「或者」于(「串开头是它吗」于『https://』于「服务」)于(「串开头是它吗」于『http://127.0.0.1:』于「服务」))于『服务必须为 HTTPS(测试仅允许 127.0.0.1)』而
    虑「输出」者「绝对径」于(「选」中「三」)而
    虑「无」者「建目录」于「输出」而
    虑「输出」者「真实路径」于「输出」而
    虑「无」者「须」于(「或者」于(「非」于(「路径位于目录」于「输出」于「根」))于(「路径位于目录」于「输出」于(「路径合并」于「根」于『.yybuild』)))于『输出须在扫描目录之外或 .yybuild 内,避免将发行材料再次收进源码』而
    虑「无」者「态射」授以「字符串」授以「有」于(「列」【『文档网站生成器』,『源码树浏览器』】)于(会「名」而
      若「路径可执行」于(「路径合并」于「工具链」于(『yy』附「名」))则「元」否则
      虑「无」者「换目录」于「工具链」而
      虑「无」者「尝试运行」授以「有」于(会「无」而「行步骤」于『./yy豫构』于(「列」【『构建』,「名」,『--编译器』,『./yy4_bs』,『--输出』,(『yy』附「名」)】))
        于(会「错」而(「换目录」于「根」;(「发生事故」授以「有」于「错」)))而「换目录」于「根」)而
    虑「锁」者「路径合并」于「输出」于『.发布锁』而
    虑「无」者「须」于(「运行」于『mkdir』于(「列」【「锁」】))于『输出目录正被占用;若上次异常退出,请确认无运行任务后移除 .发布锁』而
    虑「状态们」者「态射」授以「包记录」授以「爻」于「包们」于(会「记」而
      「尝试运行」授以「爻」于(会「无」而
        虑「无」者「打印行」于(『处理:』附(「包全名」于「记」))而
        虑「档」者「制作归档」于「索引」于「记」于「工具链」于「输出」于「系统」于「架构」而
        虑「无」者若「串相等」于(「选」中「零」)于『发布』则「上传归档」于「服务」于「令牌」于「档」否则「打印行」于(『已打包:』附「档」)而「阳」)
      于(会「错」而(「打印行」于(『失败:』附(「包全名」于「记」)附『:』附「错」);「阴」)))而
    虑「无」者「行步骤」于『rmdir』于(「列」【「锁」】)而
    虑「失败数」者「长度」授以「爻」于(「滤」授以「爻」于(会「值」而「非」于「值」)于「状态们」)而
    虑「无」者「打印行」于(『批次结束,总数:』附(「整数表示」于(「长度」授以「包记录」于「包们」))附『,失败:』附(「整数表示」于「失败数」))而
    若「等于」于「失败数」于「零」则「元」否则「退出」于「一」也。

虑「参数」者「获取参数」于「元」而
若「或者」于(「包内含名」于「参数」于『-h』)于(「包内含名」于「参数」于『--help』)则「打印行」于「帮助」
否则「执行批次」于(「读选项」于「参数」于(『计划』与『』与『』与『.yybuild/发布』与(「获取文件夹名」于(「真实路径」于(「获取程序名」于「元」)))与『https://packages.yuyan-lang.org』))。