From 99459a0a71064c083f8ee4b2c7168eb9f010f85d Mon Sep 17 00:00:00 2001 From: Michael Housh Date: Mon, 16 Dec 2024 20:44:30 -0500 Subject: [PATCH] feat: Adds dump-configuration command. --- Package.resolved | 11 +++++++- Package.swift | 2 ++ Sources/VaultClient/VaultClient.swift | 10 +++---- .../hpa/UtilsCommands/DumpConfigCommand.swift | 27 +++++++++++++++++++ Sources/hpa/UtilsCommands/UtilsCommand.swift | 1 + Sources/hpa/VaultCommands/EditCommand.swift | 1 + Sources/hpa/VaultCommands/VaultCommand.swift | 2 +- 7 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 Sources/hpa/UtilsCommands/DumpConfigCommand.swift create mode 100644 Sources/hpa/VaultCommands/EditCommand.swift diff --git a/Package.resolved b/Package.resolved index 2aa9f9a..08276c9 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "a3b90cdeec7e11e73a0a47c1f8dffa472c22f0c6385282eb11096210e3e7ad8b", + "originHash" : "bc31b11e5e7d488e0a9c1bf91cb572d29f782bfd8e43f44157036f8f3d282893", "pins" : [ { "identity" : "combine-schedulers", @@ -64,6 +64,15 @@ "version" : "1.3.0" } }, + { + "identity" : "swift-custom-dump", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swift-custom-dump.git", + "state" : { + "revision" : "82645ec760917961cfa08c9c0c7104a57a0fa4b1", + "version" : "1.3.3" + } + }, { "identity" : "swift-dependencies", "kind" : "remoteSourceControl", diff --git a/Package.swift b/Package.swift index 84702cd..7bb79ca 100644 --- a/Package.swift +++ b/Package.swift @@ -17,6 +17,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0"), + .package(url: "https://github.com/pointfreeco/swift-custom-dump.git", from: "1.3.3"), .package(url: "https://github.com/pointfreeco/swift-dependencies", from: "1.5.2"), .package(url: "https://github.com/m-housh/swift-shell-client.git", from: "0.1.0"), .package(url: "https://git.housh.dev/michael/swift-cli-doc.git", from: "0.2.0"), @@ -34,6 +35,7 @@ let package = Package( "VaultClient", .product(name: "ArgumentParser", package: "swift-argument-parser"), .product(name: "CliDoc", package: "swift-cli-doc"), + .product(name: "CustomDump", package: "swift-custom-dump"), .product(name: "Dependencies", package: "swift-dependencies"), .product(name: "ShellClient", package: "swift-shell-client") ] diff --git a/Sources/VaultClient/VaultClient.swift b/Sources/VaultClient/VaultClient.swift index 9795314..8fcadee 100644 --- a/Sources/VaultClient/VaultClient.swift +++ b/Sources/VaultClient/VaultClient.swift @@ -51,8 +51,8 @@ public struct VaultClient: Sendable { @_spi(Internal) public enum Route: String, Equatable, Sendable { - case encrypt case decrypt + case encrypt public var verb: String { rawValue } } @@ -65,12 +65,8 @@ extension VaultClient: DependencyKey { public static var liveValue: VaultClient { .init( run: .init( - decrypt: { - try await $0.run(route: .decrypt) - }, - encrypt: { - try await $0.run(route: .encrypt) - } + decrypt: { try await $0.run(route: .decrypt) }, + encrypt: { try await $0.run(route: .encrypt) } ) ) } diff --git a/Sources/hpa/UtilsCommands/DumpConfigCommand.swift b/Sources/hpa/UtilsCommands/DumpConfigCommand.swift new file mode 100644 index 0000000..2336c25 --- /dev/null +++ b/Sources/hpa/UtilsCommands/DumpConfigCommand.swift @@ -0,0 +1,27 @@ +import ArgumentParser +import CliDoc +import ConfigurationClient +import CustomDump +import Dependencies + +struct DumpConfigCommand: AsyncParsableCommand { + static let commandName = "dump-config" + + static let configuration = CommandConfiguration( + commandName: commandName, + abstract: createAbstract("Show the current configuration."), + usage: .default(commandName: commandName, parentCommand: "utils", usesArguments: false, usesExtraArguments: false), + discussion: Discussion { + "Useful to debug your configuration settings / make sure they load properly." + } + ) + + func run() async throws { + @Dependency(\.configurationClient) var configurationClient + + let configuration = try await configurationClient.findAndLoad() + + customDump(configuration) + } + +} diff --git a/Sources/hpa/UtilsCommands/UtilsCommand.swift b/Sources/hpa/UtilsCommands/UtilsCommand.swift index ac24c4d..07a6e00 100644 --- a/Sources/hpa/UtilsCommands/UtilsCommand.swift +++ b/Sources/hpa/UtilsCommands/UtilsCommand.swift @@ -10,6 +10,7 @@ struct UtilsCommand: AsyncParsableCommand { These are commands that are generally only run on occasion / less frequently used. """, subcommands: [ + DumpConfigCommand.self, GenerateProjectTemplateCommand.self, GenerateConfigurationCommand.self, InstallDependenciesCommand.self diff --git a/Sources/hpa/VaultCommands/EditCommand.swift b/Sources/hpa/VaultCommands/EditCommand.swift new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Sources/hpa/VaultCommands/EditCommand.swift @@ -0,0 +1 @@ + diff --git a/Sources/hpa/VaultCommands/VaultCommand.swift b/Sources/hpa/VaultCommands/VaultCommand.swift index febe2bf..f20003b 100644 --- a/Sources/hpa/VaultCommands/VaultCommand.swift +++ b/Sources/hpa/VaultCommands/VaultCommand.swift @@ -24,7 +24,7 @@ struct VaultCommand: AsyncParsableCommand { .separator(.newLine(count: 2)) }, subcommands: [ - EncryptCommand.self, DecryptCommand.self + DecryptCommand.self, EncryptCommand.self ] ) }