diff --git a/MasKit/Commands/Ls.swift b/MasKit/Commands/Ls.swift new file mode 100644 index 000000000..74268ec96 --- /dev/null +++ b/MasKit/Commands/Ls.swift @@ -0,0 +1,47 @@ +// +// List.swift +// mas-cli +// +// Created by Andrew Naylor on 21/08/2015. +// Copyright (c) 2015 Andrew Naylor. All rights reserved. +// + +import Commandant + +/// Command which lists all installed apps. +public struct ListCommand: CommandProtocol { + public typealias Options = NoOptions + public let verb = "ls" + public let function = "Lists apps from the Mac App Store which are currently installed" + + private let appLibrary: AppLibrary + + /// Public initializer. + /// - Parameter appLibrary: AppLibrary manager. + public init() { + self.init(appLibrary: MasAppLibrary()) + } + + /// Internal initializer. + /// - Parameter appLibrary: AppLibrary manager. + init(appLibrary: AppLibrary = MasAppLibrary()) { + self.appLibrary = appLibrary + } + + /// Runs the command. + public func run(_: Options) -> Result<(), MASError> { + let products = appLibrary.installedApps + if products.isEmpty { + print("No installed apps found") + return .success(()) + } + for product in products { + var appName = product.appName + if appName == "" { + appName = product.bundleIdentifier + } + print("\(product.itemIdentifier) \(appName) (\(product.bundleVersion))") + } + return .success(()) + } +} diff --git a/mas/main.swift b/mas/main.swift index eca8fa980..bef442c34 100644 --- a/mas/main.swift +++ b/mas/main.swift @@ -26,6 +26,7 @@ registry.register(InstallCommand()) registry.register(ICommand()) registry.register(PurchaseCommand()) registry.register(ListCommand()) +registry.register(LsCommand()) registry.register(LuckyCommand()) registry.register(OpenCommand()) registry.register(OutdatedCommand())