Files
container/Sources/ContainerCommands/Image/ImageInspect.swift
T
J Logan e7018bc30b Cleans up image subcommand options. (#659)
- Part of #515.
- Order options alphabetically.
- Use consistent descriptions for platform, os, arch.
- Add os/arch options to push.
- Rename ImageRemove to ImageDelete since delete is the primary command
and rm is the alias.

## Motivation and Context
Clear, consistent presentation of command help.
2025-09-23 10:55:04 -07:00

56 lines
2.0 KiB
Swift

//===----------------------------------------------------------------------===//
// Copyright © 2025 Apple Inc. and the container project authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//===----------------------------------------------------------------------===//
import ArgumentParser
import ContainerClient
import ContainerizationError
import Foundation
import SwiftProtobuf
extension Application {
public struct ImageInspect: AsyncParsableCommand {
public static let configuration = CommandConfiguration(
commandName: "inspect",
abstract: "Display information about one or more images")
@OptionGroup
var global: Flags.Global
@Argument(help: "Images to inspect")
var images: [String]
public init() {}
public func run() async throws {
var printable = [any Codable]()
let result = try await ClientImage.get(names: images)
let notFound = result.error
for image in result.images {
guard !Utility.isInfraImage(name: image.reference) else {
continue
}
printable.append(try await image.details())
}
if printable.count > 0 {
print(try printable.jsonArray())
}
if notFound.count > 0 {
throw ContainerizationError(.notFound, message: "Images: \(notFound.joined(separator: "\n"))")
}
}
}
}