豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 295 行 · 15684 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「路径」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「操作系统」之「环境变量」之书。
寻观「标准库」之「操作系统」之「进程」之书。
寻观「构建基础」之「包定位」之书。
寻观「包配置」之「配置解析」之书。
寻观「包配置」之「配置数据」之书。
寻观「包配置」之「包依赖」之书。
寻观「癸象工具」之「癸象解析」之书。
寻观「癸象工具」之「癸象数据结构」之书。
寻观「批量发布」之「发布工具」之书。
寻观「批量发布」之「发行材料」之书。

「帮助」者『yy批量发布:扫描当前 Git 工作目录中的所有 。包。豫
默认只列出计划,不构建、不联网、不上传。
  --打包                 生成源码、标准文档、独立构建包及当前平台运行包
  --发布                 生成或复用 ZIP,然后上传;必须指定 --所有者
  --重新打包             重新生成当前版本 ZIP,成档后备份旧 ZIP;上传新增修订
  --所有者 名称          只选择该所有者;服务器最终核对令牌身份
  --包 名称              只处理指定包(默认全部)
  --输出 目录            默认 .yybuild/发布;保留 ZIP 与逐包结果
  --工具链 目录          默认本工具所在目录,需 yy4_bs.wasm、yy豫构.wasm 与 Node 宿主
  --服务 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豫构.wasm』
        于(「列」【『构建』,「名」,『--编译器』,『./yy4_bs.wasm』,『--输出』,(『yy』附「名」)】))
        于(会「错」而(「换目录」于「根」;
            (「发生事故」授以「有」于「错」)))
    而
    「换目录」于「根」)
              而
              虑「锁」者「路径合并」于「输出」于『.发布锁』
              而
              虑「无」者
                「须」
                  于(「运行」于『mkdir』于(「列」【「锁」】))
                  于『输出目录正被占用;若上次异常退出,请确认无运行任务后移除 .发布锁』
              而
              虑「状态们」者
                「态射」授以「包记录」授以「爻」
                于「包们」
                于(会「记」而
                  「尝试运行」授以「爻」
                  于(会「无」
                    而
  虑「无」者「打印行」于(『处理:』附(「包全名」于「记」))而
  虑「档」者
    「制作归档」于「索引」于「记」于「工具链」于「输出」于「系统」于「架构」而
    虑「无」者
      若「串相等」于(「选」中「零」)于『发布』则
        「上传归档」于「服务」于「令牌」于「档」
      否则
        「打印行」于(『已打包:』附「档」)
    而
    「阳」)
    于(会「错」而(「打印行」
      于(『失败:』附(「包全名」于「记」)附『:』附「错」);
      「阴」)))
              而
              虑「无」者「行步骤」于『rmdir』于(「列」【「锁」】)
              而
              虑「失败数」者
                「长度」授以「爻」于(「滤」授以「爻」于(会「值」而「非」于「值」)于「状态们」)
              而
              虑「无」者
                「打印行」于(『批次结束,总数:』附(「整数表示」于(「长度」授以「包记录」于「包们」))附『,失败:』
                  附(「整数表示」于「失败数」))
              而
              若「等于」于「失败数」于「零」则「元」否则「退出」于「一」
也。

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