diff --git a/.agents/interfaces/.gitkeep b/.agents/interfaces/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.agents/interfaces/macos/PackageResourcesClient.swiftinterface b/.agents/interfaces/macos/PackageResourcesClient.swiftinterface new file mode 100644 index 0000000..f065f49 --- /dev/null +++ b/.agents/interfaces/macos/PackageResourcesClient.swiftinterface @@ -0,0 +1,363 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.4 (swiftlang-6.4.0.25.4 clang-2100.3.25.1) +// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -language-mode 6 -O -enable-experimental-feature DebugDescriptionMacro -module-name PackageResourcesClient -package-name package_resources_cli +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.4 +import Casification +import Dependencies +import Foundation +import FunctionComposition +import IssueReporting +import KeyPathsExtensions +import PackageResourcesCore +import PackageResourcesFS +import Snippets +import Swift +import SwiftSnippets +import XCStringsCatalog +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +public protocol _CollectableResourceType : Swift::Sendable { + associatedtype Source : PackageResourcesClient::_RenderableResourceType, Swift::Hashable + static func collect(atPath path: Swift::String) throws -> [Self.Source] +} +extension Dependencies::DependencyValues { + public struct ResourceCollectorKey : Swift::Hashable where Resource : Swift::Sendable { + @_hasInitialValue internal let id: Swift::ObjectIdentifier + public static func type(_ type: Resource.Type) -> Dependencies::DependencyValues.PackageResourcesClient::ResourceCollectorKey + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: Dependencies::DependencyValues.PackageResourcesClient::ResourceCollectorKey, _ b: Dependencies::DependencyValues.PackageResourcesClient::ResourceCollectorKey) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } + public subscript(collectResourcesOf resourceType: Dependencies::DependencyValues.PackageResourcesClient::ResourceCollectorKey) -> NominalFunctionTypes::SendableSyncThrowingFunc where Resource : PackageResourcesClient::_CollectableResourceType { + get + set + } +} +extension Swift::KeyPath where Root == Dependencies::DependencyValues { + public static func collectResources(of resourceType: Resource.Type) -> KeyPathsExtensions::_SendableKeyPath where Value == NominalFunctionTypes::SendableSyncThrowingFunc, Resource : PackageResourcesClient::_CollectableResourceType +} +extension Swift::WritableKeyPath where Root == Dependencies::DependencyValues { + public static func collectResources(of resourceType: Resource.Type) -> KeyPathsExtensions::_SendableWritableKeyPath where Value == NominalFunctionTypes::SendableSyncThrowingFunc, Resource : PackageResourcesClient::_CollectableResourceType +} +extension PackageResourcesCore::_ColorResource : PackageResourcesClient::_CollectableResourceType { + public static func collect(atPath path: Swift::String) throws -> [PackageResourcesCore::_ColorResource.PackageResourcesClient::Source] +} +extension PackageResourcesCore::_FontResource : PackageResourcesClient::_CollectableResourceType { + public static func collect(atPath path: Swift::String) throws -> [PackageResourcesCore::_FontResource.PackageResourcesClient::Source] +} +extension PackageResourcesCore::_ImageResource : PackageResourcesClient::_CollectableResourceType { + public static func collect(atPath path: Swift::String) throws -> [PackageResourcesCore::_ImageResource.PackageResourcesClient::Source] +} +extension PackageResourcesCore::_NibResource : PackageResourcesClient::_CollectableResourceType { + public static func collect(atPath path: Swift::String) throws -> [PackageResourcesCore::_NibResource.PackageResourcesClient::Source] +} +extension PackageResourcesCore::_SCNSceneResource : PackageResourcesClient::_CollectableResourceType { + public static func collect(atPath path: Swift::String) throws -> [PackageResourcesCore::_SCNSceneResource.PackageResourcesClient::Source] +} +extension PackageResourcesCore::_StoryboardResource : PackageResourcesClient::_CollectableResourceType { + public static func collect(atPath path: Swift::String) throws -> [PackageResourcesCore::_StoryboardResource.PackageResourcesClient::Source] +} +extension PackageResourcesCore::_XCStringResource : PackageResourcesClient::_CollectableResourceType { + public static func collect(atPath path: Swift::String) throws -> [PackageResourcesCore::_XCStringResource.PackageResourcesClient::Source] +} +public enum AccessLevel : Swift::String, Swift::Equatable, Swift::Sendable { + case `private` + case `internal` + case package + case `public` + @inlinable public init?(rawValue: Swift::String) + public typealias RawValue = Swift::String + public var rawValue: Swift::String { + @inlinable get + } +} +public protocol PackageResourcesClient : Swift::Sendable { + func processResources(for resourceTypes: PackageResourcesClient::EnabledResourceTypes, atPath path: Swift::String) async -> Swift::String + func processResources(for resourceTypes: PackageResourcesClient::EnabledResourceTypes, atPath path: Swift::String, into outputFilePath: Swift::String) async throws +} +public struct EnabledResourceTypes : Swift::Equatable, Swift::OptionSet, Swift::Sendable { + public var rawValue: Swift::UInt32 + public init(rawValue: Swift::UInt32) + public static var colors: PackageResourcesClient::EnabledResourceTypes { + get + } + public static var fonts: PackageResourcesClient::EnabledResourceTypes { + get + } + public static var images: PackageResourcesClient::EnabledResourceTypes { + get + } + public static var nibs: PackageResourcesClient::EnabledResourceTypes { + get + } + public static var storyboards: PackageResourcesClient::EnabledResourceTypes { + get + } + public static var xcStrings: PackageResourcesClient::EnabledResourceTypes { + get + } + public static var scnScenes: PackageResourcesClient::EnabledResourceTypes { + get + } + public static var interfaceBuilder: PackageResourcesClient::EnabledResourceTypes { + get + } + public static var all: PackageResourcesClient::EnabledResourceTypes { + get + } + public typealias ArrayLiteralElement = PackageResourcesClient::EnabledResourceTypes + public typealias Element = PackageResourcesClient::EnabledResourceTypes + public typealias RawValue = Swift::UInt32 +} +extension Dependencies::DependencyValues { + public var packageResourcesClient: any PackageResourcesClient::PackageResourcesClient { + get + set + } +} +extension Dependencies::DependencyValues { + public struct ResourceProcessorKey : Swift::Hashable where Resource : Swift::Sendable { + @_hasInitialValue internal let id: Swift::ObjectIdentifier + public static func type(_ type: Resource.Type) -> Dependencies::DependencyValues.PackageResourcesClient::ResourceProcessorKey + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: Dependencies::DependencyValues.PackageResourcesClient::ResourceProcessorKey, _ b: Dependencies::DependencyValues.PackageResourcesClient::ResourceProcessorKey) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } + public subscript(processResourcesOf resourceType: Dependencies::DependencyValues.PackageResourcesClient::ResourceProcessorKey) -> NominalFunctionTypes::SendableSyncThrowingFunc where Resource : PackageResourcesClient::_CollectableResourceType { + get + set + } +} +extension Swift::KeyPath where Root == Dependencies::DependencyValues { + public static func processResources(of resourceType: Resource.Type) -> KeyPathsExtensions::_SendableKeyPath where Value == NominalFunctionTypes::SendableSyncThrowingFunc, Resource : PackageResourcesClient::_CollectableResourceType +} +extension Swift::WritableKeyPath where Root == Dependencies::DependencyValues { + public static func processResources(of resourceType: Resource.Type) -> KeyPathsExtensions::_SendableWritableKeyPath where Value == NominalFunctionTypes::SendableSyncThrowingFunc, Resource : PackageResourcesClient::_CollectableResourceType +} +public protocol _RenderableResourceType : Swift::Sendable { + static func render(_ resources: [Self]) throws -> Swift::String +} +extension Dependencies::DependencyValues { + public struct ResourceRendererKey : Swift::Hashable where Resource : Swift::Sendable { + @_hasInitialValue internal let id: Swift::ObjectIdentifier + public static func type(_ type: Resource.Type) -> Dependencies::DependencyValues.PackageResourcesClient::ResourceRendererKey + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: Dependencies::DependencyValues.PackageResourcesClient::ResourceRendererKey, _ b: Dependencies::DependencyValues.PackageResourcesClient::ResourceRendererKey) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } + public subscript(renderResourcesOf resourceType: Dependencies::DependencyValues.PackageResourcesClient::ResourceRendererKey) -> NominalFunctionTypes::SendableSyncThrowingFunc<[Resource], Swift::String, any Swift::Error> where Resource : PackageResourcesClient::_RenderableResourceType { + get + set + } +} +extension Swift::KeyPath where Root == Dependencies::DependencyValues { + public static func renderResources(of resourceType: Resource.Type) -> KeyPathsExtensions::_SendableKeyPath where Value == NominalFunctionTypes::SendableSyncThrowingFunc<[Resource], Swift::String, any Swift::Error>, Resource : PackageResourcesClient::_RenderableResourceType +} +extension Swift::WritableKeyPath where Root == Dependencies::DependencyValues { + public static func renderResources(of resourceType: Resource.Type) -> KeyPathsExtensions::_SendableWritableKeyPath where Value == NominalFunctionTypes::SendableSyncThrowingFunc<[Resource], Swift::String, any Swift::Error>, Resource : PackageResourcesClient::_RenderableResourceType +} +extension PackageResourcesCore::_ColorResource.PackageResourcesClient::Source : PackageResourcesClient::_RenderableResourceType { + public static func render(_ resources: [PackageResourcesCore::_ColorResource.PackageResourcesClient::Source]) throws -> Swift::String +} +extension PackageResourcesCore::_FontResource.PackageResourcesClient::Source : PackageResourcesClient::_RenderableResourceType { + public static func render(_ resources: [PackageResourcesCore::_FontResource.PackageResourcesClient::Source]) throws -> Swift::String +} +extension PackageResourcesCore::_ImageResource.PackageResourcesClient::Source : PackageResourcesClient::_RenderableResourceType { + public static func render(_ resources: [PackageResourcesCore::_ImageResource.PackageResourcesClient::Source]) throws -> Swift::String +} +extension PackageResourcesCore::_NibResource.PackageResourcesClient::Source : PackageResourcesClient::_RenderableResourceType { + public static func render(_ resources: [PackageResourcesCore::_NibResource.PackageResourcesClient::Source]) throws -> Swift::String +} +extension PackageResourcesCore::_SCNSceneResource.PackageResourcesClient::Source : PackageResourcesClient::_RenderableResourceType { + public static func render(_ resources: [PackageResourcesCore::_SCNSceneResource.PackageResourcesClient::Source]) throws -> Swift::String +} +extension PackageResourcesCore::_StoryboardResource.PackageResourcesClient::Source : PackageResourcesClient::_RenderableResourceType { + public static func render(_ resources: [PackageResourcesCore::_StoryboardResource.PackageResourcesClient::Source]) throws -> Swift::String +} +extension PackageResourcesCore::_XCStringResource.PackageResourcesClient::Source : PackageResourcesClient::_RenderableResourceType { + public static func render(_ resources: [PackageResourcesCore::_XCStringResource.PackageResourcesClient::Source]) throws -> Swift::String +} +extension Swift::Optional where Wrapped == Snippets::Snippets.SwiftSnippets::AccessLevel { + public static var current: Swift::Optional> { + get + } +} +extension Dependencies::DependencyValues { + public var resourceFormatConfig: PackageResourcesClient::ResourceFormatConfig { + get + set + } + public var generatedResourcesDisclaimerProvider: NominalFunctionTypes::SendableSyncFunc { + get + set + } +} +public struct ResourceFormatConfig : Swift::Sendable { + public enum ResourceKind : Swift::Hashable, Swift::Sendable { + case colors + case images + case fonts + case nibs + case scnScenes + case storyboards + case xcStrings + @_semantics("derived_enum_equals") @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::ResourceKind, _ b: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::ResourceKind) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } + @_hasInitialValue public static let $currentResourceKind: _Concurrency::TaskLocal + public static var currentResourceKind: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::ResourceKind? { + get + } + public struct Common : Swift::Sendable { + public var indentor: Swift::String + @_hasInitialValue public var accessLevel: PackageResourcesClient::AccessLevel? + public var updateCasification: @Sendable (inout Swift::String.Casification::Casification.Casification::Configuration) -> Swift::Void + public init(indentor: Swift::String = "\t", accessLevel: PackageResourcesClient::AccessLevel? = .internal, updateCasification: @escaping @Sendable (inout Swift::String.Casification::Casification.Casification::Configuration) -> Swift::Void = { _ in }) + } + public struct Catalog : Swift::Sendable { + public var common: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common + public var groupByCatalogName: Swift::Bool + public init(common: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common = .init(), groupByCatalogName: Swift::Bool = true) + } + public struct AssetCatalog : Swift::Sendable { + public var common: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common + public var groupByCatalogName: Swift::Bool + public var groupByFolders: Swift::Bool + public var splitByKeyPath: Swift::Bool + public init(common: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common = .init(), groupByCatalogName: Swift::Bool = true, groupByFolders: Swift::Bool = true, splitByKeyPath: Swift::Bool = true) + } + public struct XCStrings : Swift::Sendable { + public var catalog: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Catalog + public var splitByKeyPath: Swift::Bool + public init(catalog: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Catalog = .init(), splitByKeyPath: Swift::Bool = true) + } + public struct Resolved : Swift::Sendable { + public var common: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common + public var groupByCatalogName: Swift::Bool + public var groupByFolders: Swift::Bool + public var splitByKeyPath: Swift::Bool + public var indentor: Swift::String { + get + } + public var accessLevel: PackageResourcesClient::AccessLevel? { + get + } + public var updateCasification: @Sendable (inout Swift::String.Casification::Casification.Casification::Configuration) -> Swift::Void { + get + } + public init(common: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common = .init(), groupByCatalogName: Swift::Bool = true, groupByFolders: Swift::Bool = true, splitByKeyPath: Swift::Bool = true) + } + public var colors: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::AssetCatalog + public var images: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::AssetCatalog + public var fonts: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common + public var nibs: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common + public var scnScenes: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::AssetCatalog + public var storyboards: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common + public var xcStrings: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::XCStrings + public var defaultFormat: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Resolved + public init(colors: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::AssetCatalog = .init(), images: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::AssetCatalog = .init(), fonts: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common = .init(), nibs: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common = .init(), scnScenes: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::AssetCatalog = .init(), storyboards: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Common = .init(), xcStrings: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::XCStrings = .init(), defaultFormat: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Resolved = .init()) + public var current: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Resolved { + get + } + public func resolved(for resourceKind: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::ResourceKind?) -> PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::Resolved + public func withFormat(for resourceKind: PackageResourcesClient::ResourceFormatConfig.PackageResourcesClient::ResourceKind, operation: () throws -> T) rethrows -> T +} +extension PackageResourcesClient::ResourceFormatConfig { + public static func standard(indentor: Swift::String = "\t", indentSize: Swift::Int = 1, accessLevel: PackageResourcesClient::AccessLevel? = .internal, groupByCatalogName: Swift::Bool = true, groupByFolders: Swift::Bool = true, splitByKeyPath: Swift::Bool = true) -> PackageResourcesClient::ResourceFormatConfig +} +extension PackageResourcesCore::_ColorResource { + public struct Source : Swift::Hashable, Swift::Sendable { + public var name: Swift::String + public var path: [Swift::String] + @_hasInitialValue public var catalog: Swift::String? + public init(name: Swift::String, path: [Swift::String] = [], catalog: Swift::String? = nil) + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesCore::_ColorResource.PackageResourcesClient::Source, _ b: PackageResourcesCore::_ColorResource.PackageResourcesClient::Source) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } +} +extension PackageResourcesCore::_FontResource { + public struct Source : Swift::Hashable, Swift::Sendable { + public var name: Swift::String + public init(name: Swift::String) + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesCore::_FontResource.PackageResourcesClient::Source, _ b: PackageResourcesCore::_FontResource.PackageResourcesClient::Source) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } +} +extension PackageResourcesCore::_ImageResource { + public struct Source : Swift::Hashable, Swift::Sendable { + public var name: Swift::String + public var path: [Swift::String] + @_hasInitialValue public var catalog: Swift::String? + public init(name: Swift::String, path: [Swift::String] = [], catalog: Swift::String? = nil) + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesCore::_ImageResource.PackageResourcesClient::Source, _ b: PackageResourcesCore::_ImageResource.PackageResourcesClient::Source) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } +} +extension PackageResourcesCore::_NibResource { + public struct Source : Swift::Hashable, Swift::Sendable { + public var name: Swift::String + public init(name: Swift::String) + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesCore::_NibResource.PackageResourcesClient::Source, _ b: PackageResourcesCore::_NibResource.PackageResourcesClient::Source) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } +} +extension PackageResourcesCore::_SCNSceneResource { + public struct Source : Swift::Hashable, Swift::Sendable { + public var name: Swift::String + public var path: [Swift::String] + @_hasInitialValue public var catalog: Swift::String? + public init(name: Swift::String, path: [Swift::String] = [], catalog: Swift::String? = nil) + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesCore::_SCNSceneResource.PackageResourcesClient::Source, _ b: PackageResourcesCore::_SCNSceneResource.PackageResourcesClient::Source) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } +} +extension PackageResourcesCore::_StoryboardResource { + public struct Source : Swift::Hashable, Swift::Sendable { + public var name: Swift::String + public init(name: Swift::String) + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesCore::_StoryboardResource.PackageResourcesClient::Source, _ b: PackageResourcesCore::_StoryboardResource.PackageResourcesClient::Source) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } +} +extension PackageResourcesCore::_XCStringResource { + public struct Source : Swift::Hashable, Swift::Sendable { + public var resource: _XCStringResource::XCStringResource + @_hasInitialValue public var table: Swift::String? + public init(resource: _XCStringResource::XCStringResource, table: Swift::String? = nil) + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesCore::_XCStringResource.PackageResourcesClient::Source, _ b: PackageResourcesCore::_XCStringResource.PackageResourcesClient::Source) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } +} +extension PackageResourcesClient::AccessLevel : Swift::Hashable {} +extension PackageResourcesClient::AccessLevel : Swift::RawRepresentable {} diff --git a/.agents/interfaces/macos/PackageResourcesFS.swiftinterface b/.agents/interfaces/macos/PackageResourcesFS.swiftinterface new file mode 100644 index 0000000..596bff7 --- /dev/null +++ b/.agents/interfaces/macos/PackageResourcesFS.swiftinterface @@ -0,0 +1,297 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.4 (swiftlang-6.4.0.25.4 clang-2100.3.25.1) +// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -language-mode 6 -O -enable-experimental-feature DebugDescriptionMacro -module-name PackageResourcesFS -package-name package_resources_cli +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.4 +import AppKit +import Foundation +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +public enum LocationKind { + case file + case folder + @_semantics("derived_enum_equals") @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: PackageResourcesFS::LocationKind, _ b: PackageResourcesFS::LocationKind) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } +} +public protocol Location : Swift::CustomStringConvertible, Swift::Equatable { + static var kind: PackageResourcesFS::LocationKind { get } + var storage: PackageResourcesFS::Storage { get } + init(storage: PackageResourcesFS::Storage) +} +extension PackageResourcesFS::Location { + public static func == (lhs: Self, rhs: Self) -> Swift::Bool + public var description: Swift::String { + get + } + public var path: Swift::String { + get + } + public var url: Foundation::URL { + get + } + public var name: Swift::String { + get + } + public var nameExcludingExtension: Swift::String { + get + } + public var `extension`: Swift::String? { + get + } + public var parent: PackageResourcesFS::Folder? { + get + } + public var creationDate: Foundation::Date? { + get + } + public var modificationDate: Foundation::Date? { + get + } + public init(uncheckedPath: Swift::String) + public func validatePath() throws(PackageResourcesFS::LocationError) + public init(path: Swift::String) throws(PackageResourcesFS::LocationError) + public init(path: Swift::String, create: Swift::Bool) throws(PackageResourcesFS::SomeFilesError) + public func path(relativeTo folder: PackageResourcesFS::Folder) -> Swift::String + public func rename(to newName: Swift::String, keepExtension: Swift::Bool = true) throws(PackageResourcesFS::LocationError) -> Self + @discardableResult + public func move(to newParent: PackageResourcesFS::Folder) throws(PackageResourcesFS::LocationError) -> Self + @discardableResult + public func copy(to folder: PackageResourcesFS::Folder) throws(PackageResourcesFS::LocationError) -> Self + public func delete() throws(PackageResourcesFS::LocationError) + public func managedBy(_ manager: Foundation::FileManager) throws(PackageResourcesFS::SomeFilesError) -> Self +} +final public class Storage where LocationType : PackageResourcesFS::Location { + @_hasStorage final public var path: Swift::String { + get + } + final private let fileManager: Foundation::FileManager + public init(uncheckedPath: Swift::String, fileManager: Foundation::FileManager) + convenience public init(path: Swift::String, fileManager: Foundation::FileManager, create: Swift::Bool = false) throws(PackageResourcesFS::SomeFilesError) + final public func createIfNeeded() throws(PackageResourcesFS::WriteError) + final public func validatePath() throws(PackageResourcesFS::LocationError) + @objc deinit +} +extension PackageResourcesFS::Storage { + final public var attributes: [Foundation::FileAttributeKey : Any] { + get + } + final public func makeParentPath(for path: Swift::String) -> Swift::String? + @discardableResult + final public func move(to newPath: Swift::String, errorReasonProvider: (any Swift::Error) -> PackageResourcesFS::LocationErrorReason) throws(PackageResourcesFS::LocationError) -> PackageResourcesFS::Storage + @discardableResult + final public func copy(to newPath: Swift::String) throws(PackageResourcesFS::LocationError) -> PackageResourcesFS::Storage + final public func delete() throws(PackageResourcesFS::LocationError) +} +extension PackageResourcesFS::Storage where LocationType == PackageResourcesFS::Folder { + final public func makeChildSequence() -> PackageResourcesFS::Folder.PackageResourcesFS::ChildSequence where T : PackageResourcesFS::Location + final public func subfolder(at folderPath: Swift::String) throws(PackageResourcesFS::LocationError) -> PackageResourcesFS::Folder + final public func file(at filePath: Swift::String) throws(PackageResourcesFS::LocationError) -> PackageResourcesFS::File + final public func createSubfolder(at folderPath: Swift::String) throws(PackageResourcesFS::WriteError) -> PackageResourcesFS::Folder + final public func createFile(at filePath: Swift::String, contents: Foundation::Data?) throws(PackageResourcesFS::WriteError) -> PackageResourcesFS::File +} +public struct File : PackageResourcesFS::Location { + public let storage: PackageResourcesFS::Storage + public init(storage: PackageResourcesFS::Storage) +} +extension PackageResourcesFS::File { + public static var kind: PackageResourcesFS::LocationKind { + get + } + public func write(_ data: Foundation::Data) throws(PackageResourcesFS::WriteError) + public func write(_ string: Swift::String, encoding: Swift::String.Foundation::Encoding = .utf8) throws(PackageResourcesFS::WriteError) + public func append(_ data: Foundation::Data) throws(PackageResourcesFS::WriteError) + public func append(_ string: Swift::String, encoding: Swift::String.Foundation::Encoding = .utf8) throws(PackageResourcesFS::WriteError) + public func read() throws(PackageResourcesFS::ReadError) -> Foundation::Data + public func readAsString(encodedAs encoding: Swift::String.Foundation::Encoding = .utf8) throws(PackageResourcesFS::ReadError) -> Swift::String + public func readAsInt() throws(PackageResourcesFS::ReadError) -> Swift::Int +} +extension PackageResourcesFS::File { + public func open() +} +public struct Folder : PackageResourcesFS::Location { + public let storage: PackageResourcesFS::Storage + public init(storage: PackageResourcesFS::Storage) +} +extension PackageResourcesFS::Folder { + public struct ChildSequence : Swift::Sequence where Child : PackageResourcesFS::Location { + fileprivate let folder: PackageResourcesFS::Folder + fileprivate let fileManager: Foundation::FileManager + fileprivate var isRecursive: Swift::Bool + fileprivate var includeHidden: Swift::Bool + public func makeIterator() -> PackageResourcesFS::Folder.PackageResourcesFS::ChildIterator + public typealias Element = Child + public typealias Iterator = PackageResourcesFS::Folder.PackageResourcesFS::ChildIterator + } + public struct ChildIterator : Swift::IteratorProtocol where Child : PackageResourcesFS::Location { + private let folder: PackageResourcesFS::Folder + private let fileManager: Foundation::FileManager + private let isRecursive: Swift::Bool + private let includeHidden: Swift::Bool + private let reverseTopLevelTraversal: Swift::Bool + @_hasInitialValue private var $__lazy_storage_$_itemNames: [Swift::String]? + @_hasInitialValue private var index: Swift::Int + @_hasInitialValue private var nestedIterators: [PackageResourcesFS::Folder.PackageResourcesFS::ChildIterator] + public mutating func next() -> Child? + public typealias Element = Child + } +} +extension PackageResourcesFS::Folder.PackageResourcesFS::ChildSequence : Swift::CustomStringConvertible { + public var description: Swift::String { + get + } +} +extension PackageResourcesFS::Folder.PackageResourcesFS::ChildSequence { + public var recursive: PackageResourcesFS::Folder.PackageResourcesFS::ChildSequence { + get + } + public var includingHidden: PackageResourcesFS::Folder.PackageResourcesFS::ChildSequence { + get + } + public func count() -> Swift::Int + public func names() -> [Swift::String] + public func last() -> Child? + public var first: Child? { + get + } + public func move(to folder: PackageResourcesFS::Folder) throws(PackageResourcesFS::LocationError) + public func delete() throws(PackageResourcesFS::LocationError) +} +extension PackageResourcesFS::Folder { + public static var kind: PackageResourcesFS::LocationKind { + get + } + public static var current: PackageResourcesFS::Folder { + get + } + public static var root: PackageResourcesFS::Folder { + get + } + public static var home: PackageResourcesFS::Folder { + get + } + public static var temporary: PackageResourcesFS::Folder { + get + } + public var subfolders: PackageResourcesFS::Folder.PackageResourcesFS::ChildSequence { + get + } + public var files: PackageResourcesFS::Folder.PackageResourcesFS::ChildSequence { + get + } + public func subfolder(at path: Swift::String) throws(PackageResourcesFS::LocationError) -> PackageResourcesFS::Folder + public func subfolder(named name: Swift::String) throws(PackageResourcesFS::LocationError) -> PackageResourcesFS::Folder + public func containsSubfolder(at path: Swift::String) -> Swift::Bool + public func containsSubfolder(named name: Swift::String) -> Swift::Bool + @discardableResult + public func createSubfolder(at path: Swift::String) throws(PackageResourcesFS::WriteError) -> PackageResourcesFS::Folder + @discardableResult + public func createSubfolder(named name: Swift::String) throws(PackageResourcesFS::WriteError) -> PackageResourcesFS::Folder + @discardableResult + public func createSubfolderIfNeeded(at path: Swift::String) throws(PackageResourcesFS::WriteError) -> PackageResourcesFS::Folder + @discardableResult + public func createSubfolderIfNeeded(withName name: Swift::String) throws(PackageResourcesFS::WriteError) -> PackageResourcesFS::Folder + public func file(at path: Swift::String) throws(PackageResourcesFS::LocationError) -> PackageResourcesFS::File + public func file(named name: Swift::String) throws(PackageResourcesFS::LocationError) -> PackageResourcesFS::File + public func containsFile(named name: Swift::String) -> Swift::Bool + @discardableResult + public func createFile(at path: Swift::String, contents: Foundation::Data? = nil) throws(PackageResourcesFS::WriteError) -> PackageResourcesFS::File + @discardableResult + public func createFile(named fileName: Swift::String, contents: Foundation::Data? = nil) throws(PackageResourcesFS::WriteError) -> PackageResourcesFS::File + @discardableResult + public func createFileIfNeeded(at path: Swift::String, contents: @autoclosure () -> Foundation::Data? = nil) throws(PackageResourcesFS::WriteError) -> PackageResourcesFS::File + @discardableResult + public func createFileIfNeeded(withName name: Swift::String, contents: @autoclosure () -> Foundation::Data? = nil) throws -> PackageResourcesFS::File + public func contains(_ location: T) -> Swift::Bool where T : PackageResourcesFS::Location + public func moveContents(to folder: PackageResourcesFS::Folder, includeHidden: Swift::Bool = false) throws + public func empty(includingHidden includeHidden: Swift::Bool = false) throws + public func isEmpty(includingHidden includeHidden: Swift::Bool = false) -> Swift::Bool +} +extension PackageResourcesFS::Folder { + public static func matching(_ searchPath: Foundation::FileManager.Foundation::SearchPathDirectory, in domain: Foundation::FileManager.Foundation::SearchPathDomainMask = .userDomainMask, resolvedBy fileManager: Foundation::FileManager = .default) throws -> PackageResourcesFS::Folder + public static var documents: PackageResourcesFS::Folder? { + get + } + public static var library: PackageResourcesFS::Folder? { + get + } +} +public struct FilesError : Swift::Error where Reason : Swift::Sendable { + @_hasStorage public var path: Swift::String { + get + } + @_hasStorage public var reason: Reason { + get + } +} +extension PackageResourcesFS::FilesError : Swift::CustomStringConvertible { + public var description: Swift::String { + get + } +} +public enum FilesErrorReason : Swift::Sendable { + case read(PackageResourcesFS::ReadErrorReason) + case write(PackageResourcesFS::WriteErrorReason) + case location(PackageResourcesFS::LocationErrorReason) +} +public enum ReadErrorReason : Swift::Sendable { + case readFailed(any Swift::Error) + case stringDecodingFailed + case notAnInt(Swift::String) +} +public enum WriteErrorReason : Swift::Sendable { + case emptyPath + case folderCreationFailed(any Swift::Error) + case fileCreationFailed + case writeFailed(any Swift::Error) + case stringEncodingFailed(Swift::String) +} +public enum LocationErrorReason : Swift::Sendable { + case missing + case emptyFilePath + case cannotRenameRoot + case renameFailed(any Swift::Error) + case moveFailed(any Swift::Error) + case copyFailed(any Swift::Error) + case deleteFailed(any Swift::Error) + case unresolvedSearchPath(Foundation::FileManager.Foundation::SearchPathDirectory, domain: Foundation::FileManager.Foundation::SearchPathDomainMask) +} +public typealias ReadError = PackageResourcesFS::FilesError +public typealias WriteError = PackageResourcesFS::FilesError +public typealias LocationError = PackageResourcesFS::FilesError +public typealias SomeFilesError = PackageResourcesFS::FilesError +public protocol _Location { + static var kind: PackageResourcesFS::LocationKind { get } + var description: Swift::String { get } + var path: Swift::String { get } + var url: Foundation::URL { get } + var name: Swift::String { get } + var nameExcludingExtension: Swift::String { get } + var `extension`: Swift::String? { get } + var parent: PackageResourcesFS::Folder? { get } + var creationDate: Foundation::Date? { get } + var modificationDate: Foundation::Date? { get } + func path(relativeTo folder: PackageResourcesFS::Folder) -> Swift::String + func rename(to newName: Swift::String, keepExtension: Swift::Bool) throws(PackageResourcesFS::LocationError) -> Self + func move(to newParent: PackageResourcesFS::Folder) throws(PackageResourcesFS::LocationError) -> Self + func delete() throws +} +extension PackageResourcesFS::File : PackageResourcesFS::_Location { +} +extension PackageResourcesFS::Folder : PackageResourcesFS::_Location { +} +public enum FSObject { + case file(PackageResourcesFS::File) + case folder(PackageResourcesFS::Folder) + public var location: any PackageResourcesFS::_Location { + get + } +} +extension PackageResourcesFS::Folder { + public func compactMapContents(recursive: Swift::Bool = false, _ f: (PackageResourcesFS::FSObject) throws -> T?) rethrows -> [T] +} +extension PackageResourcesFS::LocationKind : Swift::Equatable {} +extension PackageResourcesFS::LocationKind : Swift::Hashable {} diff --git a/.agents/interfaces/macos/PackageResourcesManifest.swiftinterface b/.agents/interfaces/macos/PackageResourcesManifest.swiftinterface new file mode 100644 index 0000000..4da969b --- /dev/null +++ b/.agents/interfaces/macos/PackageResourcesManifest.swiftinterface @@ -0,0 +1,1315 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.4 (swiftlang-6.4.0.25.4 clang-2100.3.25.1) +// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -language-mode 6 -O -enable-experimental-feature DebugDescriptionMacro -module-name PackageResourcesManifest -package-name package_resources_cli +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.4 +import ArgumentParser +import CasePaths +import Casification +import Foundation +import IssueReporting +import PackageResourcesClient +import Swift +import Yams +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig { + public enum ProcessingPolicy : Swift::RawRepresentable, Swift::Codable, Swift::Equatable, Swift::Sendable, Swift::LosslessStringConvertible { + public typealias RawValue = Swift::String.Casification::Casification.Casification::Configuration.Casification::CamelCase.Casification::Acronyms.Casification::ProcessingPolicy + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy { + get + } + public static var current: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy { + get + } + public enum Alias : Swift::String, Swift::CaseIterable, Swift::Equatable, Swift::Sendable { + case `default` + case current + case preserve + case alwaysMatchCase + case alwaysCapitalize + case conditionalCapitalization + public init(_ mode: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::RawValue) + public var aliasedValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::RawValue { + get + } + @inlinable public init?(rawValue: Swift::String) + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::Alias) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var `default`: CasePathsCore::AnyCasePath { + get + } + public var current: CasePathsCore::AnyCasePath { + get + } + public var preserve: CasePathsCore::AnyCasePath { + get + } + public var alwaysMatchCase: CasePathsCore::AnyCasePath { + get + } + public var alwaysCapitalize: CasePathsCore::AnyCasePath { + get + } + public var conditionalCapitalization: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::Alias + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::Alias.PackageResourcesManifest::AllCasePaths { + get + } + public typealias AllCases = [PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::Alias] + public typealias RawValue = Swift::String + nonisolated public static var allCases: [PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::Alias] { + get + } + public var rawValue: Swift::String { + @inlinable get + } + } + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::Alias) + public init?(_ description: Swift::String) + public var description: Swift::String { + get + } + public init(rawValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::RawValue) + public var rawValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::RawValue { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var alias: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::AllCasePaths { + get + } + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy : ArgumentParser::ExpressibleByArgument { + public init?(argument: Swift::String) + public var defaultValueDescription: Swift::String { + get + } + public static var allValueStrings: [Swift::String] { + get + } + public static var allValueDescriptions: [Swift::String : Swift::String] { + get + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::Alias : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest { + public struct AcronymsConfig : Swift::Codable, Swift::Equatable, Swift::Sendable { + public static var current: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig { + get + } + @_hasInitialValue public static let `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig + public var processingPolicy: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy + public var values: [Swift::String] + public var resolvedValues: Swift::Set { + get + } + public init(processingPolicy: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy = .current, values: [Swift::String] = ["current"]) + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig) -> Swift::Bool + } +} +extension PackageResourcesManifest::Manifest { + public struct FormatConfig : Swift::Equatable, Swift::Sendable { + @_hasInitialValue public static let $root: _Concurrency::TaskLocal + public static var root: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Root { + get + } + public var root: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Root + public var colors: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource + public var images: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource + public var fonts: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource + public var nibs: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource + public var scnScenes: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource + public var storyboards: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource + public var xcStrings: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStringsResource + public init(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Root = .default, colors: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource? = nil, images: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource? = nil, fonts: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource? = nil, nibs: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource? = nil, scnScenes: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource? = nil, storyboards: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource? = nil, xcStrings: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStringsResource? = nil) + public var enabledResourceTypes: PackageResourcesClient::EnabledResourceTypes { + get + } + public mutating func updateRoot(_ update: (inout PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Root) -> Swift::Void) + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig) -> Swift::Bool + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig { + public enum Alias : Swift::String, Swift::Codable, Swift::Sendable { + case `default` + @inlinable public init?(rawValue: Swift::String) + public typealias RawValue = Swift::String + public var rawValue: Swift::String { + @inlinable get + } + } + public struct Root : Swift::Equatable, Swift::Sendable { + @_hasInitialValue public static let `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Root + public var indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor + public var indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize + public var accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig + public var numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig + public var acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig + public var groupByCatalogName: Swift::Bool + public init(indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor = .default, indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize = .default, accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig = .default, numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig = .default, acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig = .default, groupByCatalogName: Swift::Bool = true) + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Root, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Root) -> Swift::Bool + } + public struct Common : Swift::Codable, Swift::Equatable, Swift::Sendable { + public var ignore: Swift::Bool + public var indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor + public var indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize + public var accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig + public var numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig + public var acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig + public init(ignore: Swift::Bool = false, indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor = Manifest.FormatConfig.root.indentor, indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize = Manifest.FormatConfig.root.indentSize, accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig = Manifest.FormatConfig.root.accessLevel, numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig = Manifest.FormatConfig.root.numbers, acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig = Manifest.FormatConfig.root.acronyms) + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Common, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Common) -> Swift::Bool + } + public struct AssetCatalog : Swift::Codable, Swift::Equatable, Swift::Sendable { + public var common: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Common + public var groupByCatalogName: Swift::Bool + public var groupByFolders: Swift::Bool + public var splitByKeyPath: Swift::Bool + public var ignore: Swift::Bool { + get + set + } + public var indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor { + get + set + } + public var indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize { + get + set + } + public var accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig { + get + set + } + public var numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig { + get + set + } + public var acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig { + get + set + } + public init(ignore: Swift::Bool = false, indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor = Manifest.FormatConfig.root.indentor, indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize = Manifest.FormatConfig.root.indentSize, accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig = Manifest.FormatConfig.root.accessLevel, numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig = Manifest.FormatConfig.root.numbers, acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig = Manifest.FormatConfig.root.acronyms, groupByCatalogName: Swift::Bool = Manifest.FormatConfig.root.groupByCatalogName, groupByFolders: Swift::Bool = true, splitByKeyPath: Swift::Bool = true) + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalog, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalog) -> Swift::Bool + } + public struct Catalog : Swift::Codable, Swift::Equatable, Swift::Sendable { + public var common: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Common + public var groupByCatalogName: Swift::Bool + public var ignore: Swift::Bool { + get + set + } + public var indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor { + get + set + } + public var indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize { + get + set + } + public var accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig { + get + set + } + public var numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig { + get + set + } + public var acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig { + get + set + } + public init(ignore: Swift::Bool = false, indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor = Manifest.FormatConfig.root.indentor, indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize = Manifest.FormatConfig.root.indentSize, accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig = Manifest.FormatConfig.root.accessLevel, numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig = Manifest.FormatConfig.root.numbers, acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig = Manifest.FormatConfig.root.acronyms, groupByCatalogName: Swift::Bool = Manifest.FormatConfig.root.groupByCatalogName) + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Catalog, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Catalog) -> Swift::Bool + } + public struct XCStrings : Swift::Codable, Swift::Equatable, Swift::Sendable { + public var catalog: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Catalog + public var splitByKeyPath: Swift::Bool + public var ignore: Swift::Bool { + get + set + } + public var indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor { + get + set + } + public var indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize { + get + set + } + public var accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig { + get + set + } + public var numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig { + get + set + } + public var acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig { + get + set + } + public var groupByCatalogName: Swift::Bool { + get + set + } + public init(ignore: Swift::Bool = false, indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor = Manifest.FormatConfig.root.indentor, indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize = Manifest.FormatConfig.root.indentSize, accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig = Manifest.FormatConfig.root.accessLevel, numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig = Manifest.FormatConfig.root.numbers, acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig = Manifest.FormatConfig.root.acronyms, groupByCatalogName: Swift::Bool = Manifest.FormatConfig.root.groupByCatalogName, splitByKeyPath: Swift::Bool = true) + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStrings, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStrings) -> Swift::Bool + } + public enum CommonResource : Swift::Codable, Swift::Equatable, Swift::Sendable { + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Alias) + case value(PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Common) + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource { + get + } + public static func inherited() -> PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource + public var resolved: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Common { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public mutating func update(_ update: (inout PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Common) -> Swift::Void) + @_semantics("derived_enum_equals") @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CommonResource) -> Swift::Bool + } + public enum AssetCatalogResource : Swift::Codable, Swift::Equatable, Swift::Sendable { + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Alias) + case value(PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalog) + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource { + get + } + public static func inherited() -> PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource + public var resolved: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalog { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public mutating func update(_ update: (inout PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalog) -> Swift::Void) + @_semantics("derived_enum_equals") @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::AssetCatalogResource) -> Swift::Bool + } + public enum CatalogResource : Swift::Codable, Swift::Equatable, Swift::Sendable { + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Alias) + case value(PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Catalog) + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CatalogResource { + get + } + public static func inherited() -> PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CatalogResource + public var resolved: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Catalog { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public mutating func update(_ update: (inout PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Catalog) -> Swift::Void) + @_semantics("derived_enum_equals") @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CatalogResource, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::CatalogResource) -> Swift::Bool + } + public enum XCStringsResource : Swift::Codable, Swift::Equatable, Swift::Sendable { + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Alias) + case value(PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStrings) + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStringsResource { + get + } + public static func inherited() -> PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStringsResource + public var resolved: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStrings { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public mutating func update(_ update: (inout PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStrings) -> Swift::Void) + @_semantics("derived_enum_equals") @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStringsResource, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::XCStringsResource) -> Swift::Bool + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig { + public var resourceFormatConfig: PackageResourcesClient::ResourceFormatConfig { + get + } +} +public enum RawCodingKey : Swift::CodingKey, Swift::ExpressibleByStringLiteral, Swift::ExpressibleByIntegerLiteral, Swift::Hashable { + case key(Swift::String) + case index(Swift::Int) + public init(stringLiteral value: Swift::String) + public init(stringValue: Swift::String) + public init(integerLiteral value: Swift::Int) + public init(intValue: Swift::Int) + public var stringValue: Swift::String { + get + } + public var intValue: Swift::Int? { + get + } + public typealias ExtendedGraphemeClusterLiteralType = Swift::String + public typealias IntegerLiteralType = Swift::Int + public typealias StringLiteralType = Swift::String + public typealias UnicodeScalarLiteralType = Swift::String + @_semantics("derived_enum_equals") @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: PackageResourcesManifest::RawCodingKey, _ b: PackageResourcesManifest::RawCodingKey) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } +} +extension PackageResourcesManifest::Manifest { + public enum IndentSize : Swift::RawRepresentable, Swift::Codable, Swift::Equatable, Swift::Sendable, Swift::LosslessStringConvertible { + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize { + get + } + public enum Alias : Swift::String, Swift::CaseIterable, Swift::Sendable { + case `default` + public var aliasedValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::RawValue { + get + } + @inlinable public init?(rawValue: Swift::String) + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var `default`: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias.PackageResourcesManifest::AllCasePaths { + get + } + public typealias AllCases = [PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias] + public typealias RawValue = Swift::String + nonisolated public static var allCases: [PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias] { + get + } + public var rawValue: Swift::String { + @inlinable get + } + } + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias) + case value(Swift::Int) + public init?(_ description: Swift::String) + public var description: Swift::String { + get + } + public init(rawValue: Swift::Int) + public var rawValue: Swift::Int { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var alias: CasePathsCore::AnyCasePath { + get + } + public var value: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::AllCasePaths { + get + } + public typealias RawValue = Swift::Int + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize : ArgumentParser::ExpressibleByArgument { + public init?(argument: Swift::String) + public var defaultValueDescription: Swift::String { + get + } + public static var allValueStrings: [Swift::String] { + get + } + public static var allValueDescriptions: [Swift::String : Swift::String] { + get + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest { + public enum Indentor : Swift::RawRepresentable, Swift::Codable, Swift::Equatable, Swift::Sendable, Swift::LosslessStringConvertible { + @_hasInitialValue public static let $current: _Concurrency::TaskLocal + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor { + get + } + public static var tab: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor { + get + } + public static var whitespace: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor { + get + } + public static var empty: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor { + get + } + public enum Alias : Swift::String, Swift::CaseIterable, Swift::Sendable { + case `default` + case tab, tabs + case whitespace, whitespaces, space, spaces + case empty, none + public init?(_ value: Swift::String) + public var aliasedValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::RawValue { + get + } + @inlinable public init?(rawValue: Swift::String) + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var `default`: CasePathsCore::AnyCasePath { + get + } + public var tab: CasePathsCore::AnyCasePath { + get + } + public var tabs: CasePathsCore::AnyCasePath { + get + } + public var whitespace: CasePathsCore::AnyCasePath { + get + } + public var whitespaces: CasePathsCore::AnyCasePath { + get + } + public var space: CasePathsCore::AnyCasePath { + get + } + public var spaces: CasePathsCore::AnyCasePath { + get + } + public var empty: CasePathsCore::AnyCasePath { + get + } + public var none: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias.PackageResourcesManifest::AllCasePaths { + get + } + public typealias AllCases = [PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias] + public typealias RawValue = Swift::String + nonisolated public static var allCases: [PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias] { + get + } + public var rawValue: Swift::String { + @inlinable get + } + } + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias) + case value(Swift::String) + public init(_ description: Swift::String) + public var description: Swift::String { + get + } + public init(rawValue: Swift::String) + public var rawValue: Swift::String { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var alias: CasePathsCore::AnyCasePath { + get + } + public var value: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::AllCasePaths { + get + } + public typealias RawValue = Swift::String + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor : ArgumentParser::ExpressibleByArgument { + public init(argument: Swift::String) + public var defaultValueDescription: Swift::String { + get + } + public static var allValueStrings: [Swift::String] { + get + } + public static var allValueDescriptions: [Swift::String : Swift::String] { + get + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest { + public enum AccessLevelConfig : Swift::Codable, Swift::Equatable, Swift::Sendable, Swift::LosslessStringConvertible { + case none + case `default` + case value(PackageResourcesClient::AccessLevel) + public init?(_ description: Swift::String) + public var description: Swift::String { + get + } + public var rawValue: PackageResourcesClient::AccessLevel? { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var none: CasePathsCore::AnyCasePath { + get + } + public var `default`: CasePathsCore::AnyCasePath { + get + } + public var value: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig.PackageResourcesManifest::AllCasePaths { + get + } + @_semantics("derived_enum_equals") @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig) -> Swift::Bool + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig : ArgumentParser::ExpressibleByArgument { + public init?(argument: Swift::String) + public var defaultValueDescription: Swift::String { + get + } + public static var allValueStrings: [Swift::String] { + get + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest { + public enum ResourceType : Swift::String, Swift::CaseIterable, Swift::Codable, Swift::Sendable, Swift::LosslessStringConvertible { + case all + case colors + case fonts + case images + case nibs + case scnScenes + case storyboards + case xcStrings + case interfaceBuilder + case none + case `default` + case __not_set__ + public init?(_ description: Swift::String) + public var description: Swift::String { + get + } + public var enabledResourceTypes: PackageResourcesClient::EnabledResourceTypes { + get + } + @inlinable public init?(rawValue: Swift::String) + public typealias AllCases = [PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceType] + public typealias RawValue = Swift::String + nonisolated public static var allCases: [PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceType] { + get + } + public var rawValue: Swift::String { + @inlinable get + } + } + public struct ResourceTypes : Swift::Codable, Swift::Equatable, Swift::Sendable, Swift::RawRepresentable { + public typealias RawValue = [PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceType] + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceTypes { + get + } + public var rawValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceTypes.PackageResourcesManifest::RawValue + public var enabledResourceTypes: PackageResourcesClient::EnabledResourceTypes { + get + } + public init(rawValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceTypes.PackageResourcesManifest::RawValue) + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceType : ArgumentParser::ExpressibleByArgument { + public init?(argument: Swift::String) + public var defaultValueDescription: Swift::String { + get + } + public static var allValueStrings: [Swift::String] { + get + } +} +extension PackageResourcesManifest::Manifest { + public struct Version : Swift::Codable, Swift::Sendable, Swift::RawRepresentable, Swift::LosslessStringConvertible { + public let major: Swift::Int + public let minor: Swift::Int + public var rawValue: Swift::String { + get + } + public var description: Swift::String { + get + } + public init?(_ versionString: Swift::String) + public init?(rawValue: Swift::String) + public init(major: Swift::Int, minor: Swift::Int = 0) + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public typealias RawValue = Swift::String + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::Version : ArgumentParser::ExpressibleByArgument { + public init?(argument: Swift::String) + public static var allValueStrings: [Swift::String] { + get + } + public static var allValueDescriptions: [Swift::String : Swift::String] { + get + } +} +public struct Manifest { + @_hasInitialValue public static let $encodeAliases: _Concurrency::TaskLocal + public var version: PackageResourcesManifest::Manifest.PackageResourcesManifest::Version + @_hasInitialValue public var output: Swift::String? + public var format: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig + public var resourceTypes: PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceTypes + public init(version: PackageResourcesManifest::Manifest.PackageResourcesManifest::Version = .init(major: 4), output: Swift::String? = nil, format: PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig = .init(), resourceTypes: PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceTypes = .default) +} +extension PackageResourcesManifest::Manifest { + public var enabledResourceTypes: PackageResourcesClient::EnabledResourceTypes { + get + } + public var indentor: PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor { + get + set + } + public var indentSize: PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize { + get + set + } + public var accessLevel: PackageResourcesManifest::Manifest.PackageResourcesManifest::AccessLevelConfig { + get + set + } + public var numbers: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig { + get + set + } + public var acronyms: PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig { + get + set + } + public var groupByCatalogName: Swift::Bool { + get + set + } + public var groupXCStringsByCatalogName: Swift::Bool { + get + set + } + public var xcStringsSplitByKeyPath: Swift::Bool { + get + set + } + public var colorsGroupByFolders: Swift::Bool { + get + set + } + public var imagesGroupByFolders: Swift::Bool { + get + set + } + public var scnScenesGroupByFolders: Swift::Bool { + get + set + } + public var colorsSplitByKeyPath: Swift::Bool { + get + set + } + public var imagesSplitByKeyPath: Swift::Bool { + get + set + } + public var scnScenesSplitByKeyPath: Swift::Bool { + get + set + } + public var ignoreColors: Swift::Bool { + get + set + } + public var ignoreImages: Swift::Bool { + get + set + } + public var ignoreFonts: Swift::Bool { + get + set + } + public var ignoreNibs: Swift::Bool { + get + set + } + public var ignoreSCNScenes: Swift::Bool { + get + set + } + public var ignoreStoryboards: Swift::Bool { + get + set + } + public var ignoreXCStrings: Swift::Bool { + get + set + } +} +extension PackageResourcesManifest::Manifest { + public mutating func ifLet(_ value: T?, set keyPath: Swift::WritableKeyPath) + public func ifLet(_ value: T?, override keyPath: Swift::WritableKeyPath) -> PackageResourcesManifest::Manifest +} +extension PackageResourcesManifest::Manifest : Swift::Encodable { + @_hasInitialValue public static let $ignoredKeys: _Concurrency::TaskLocal> + public func encode(to encoder: any Swift::Encoder) throws +} +extension PackageResourcesManifest::Manifest : Swift::Decodable { + public init(from decoder: any Swift::Decoder) throws +} +extension PackageResourcesManifest::Manifest { + public enum Format { + case yaml + case json + @_semantics("derived_enum_equals") @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_enum_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::Format, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::Format) -> Swift::Bool + public func hash(into hasher: inout Swift::Hasher) + public var hashValue: Swift::Int { + get + } + } + public static func load(at path: Swift::String) throws -> PackageResourcesManifest::Manifest + public static func loadWithFormat(at path: Swift::String) throws -> (config: PackageResourcesManifest::Manifest, format: PackageResourcesManifest::Manifest.PackageResourcesManifest::Format) + public static func debugLoad(at path: Swift::String) throws -> PackageResourcesManifest::Manifest +} +extension PackageResourcesManifest::Manifest { + public struct NumbersConfig : Swift::Codable, Swift::Equatable, Swift::Sendable { + public static var current: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig { + get + } + @_hasInitialValue public static let `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig + public var separator: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator + public var nextTokenMode: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode + public var allowedDelimeters: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters + public var endingNumberBoundaryOptions: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOptions + public var singleLetterBoundaryOptions: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOptions + public init(separator: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator = .current, nextTokenMode: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode = .current, allowedDelimeters: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters = .current, endingNumberBoundaryOptions: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOptions = .current, singleLetterBoundaryOptions: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOptions = .current) + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public var aliasedEndingNumberNumericBoundaryOptions: Swift::String.Casification::Casification.Casification::Configuration.Casification::NumericBoundaryOptions { + get + } + public var aliasedSingleLetterNumericBoundaryOptions: Swift::String.Casification::Casification.Casification::Configuration.Casification::NumericBoundaryOptions { + get + } + public var aliasedNumericBoundaryOptions: Swift::Set { + get + } + @_implements(Swift::Equatable, ==(_:_:)) public static func __derived_struct_equals(_ a: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig, _ b: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig) -> Swift::Bool + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig { + public enum AllowedDelimters : Swift::RawRepresentable, Swift::Codable, Swift::Equatable, Swift::Sendable { + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters { + get + } + public static var current: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters { + get + } + public static var none: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters { + get + } + public enum Alias : Swift::String, Swift::CaseIterable, Swift::Sendable { + case `default` + case current + case none + public var aliasedValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::RawValue { + get + } + @inlinable public init?(rawValue: Swift::String) + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var `default`: CasePathsCore::AnyCasePath { + get + } + public var current: CasePathsCore::AnyCasePath { + get + } + public var none: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias.PackageResourcesManifest::AllCasePaths { + get + } + public typealias AllCases = [PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias] + public typealias RawValue = Swift::String + nonisolated public static var allCases: [PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias] { + get + } + public var rawValue: Swift::String { + @inlinable get + } + } + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias) + case value(Swift::Set) + public init(_ description: Swift::String) + public var description: Swift::String? { + get + } + public init(rawValue: Swift::Set) + public var rawValue: Swift::Set { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var alias: CasePathsCore::AnyCasePath { + get + } + public var value: CasePathsCore::AnyCasePath> { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::AllCasePaths { + get + } + public typealias RawValue = Swift::Set + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters : ArgumentParser::ExpressibleByArgument { + public init?(argument: Swift::String) + public var defaultValueDescription: Swift::String { + get + } + public static var allValueStrings: [Swift::String] { + get + } + public static var allValueDescriptions: [Swift::String : Swift::String] { + get + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig { + public enum BoundaryOption : Swift::RawRepresentable, Swift::Codable, Swift::Equatable, Swift::Sendable, Swift::LosslessStringConvertible { + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption { + get + } + public static var current: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption { + get + } + public static var none: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption { + get + } + public static var disableSeparators: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption { + get + } + public static var disableTokenProcessing: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption { + get + } + public enum Alias : Swift::String, Swift::CaseIterable, Swift::Sendable { + case `default` + case current + case none + case disableSeparators + case disableTokenProcessing + public func aliasedValue(for id: Swift::String) -> Swift::String.Casification::Casification.Casification::Configuration.Casification::NumericBoundaryOptions + @inlinable public init?(rawValue: Swift::String) + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var `default`: CasePathsCore::AnyCasePath { + get + } + public var current: CasePathsCore::AnyCasePath { + get + } + public var none: CasePathsCore::AnyCasePath { + get + } + public var disableSeparators: CasePathsCore::AnyCasePath { + get + } + public var disableTokenProcessing: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias.PackageResourcesManifest::AllCasePaths { + get + } + public typealias AllCases = [PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias] + public typealias RawValue = Swift::String + nonisolated public static var allCases: [PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias] { + get + } + public var rawValue: Swift::String { + @inlinable get + } + } + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias) + public init?(_ description: Swift::String) + public var description: Swift::String { + get + } + public init?(rawValue: Swift::String) + public var rawValue: Swift::String { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var alias: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::AllCasePaths { + get + } + public typealias RawValue = Swift::String + } + public struct BoundaryOptions : Swift::RawRepresentable, Swift::Codable, Swift::Equatable, Swift::Sendable { + public typealias RawValue = [PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption] + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOptions { + get + } + public static var current: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOptions { + get + } + public static var none: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOptions { + get + } + public var rawValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOptions.PackageResourcesManifest::RawValue + public init(rawValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOptions.PackageResourcesManifest::RawValue) + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption : ArgumentParser::ExpressibleByArgument { + public init?(argument: Swift::String) + public var defaultValueDescription: Swift::String { + get + } + public static var allValueStrings: [Swift::String] { + get + } + public static var allValueDescriptions: [Swift::String : Swift::String] { + get + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig { + public enum NextTokenMode : Swift::RawRepresentable, Swift::Codable, Swift::Equatable, Swift::Sendable, Swift::LosslessStringConvertible { + public typealias RawValue = Swift::String.Casification::Casification.Casification::Configuration.Casification::CamelCase.Casification::Numbers.Casification::NextTokenMode + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode { + get + } + public static var current: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode { + get + } + public enum Alias : Swift::String, Swift::CaseIterable, Swift::Equatable, Swift::Sendable { + case `default` + case current + case inherit + case auto + case automatic + case camel + case pascal + public init(_ mode: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::RawValue) + public var aliasedValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::RawValue { + get + } + @inlinable public init?(rawValue: Swift::String) + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::Alias) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var `default`: CasePathsCore::AnyCasePath { + get + } + public var current: CasePathsCore::AnyCasePath { + get + } + public var inherit: CasePathsCore::AnyCasePath { + get + } + public var auto: CasePathsCore::AnyCasePath { + get + } + public var automatic: CasePathsCore::AnyCasePath { + get + } + public var camel: CasePathsCore::AnyCasePath { + get + } + public var pascal: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::Alias + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::Alias.PackageResourcesManifest::AllCasePaths { + get + } + public typealias AllCases = [PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::Alias] + public typealias RawValue = Swift::String + nonisolated public static var allCases: [PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::Alias] { + get + } + public var rawValue: Swift::String { + @inlinable get + } + } + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::Alias) + public init?(_ description: Swift::String) + public var description: Swift::String { + get + } + public init(rawValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::RawValue) + public var rawValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::RawValue { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var alias: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::AllCasePaths { + get + } + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode : ArgumentParser::ExpressibleByArgument { + public init?(argument: Swift::String) + public var defaultValueDescription: Swift::String { + get + } + public static var allValueStrings: [Swift::String] { + get + } + public static var allValueDescriptions: [Swift::String : Swift::String] { + get + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::Alias : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig { + public enum Separator : Swift::RawRepresentable, Swift::Codable, Swift::Equatable, Swift::Sendable { + public static var `default`: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator { + get + } + public static var current: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator { + get + } + public enum Alias : Swift::String, Swift::CaseIterable, Swift::Sendable { + case `default` + case current + case none + public var aliasedValue: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::RawValue { + get + } + @inlinable public init?(rawValue: Swift::String) + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var `default`: CasePathsCore::AnyCasePath { + get + } + public var current: CasePathsCore::AnyCasePath { + get + } + public var none: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias.PackageResourcesManifest::AllCasePaths { + get + } + public typealias AllCases = [PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias] + public typealias RawValue = Swift::String + nonisolated public static var allCases: [PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias] { + get + } + public var rawValue: Swift::String { + @inlinable get + } + } + case alias(PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias) + case value(Swift::Substring) + public init(_ description: Swift::String) + public var description: Swift::String { + get + } + public init(rawValue: Swift::Substring) + public var rawValue: Swift::Substring { + get + } + public init(from decoder: any Swift::Decoder) throws + public func encode(to encoder: any Swift::Encoder) throws + public struct AllCasePaths : CasePathsCore::CasePathReflectable, Swift::Sendable, Swift::Sequence { + public subscript(root: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator) -> CasePathsCore::PartialCaseKeyPath { + get + } + public var alias: CasePathsCore::AnyCasePath { + get + } + public var value: CasePathsCore::AnyCasePath { + get + } + public func makeIterator() -> Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Element = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]>.Swift::Element + public typealias Iterator = Swift::IndexingIterator<[CasePathsCore::PartialCaseKeyPath]> + public typealias Root = PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator + } + public static var allCasePaths: PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::AllCasePaths { + get + } + public typealias RawValue = Swift::Substring + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator : ArgumentParser::ExpressibleByArgument { + public init?(argument: Swift::String) + public var defaultValueDescription: Swift::String { + get + } + public static var allValueStrings: [Swift::String] { + get + } + public static var allValueDescriptions: [Swift::String : Swift::String] { + get + } +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias : CasePathsCore::CasePathable, CasePathsCore::CasePathIterable { +} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::Alias : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::AcronymsConfig.PackageResourcesManifest::ProcessingPolicy.PackageResourcesManifest::Alias : Swift::RawRepresentable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Alias : Swift::Equatable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Alias : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::FormatConfig.PackageResourcesManifest::Alias : Swift::RawRepresentable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias : Swift::Equatable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::IndentSize.PackageResourcesManifest::Alias : Swift::RawRepresentable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias : Swift::Equatable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::Indentor.PackageResourcesManifest::Alias : Swift::RawRepresentable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceType : Swift::Equatable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceType : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::ResourceType : Swift::RawRepresentable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::Format : Swift::Equatable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::Format : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias : Swift::Equatable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::AllowedDelimters.PackageResourcesManifest::Alias : Swift::RawRepresentable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias : Swift::Equatable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::BoundaryOption.PackageResourcesManifest::Alias : Swift::RawRepresentable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::Alias : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::NextTokenMode.PackageResourcesManifest::Alias : Swift::RawRepresentable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias : Swift::Equatable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias : Swift::Hashable {} +extension PackageResourcesManifest::Manifest.PackageResourcesManifest::NumbersConfig.PackageResourcesManifest::Separator.PackageResourcesManifest::Alias : Swift::RawRepresentable {} diff --git a/.agents/interfaces/macos/_ExportedPackageResources.swiftinterface b/.agents/interfaces/macos/_ExportedPackageResources.swiftinterface new file mode 100644 index 0000000..9449d68 --- /dev/null +++ b/.agents/interfaces/macos/_ExportedPackageResources.swiftinterface @@ -0,0 +1,9 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.4 (swiftlang-6.4.0.25.4 clang-2100.3.25.1) +// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -language-mode 6 -O -enable-experimental-feature DebugDescriptionMacro -module-name _ExportedPackageResources -package-name package_resources_cli +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.4 +@_exported import PackageResources +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims diff --git a/.agents/interfaces/macos/_ExportedPackageResourcesCore.swiftinterface b/.agents/interfaces/macos/_ExportedPackageResourcesCore.swiftinterface new file mode 100644 index 0000000..1820b7a --- /dev/null +++ b/.agents/interfaces/macos/_ExportedPackageResourcesCore.swiftinterface @@ -0,0 +1,9 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.4 (swiftlang-6.4.0.25.4 clang-2100.3.25.1) +// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -language-mode 6 -O -enable-experimental-feature DebugDescriptionMacro -module-name _ExportedPackageResourcesCore -package-name package_resources_cli +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.4 +@_exported import PackageResourcesCore +import Swift +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims diff --git a/.agents/interfaces/macos/package_resources_cli.swiftinterface b/.agents/interfaces/macos/package_resources_cli.swiftinterface new file mode 100644 index 0000000..cc0b80a --- /dev/null +++ b/.agents/interfaces/macos/package_resources_cli.swiftinterface @@ -0,0 +1,23 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.4 (swiftlang-6.4.0.25.4 clang-2100.3.25.1) +// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -language-mode 6 -O -enable-experimental-feature DebugDescriptionMacro -module-name package_resources_cli -package-name package_resources_cli +// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.4 +import ArgumentParser +import Casification +import Dependencies +import Foundation +import PackageResourcesClient +import PackageResourcesFS +import PackageResourcesManifest +import Swift +import Yams +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +public typealias CamelCaseConfig = Swift::String.Casification::Casification.Casification::Configuration.Casification::CamelCase +public typealias CommonCaseConfig = Swift::String.Casification::Casification.Casification::Configuration.Casification::Common +extension Swift::String { + public static var _unspecified: Swift::String { + get + } +} diff --git a/.github/workflows/generate-swiftinterface.yml b/.github/workflows/generate-swiftinterface.yml new file mode 100644 index 0000000..a7a4239 --- /dev/null +++ b/.github/workflows/generate-swiftinterface.yml @@ -0,0 +1,120 @@ +name: Generate Swift interface +run-name: Generate ${{ inputs.platform }} interfaces + +on: + workflow_dispatch: + inputs: + platform: + description: Normalized platform name (macos, ios, linux, windows, wasi, ...) + required: true + type: string + target_branch: + description: Branch that receives the generated-interface PR (defaults to the dispatched branch) + required: false + default: "" + type: string + workflow_call: + inputs: + platform: + required: true + type: string + target_branch: + required: true + type: string + +permissions: + contents: write + pull-requests: write + +jobs: + generate: + name: Generate ${{ inputs.platform }} + runs-on: ${{ (inputs.platform == 'linux' || inputs.platform == 'wasi') && 'ubuntu-latest' || inputs.platform == 'windows' && 'windows-latest' || 'macos-latest' }} + env: + GH_TOKEN: ${{ github.token }} + INPUT_TARGET_BRANCH: ${{ inputs.target_branch }} + PLATFORM: ${{ inputs.platform }} + steps: + - name: Validate request + shell: bash + run: | + if [[ ! "$PLATFORM" =~ ^[a-z0-9][a-z0-9._-]*$ ]]; then + echo "Platform must be a normalized lowercase directory name: $PLATFORM" >&2 + exit 1 + fi + + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + ref: ${{ inputs.target_branch != '' && inputs.target_branch || github.ref_name }} + + - name: Set up Swift outside Xcode + if: runner.os != 'macOS' + uses: SwiftyLab/setup-swift@v1 + with: + swift-version: "6" + sdks: ${{ inputs.platform == 'wasi' && 'wasm' || '' }} + + - name: Prepare generation branch + shell: bash + run: | + target_branch="${INPUT_TARGET_BRANCH:-$GITHUB_REF_NAME}" + interface_branch="automation/swiftinterfaces/$GITHUB_RUN_ID/$PLATFORM" + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git switch -C "$interface_branch" + echo "TARGET_BRANCH=$target_branch" >> "$GITHUB_ENV" + echo "INTERFACE_BRANCH=$interface_branch" >> "$GITHUB_ENV" + + - name: Select WASI SDK + if: inputs.platform == 'wasi' + shell: bash + run: | + swift_sdk="$(swift sdk list | sed -nE '/(_wasm|wasi)/ { s/^[[:space:]]*([^[:space:]]+).*/\1/p; q; }')" + if [[ -z "$swift_sdk" ]]; then + echo "No installed WASI Swift SDK was found" >&2 + swift sdk list >&2 || true + exit 1 + fi + echo "SWIFT_SDK=$swift_sdk" >> "$GITHUB_ENV" + + - name: Generate interface + shell: bash + run: | + interface_dir=".agents/interfaces/$PLATFORM" + if [[ -d "$interface_dir" ]]; then + find "$interface_dir" -maxdepth 1 -type f -name '*.swiftinterface' -delete + fi + if [[ -n "${SWIFT_SDK:-}" ]]; then + make swiftinterface platform="$PLATFORM" swift_sdk="$SWIFT_SDK" + else + make swiftinterface platform="$PLATFORM" + fi + + - name: Commit and push interface + id: commit + shell: bash + run: | + git add --all -- ".agents/interfaces/$PLATFORM" + if git diff --cached --quiet; then + echo "changed=false" >> "$GITHUB_OUTPUT" + echo "No $PLATFORM interface changes" >> "$GITHUB_STEP_SUMMARY" + exit 0 + fi + git commit -m "Update $PLATFORM Swift interfaces" + git push --force-with-lease --set-upstream origin "$INTERFACE_BRANCH" + echo "changed=true" >> "$GITHUB_OUTPUT" + + - name: Open platform PR + if: steps.commit.outputs.changed == 'true' + shell: bash + run: | + pr_url="$(gh pr list --state open --base "$TARGET_BRANCH" --head "$INTERFACE_BRANCH" --json url --jq '.[0].url')" + if [[ -z "$pr_url" ]]; then + pr_url="$(gh pr create \ + --base "$TARGET_BRANCH" \ + --head "$INTERFACE_BRANCH" \ + --title "chore: update $PLATFORM Swift interfaces" \ + --body "Generated from \`$TARGET_BRANCH\` by workflow run $GITHUB_RUN_ID. Merge this PR into the aggregation branch after reviewing the platform-specific API snapshot.")" + fi + echo "$pr_url" >> "$GITHUB_STEP_SUMMARY" diff --git a/.github/workflows/update-swiftinterfaces.yml b/.github/workflows/update-swiftinterfaces.yml new file mode 100644 index 0000000..e649de9 --- /dev/null +++ b/.github/workflows/update-swiftinterfaces.yml @@ -0,0 +1,85 @@ +name: Update Swift interfaces +run-name: Update Swift interfaces from ${{ github.ref_name }} + +on: + workflow_dispatch: + inputs: + platforms: + description: JSON array of independently generated platforms + required: true + default: '["macos"]' + type: string + +permissions: + contents: write + pull-requests: write + +jobs: + prepare: + name: Create aggregation branch + runs-on: ubuntu-latest + outputs: + update_branch: ${{ steps.branch.outputs.update_branch }} + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + ref: ${{ github.ref_name }} + + - name: Push aggregation branch + id: branch + shell: bash + run: | + update_branch="automation/swiftinterfaces/$GITHUB_RUN_ID" + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git switch -C "$update_branch" + git commit --allow-empty -m "Prepare Swift interface update" + git push --force-with-lease --set-upstream origin "$update_branch" + echo "update_branch=$update_branch" >> "$GITHUB_OUTPUT" + + generate: + name: Generate ${{ matrix.platform }} + needs: prepare + strategy: + fail-fast: false + matrix: + platform: ${{ fromJSON(inputs.platforms) }} + permissions: + contents: write + pull-requests: write + uses: ./.github/workflows/generate-swiftinterface.yml + with: + platform: ${{ matrix.platform }} + target_branch: ${{ needs.prepare.outputs.update_branch }} + + finalize: + name: Open draft aggregation PR + if: always() && needs.prepare.result == 'success' + needs: + - prepare + - generate + runs-on: ubuntu-latest + env: + GH_TOKEN: ${{ github.token }} + TARGET_BRANCH: ${{ github.ref_name }} + UPDATE_BRANCH: ${{ needs.prepare.outputs.update_branch }} + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + ref: ${{ github.ref_name }} + + - name: Open draft PR + shell: bash + run: | + pr_url="$(gh pr list --state open --base "$TARGET_BRANCH" --head "$UPDATE_BRANCH" --json url --jq '.[0].url')" + if [[ -z "$pr_url" ]]; then + pr_url="$(gh pr create \ + --draft \ + --base "$TARGET_BRANCH" \ + --head "$UPDATE_BRANCH" \ + --title "chore: update platform Swift interfaces" \ + --body "Aggregation PR for workflow run $GITHUB_RUN_ID. Merge the successful platform PRs into \`$UPDATE_BRANCH\`; failed platform jobs remain visible in the workflow and can be fixed or intentionally ignored. Matrix result: \`${{ needs.generate.result }}\`.")" + fi + echo "$pr_url" >> "$GITHUB_STEP_SUMMARY" diff --git a/Makefile b/Makefile index a7e26d1..724daaf 100644 --- a/Makefile +++ b/Makefile @@ -49,3 +49,11 @@ build_clean: swift package clean swift package update swift build -c release --disable-sandbox --build-path '.build' + +output ?= .agents/interfaces +platform ?= host +swift_sdk ?= + +.PHONY: swiftinterface +swiftinterface: + @./scripts/generate-swiftinterfaces.sh --package-path . --output "$(output)" --platform "$(platform)" $(if $(swift_sdk),--swift-sdk "$(swift_sdk)") diff --git a/scripts/generate-swiftinterfaces.sh b/scripts/generate-swiftinterfaces.sh new file mode 100755 index 0000000..b028e55 --- /dev/null +++ b/scripts/generate-swiftinterfaces.sh @@ -0,0 +1,364 @@ +#!/usr/bin/env bash + +set -euo pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" +package_path="." +output_path=".agents/interfaces" +configuration="release" +include_tests=false +list_declared_platforms=false +platform="" +triple="" +sdk="" +swift_sdk="" +scratch_path="" +declare -a selected_targets=() +declare -a build_arguments=() + +usage() { + sed -n '1,$p' <<'USAGE' +Generate public Swift interfaces for one SwiftPM platform. + +Usage: + generate-swiftinterfaces.sh --platform [options] + generate-swiftinterfaces.sh --list-declared-platforms [options] + +Options: + --package-path Package root (default: .) + --output Platform-parent destination, relative to the package root + unless absolute (default: .agents/interfaces) + --platform Output/build platform, for example macos, ios, linux, + windows, or wasi; host resolves to the current platform + --list-declared-platforms Print the Apple/custom platforms declared by Package.swift + --configuration debug or release (default: release) + --include-tests Include Swift test targets + --target Generate one target; repeat to select several + --triple Forward a target triple to SwiftPM + --sdk Forward an SDK path to SwiftPM + --swift-sdk Forward an installed Swift SDK name to SwiftPM + --scratch-path Use a specific SwiftPM scratch directory + --build-arg Forward one additional argument to `swift build`; repeatable + -h, --help Show this help + +The platform name becomes an output directory. For example, --platform ios writes +/ios/.swiftinterface. Generate platforms in separate invocations so +one unsupported platform does not suppress successful platform snapshots. +USAGE +} + +fail() { + printf 'swiftinterfaces: %s\n' "$*" >&2 + exit 1 +} + +require_value() { + [[ $# -ge 2 ]] || fail "$1 requires a value" +} + +host_platform() { + case "$(uname -s)" in + Darwin) printf 'macos\n' ;; + Linux) printf 'linux\n' ;; + MINGW*|MSYS*|CYGWIN*|Windows_NT) printf 'windows\n' ;; + *) fail "cannot infer a platform from host $(uname -s); pass --platform explicitly" ;; + esac +} + +normalize_platform() { + local value + value="$(printf '%s' "$1" | tr '[:upper:]' '[:lower:]')" + case "$value" in + osx|macosx) value="macos" ;; + iphoneos|iphonesimulator) value="ios" ;; + appletvos|appletvsimulator) value="tvos" ;; + watchsimulator) value="watchos" ;; + xros|xrsimulator) value="visionos" ;; + catalyst|mac-catalyst|mac_catalyst) value="maccatalyst" ;; + wasm|webassembly) value="wasi" ;; + host) value="$(host_platform)" ;; + esac + [[ "$value" =~ ^[a-z0-9][a-z0-9._-]*$ ]] || fail "invalid platform name: $1" + printf '%s\n' "$value" +} + +while [[ $# -gt 0 ]]; do + case "$1" in + --package-path) + require_value "$@" + package_path="$2" + shift 2 + ;; + --output) + require_value "$@" + output_path="$2" + shift 2 + ;; + --platform) + require_value "$@" + [[ -z "$platform" ]] || fail "--platform may be passed only once" + platform="$2" + shift 2 + ;; + --list-declared-platforms) + list_declared_platforms=true + shift + ;; + --configuration) + require_value "$@" + configuration="$2" + shift 2 + ;; + --include-tests) + include_tests=true + shift + ;; + --target) + require_value "$@" + selected_targets+=("$2") + shift 2 + ;; + --triple) + require_value "$@" + triple="$2" + shift 2 + ;; + --sdk) + require_value "$@" + sdk="$2" + shift 2 + ;; + --swift-sdk) + require_value "$@" + swift_sdk="$2" + shift 2 + ;; + --scratch-path) + require_value "$@" + scratch_path="$2" + shift 2 + ;; + --build-arg) + require_value "$@" + build_arguments+=("$2") + shift 2 + ;; + -h|--help) + usage + exit 0 + ;; + *) + fail "unknown option: $1" + ;; + esac +done + +case "$configuration" in + debug|release) ;; + *) fail "--configuration must be debug or release" ;; +esac + +[[ "$list_declared_platforms" == false || -z "$platform" ]] || \ + fail "--platform and --list-declared-platforms are separate operations" +[[ "$list_declared_platforms" == true || -n "$platform" ]] || \ + fail "--platform is required; use --list-declared-platforms to inspect Package.swift" + +command -v swift >/dev/null 2>&1 || fail "Swift is required" +[[ -f "$script_dir/list-swift-targets.swift" ]] || fail "missing package parser beside generator" +[[ -d "$package_path" ]] || fail "package path does not exist: $package_path" + +package_root="$(cd "$package_path" && pwd -P)" +[[ -f "$package_root/Package.swift" ]] || fail "no Package.swift at $package_root" +package_identity="$(basename "$package_root" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9_]/_/g')" + +if [[ -n "$platform" ]]; then + platform="$(normalize_platform "$platform")" +fi + +if [[ -z "$scratch_path" ]]; then + scratch_root="$package_root/.build/swiftinterfaces/${platform:-metadata}/$configuration" +elif [[ "$scratch_path" = /* ]]; then + scratch_root="$scratch_path" +else + scratch_root="$package_root/$scratch_path" +fi + +mkdir -p "$scratch_root/module-cache" + +description_file="$(mktemp "${TMPDIR:-/tmp}/swiftinterfaces-description.XXXXXX")" +targets_file="$(mktemp "${TMPDIR:-/tmp}/swiftinterfaces-targets.XXXXXX")" +platforms_file="$(mktemp "${TMPDIR:-/tmp}/swiftinterfaces-platforms.XXXXXX")" +build_log="$(mktemp "${TMPDIR:-/tmp}/swiftinterfaces-build.XXXXXX")" +cleanup() { + rm -f "$description_file" "$targets_file" "$platforms_file" "$build_log" +} +trap cleanup EXIT INT TERM + +( + cd "$package_root" + swift package describe --type json >"$description_file" +) + +CLANG_MODULE_CACHE_PATH="$scratch_root/module-cache" \ +SWIFT_MODULECACHE_PATH="$scratch_root/module-cache" \ + swift "$script_dir/list-swift-targets.swift" \ + --list-platforms "$description_file" >"$platforms_file" + +if [[ "$list_declared_platforms" == true ]]; then + if [[ -s "$platforms_file" ]]; then + cat "$platforms_file" + else + printf 'swiftinterfaces: Package.swift declares no platforms; support must be proven by a platform build\n' >&2 + fi + exit 0 +fi + +host="$(host_platform)" +if [[ -z "$swift_sdk" ]]; then + sdk_name="" + default_triple="" + case "$platform" in + macos) + [[ "$host" == "macos" || -n "$triple" || -n "$sdk" ]] || \ + fail "macos generation requires a macOS host or explicit cross-compilation options" + ;; + ios) + sdk_name="iphonesimulator" + default_triple="arm64-apple-ios-simulator" + ;; + tvos) + sdk_name="appletvsimulator" + default_triple="arm64-apple-tvos-simulator" + ;; + watchos) + sdk_name="watchsimulator" + default_triple="arm64-apple-watchos-simulator" + ;; + visionos) + sdk_name="xrsimulator" + default_triple="arm64-apple-xros-simulator" + ;; + maccatalyst) + sdk_name="macosx" + default_triple="arm64-apple-ios-macabi" + ;; + driverkit) + sdk_name="driverkit" + default_triple="arm64-apple-driverkit" + ;; + linux|windows) + [[ "$host" == "$platform" || -n "$triple" || -n "$sdk" ]] || \ + fail "$platform generation requires a $platform host or explicit cross-compilation options" + ;; + wasi) + [[ -n "$triple" || -n "$sdk" ]] || \ + fail "wasi generation requires --swift-sdk (recommended) or explicit --triple/--sdk options" + ;; + *) + [[ -n "$triple" || -n "$sdk" ]] || \ + fail "custom platform $platform requires --swift-sdk or explicit --triple/--sdk options" + ;; + esac + + if [[ -n "$sdk_name" ]]; then + [[ "$host" == "macos" ]] || fail "$platform generation requires Xcode on macOS" + command -v xcrun >/dev/null 2>&1 || fail "xcrun is required for $platform generation" + [[ -n "$sdk" ]] || sdk="$(xcrun --sdk "$sdk_name" --show-sdk-path)" + [[ -n "$triple" ]] || triple="$default_triple" + fi +fi + +if [[ "$output_path" = /* ]]; then + output_parent="$output_path" +else + output_parent="$package_root/$output_path" +fi +output_root="$output_parent/$platform" +mkdir -p "$output_root" + +declare -a parser_arguments=("$description_file") +if [[ "$include_tests" == true ]]; then + parser_arguments+=(--include-tests) +fi +if (( ${#selected_targets[@]} > 0 )); then + for target in "${selected_targets[@]}"; do + parser_arguments+=(--target "$target") + done +fi + +CLANG_MODULE_CACHE_PATH="$scratch_root/module-cache" \ +SWIFT_MODULECACHE_PATH="$scratch_root/module-cache" \ + swift "$script_dir/list-swift-targets.swift" "${parser_arguments[@]}" >"$targets_file" + +generated_count=0 +while IFS=$'\t' read -r target_name module_name target_type package_name; do + [[ -n "$target_name" && -n "$module_name" ]] || continue + + printf 'Generating %s (%s) for %s...\n' "$module_name" "$target_name" "$platform" + + declare -a common_command=( + swift build + --package-path "$package_root" + --scratch-path "$scratch_root" + --configuration "$configuration" + --enable-parseable-module-interfaces + ) + + [[ -z "$triple" ]] || common_command+=(--triple "$triple") + [[ -z "$sdk" ]] || common_command+=(--sdk "$sdk") + [[ -z "$swift_sdk" ]] || common_command+=(--swift-sdk "$swift_sdk") + if (( ${#build_arguments[@]} > 0 )); then + common_command+=("${build_arguments[@]}") + fi + + declare -a command=("${common_command[@]}") + if [[ "$target_type" == "test" ]]; then + command+=(--build-tests -Xswiftc -enable-testing) + else + command+=(--target "$target_name") + fi + + : >"$build_log" + if ! CLANG_MODULE_CACHE_PATH="$scratch_root/module-cache" \ + SWIFT_MODULECACHE_PATH="$scratch_root/module-cache" \ + "${command[@]}" 2>&1 | tee "$build_log"; then + if [[ "$target_type" != "test" ]] && \ + grep -Eiq 'multiple targets.*(name|named)' "$build_log"; then + printf 'Target name is ambiguous; building root package products instead...\n' + : >"$build_log" + CLANG_MODULE_CACHE_PATH="$scratch_root/module-cache" \ + SWIFT_MODULECACHE_PATH="$scratch_root/module-cache" \ + "${common_command[@]}" 2>&1 | tee "$build_log" + else + fail "SwiftPM could not build target $target_name for $platform" + fi + fi + + interface_path="$( + find "$scratch_root" -type f -name "$module_name.swiftinterface" \ + -path "*/$package_name.build/*" -exec ls -t {} + 2>/dev/null | head -n 1 || true + )" + if [[ -z "$interface_path" ]]; then + interface_path="$( + find "$scratch_root" -type f -name "$module_name.swiftinterface" \ + -exec grep -F -l -- "-package-name $package_identity" {} + 2>/dev/null | head -n 1 || true + )" + fi + if [[ -z "$interface_path" ]]; then + interface_path="$( + find "$scratch_root" -type f -name "$module_name.swiftinterface" \ + -exec ls -t {} + 2>/dev/null | head -n 1 || true + )" + fi + [[ -n "$interface_path" && -f "$interface_path" ]] || \ + fail "build succeeded but no public interface was found for $target_name ($module_name) on $platform" + + temporary_output="$output_root/.$module_name.swiftinterface.$$" + cp "$interface_path" "$temporary_output" + chmod 0644 "$temporary_output" + mv "$temporary_output" "$output_root/$module_name.swiftinterface" + generated_count=$((generated_count + 1)) +done <"$targets_file" + +[[ $generated_count -gt 0 ]] || fail "no interfaces were generated for $platform" +printf 'Generated %d interface(s) in %s\n' "$generated_count" "$output_root" diff --git a/scripts/list-swift-targets.swift b/scripts/list-swift-targets.swift new file mode 100755 index 0000000..b66371d --- /dev/null +++ b/scripts/list-swift-targets.swift @@ -0,0 +1,100 @@ +#!/usr/bin/env swift + +import Foundation + +private struct PackageDescription: Decodable { + let name: String + let platforms: [Platform] + let targets: [Target] + + struct Platform: Decodable { + let name: String + let version: String + } +} + +private struct Target: Decodable { + let c99Name: String? + let moduleType: String? + let name: String + let type: String + + enum CodingKeys: String, CodingKey { + case c99Name = "c99name" + case moduleType = "module_type" + case name + case type + } +} + +private struct Options { + var includeTests = false + var listPlatforms = false + var selectedTargets = Set() + var jsonPath: String? +} + +private func fail(_ message: String) -> Never { + FileHandle.standardError.write(Data("swiftinterfaces: \(message)\n".utf8)) + exit(1) +} + +private var options = Options() +private var arguments = Array(CommandLine.arguments.dropFirst()) + +while !arguments.isEmpty { + let argument = arguments.removeFirst() + switch argument { + case "--include-tests": + options.includeTests = true + case "--list-platforms": + options.listPlatforms = true + case "--target": + guard !arguments.isEmpty else { fail("--target requires a value") } + options.selectedTargets.insert(arguments.removeFirst()) + default: + guard !argument.hasPrefix("-") else { fail("unknown parser option: \(argument)") } + guard options.jsonPath == nil else { fail("expected exactly one package-description JSON file") } + options.jsonPath = argument + } +} + +guard let jsonPath = options.jsonPath else { fail("missing package-description JSON file") } + +do { + let data = try Data(contentsOf: URL(fileURLWithPath: jsonPath)) + let package = try JSONDecoder().decode(PackageDescription.self, from: data) + if options.listPlatforms { + guard options.selectedTargets.isEmpty, !options.includeTests else { + fail("--list-platforms cannot be combined with target-selection options") + } + for platform in package.platforms.sorted(by: { $0.name < $1.name }) { + print("\(platform.name)\t\(platform.version)") + } + exit(0) + } + let swiftTargets = package.targets.filter { target in + target.moduleType == "SwiftTarget" && (options.includeTests || target.type != "test") + } + let availableNames = Set(swiftTargets.map(\.name)) + let unknownTargets = options.selectedTargets.subtracting(availableNames).sorted() + + guard unknownTargets.isEmpty else { + fail("unknown or excluded Swift target(s): \(unknownTargets.joined(separator: ", "))") + } + + let selected = swiftTargets + .filter { options.selectedTargets.isEmpty || options.selectedTargets.contains($0.name) } + .sorted { $0.name.localizedStandardCompare($1.name) == .orderedAscending } + + guard !selected.isEmpty else { fail("the package has no matching Swift targets") } + + for target in selected { + guard let moduleName = target.c99Name, !moduleName.isEmpty else { + fail("target \(target.name) does not have a Swift module name") + } + print("\(target.name)\t\(moduleName)\t\(target.type)\t\(package.name)") + } +} catch { + fail("could not decode package description: \(error)") +}