Part of the EdgeZero CLI Extensions effort — stage 5 of 8.
Scope: add the private CommandRunner infrastructure (runner.rs: CommandSpec { program, args, cwd, stdin, env }, CommandRunner trait, RealCommandRunner, MockCommandRunner for tests). Add the auth command — AuthArgs (subcommand-wrapping, no Default), AuthSub { Login, Logout, Status } each with --adapter, and run_auth. Per-adapter behaviour delegates to the native CLI: axum no-ops; cloudflare wrangler login/logout/whoami; fastly fastly profile create/delete/list; spin spin cloud login/logout/info. Wire app-demo-cli auth.
Ship gate: mock-runner verification across the full (adapter, sub) matrix, including tool-not-found and non-zero-exit cases.
Design spec: §11, §6.1 — Implementation plan: Stage 5.
Part of the EdgeZero CLI Extensions effort — stage 5 of 8.
Scope: add the private
CommandRunnerinfrastructure (runner.rs:CommandSpec{ program, args, cwd, stdin, env },CommandRunnertrait,RealCommandRunner,MockCommandRunnerfor tests). Add theauthcommand —AuthArgs(subcommand-wrapping, noDefault),AuthSub { Login, Logout, Status }each with--adapter, andrun_auth. Per-adapter behaviour delegates to the native CLI: axum no-ops; cloudflarewrangler login/logout/whoami; fastlyfastly profile create/delete/list; spinspin cloud login/logout/info. Wireapp-demo-cli auth.Ship gate: mock-runner verification across the full (adapter, sub) matrix, including tool-not-found and non-zero-exit cases.
Design spec: §11, §6.1 — Implementation plan: Stage 5.