blob: c345a6519676dd0a96838bf3506dae2f6b4d499a [file] [log] [blame]
# Copyright 2024 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import json
from dataclasses import dataclass
import fx_cmd
from async_utils.command import CommandOutput
from .lib import FfxCmd, FfxOutputFormat
class VersionCommand(fx_cmd.CommandTransformer[None, "VersionOutput"]):
"""Transformer for `ffx version` command."""
# overrides base class
def _to_output(self, output: CommandOutput) -> "VersionOutput":
data = json.loads(output.stdout)
return VersionOutput(api_level=data["tool_version"]["api_level"])
@dataclass
class VersionOutput:
"""Schema for ffx version output"""
api_level: int
def version(inner: fx_cmd.ExecutableCommand | None = None) -> VersionCommand:
return VersionCommand(
"version",
inner=FfxCmd(inner=inner, output_format=FfxOutputFormat.JSON),
)