air

    air —— moonair 的 moonx 命令面:wget 风格断电续传下载 + aria2 兼容 JSON-RPC 服务

    command-line
    moonx
    wasm
    aria2
    downloader
    Download zip
    Author
    Version
    0.0.5
    License
    Apache-2.0
    Last updated
    2 hours ago
    Downloads
    14

    #air

    #一、定位与血统

    air 是 moonair(aria2 协议核的 MoonBit 验证实现,thy1016/moonair)的 moonx 命令面:薄模块,根包即可执行,preferred_target = "wasm"——moonx 只跑注册表预编译 wasm(经 moonrun 宿主;moonbitlang/async 在 wasm 上走 moonrun 的宿主实现,API 与 native 同一栈)。

    两用法(2026-11-05 拍,X-3):

    air [wget 旗] <url>... 下载(moonwget 引擎:断电续传,-c/-O/-q/-i/--save-session) air --enable-rpc [旗] aria2 兼容 JSON-RPC 服务(POST /jsonrpc) --rpc-listen-port=<n> 端口 1024-65535,缺省 6800(aria2c 1.36.0 原文) --rpc-secret=<token> 令牌(params 首位 "token:<token>") --rpc-listen-all 监听全部网卡(必须带 --rpc-secret;aria2c 缺省 只听回环,air 缺省同;对外必须带令牌是 moonair 更严的既有律,不放宽) -d, --dir=<dir> 下载根目录(缺省当前目录) --save-session=<file> 会话落档;起服时在场即自动恢复(RS2) air --help | air --version

    血统:命令面形状与 cli/wget(moonbit-community/cmd)同源致敬;旗名按 aria2 1.36.0 --help 原文收,不凭记忆写。勘定与裁决(X-1~X-5)见 moonair/.mingspace/air_ming.md。

    #二、包结构

    包职责入口
    thy1016/air(根)moonx 薄启动器:argv → command 库,非零码经 moonbitlang/x/sys 可移植 exitair [旗] <url>...
    thy1016/air/command两用法解析与分派;RPC 旗解析(aria2 原文对位);air_main 返退出码库(parse_air_args / air_main)
    thy1016/air/progress传输界面渲染件(air 自持,零依赖纯件):单行进度(百分数 + [===>] 棒 + 1024 进位尺寸 + 速率/ETA),后续帧 ESC[1A\r 光标上覆写(换行收口过 wasm 行缓冲闸),非 tty 退化周期整行;接线候 moonair 进度钩库(ProgressMeter::frame)
    driver/e2e.sh进程外 e2e 台:native 可执行件 + moonrun 直跑 wasm 双运行时 × 下载 / 404 退出码 / RPC 三判sh driver/e2e.sh

    #三、开发(依赖未发布期)

    thy1016/moonair 尚未发布 mooncakes;本地开发用区外临时 workspace 叠 层(bitbang2 契约:本区不立 moon.work,此文件不进仓):

    # /tmp/air_dev/moon.work(成员写本机绝对路径) members = [ "<air 仓路径>", "<moonair 仓路径>", ]

    export MOON_WORK=/tmp/air_dev/moon.work moon check --deny-warn --target wasm --no-mbti "$PWD" moon test -p thy1016/air/command --target wasm sh driver/e2e.sh

    工作区模式坑:moon check 会顺手改写成员仓的 pkg.generated.mbti(检查 用 --no-mbti);moon check -p <包名> 会把包名当目录解析(传目录路径); 跑完 fmt / info 核一次 moonair 仓 git status。

    发布后(AX2)不设 MOON_WORK 即走注册表解析。

    #四、测试门

    门判
    moon check --deny-warn(native 与 wasm 双目标)0 错 0 警
    moon test -p thy1016/air/command --target native|wasm解析罐 7/7 双腿
    moon test -p thy1016/air/progress --target native|wasm渲染罐 9/9 双腿(格式钉死 + 帧序列 + ANSI 形)
    sh driver/e2e.sh(N=3)判行 AIR-E2E: PASS(8 判:两运行时 × 下载 sha / 404 退出码 8 / RPC 令牌门 + addUri → complete + sha)
    moon info 接口件随提交

    #五、演进

    0.0.x 实验期;跨 minor 可断(随 CHANGELOG)。二版候拍:torrent / 磁力 / Metalink 输入面(BT 接 RPC 码面役之后)。

    Source Files