mirror of
				https://github.com/GayPizzaSpecifications/darwin-apk.git
				synced 2025-11-04 07:59:38 +00:00 
			
		
		
		
	Skeleton CLI utility 'dpk'
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -6,3 +6,4 @@ DerivedData/
 | 
				
			|||||||
.swiftpm/configuration/registries.json
 | 
					.swiftpm/configuration/registries.json
 | 
				
			||||||
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
 | 
					.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
 | 
				
			||||||
.netrc
 | 
					.netrc
 | 
				
			||||||
 | 
					Package.resolved
 | 
				
			||||||
 | 
				
			|||||||
@ -3,8 +3,16 @@ import PackageDescription
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
let package = Package(
 | 
					let package = Package(
 | 
				
			||||||
  name: "darwin-apk",
 | 
					  name: "darwin-apk",
 | 
				
			||||||
 | 
					  dependencies: [
 | 
				
			||||||
 | 
					    .package(url: "https://github.com/apple/swift-argument-parser", from: "1.5.0"),
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
  targets: [
 | 
					  targets: [
 | 
				
			||||||
    .executableTarget(
 | 
					    .executableTarget(
 | 
				
			||||||
            name: "darwin-apk"),
 | 
					      name: "dpk",
 | 
				
			||||||
 | 
					      dependencies: [
 | 
				
			||||||
 | 
					        .product(name: "ArgumentParser", package: "swift-argument-parser"),
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      path: "Sources/dpk-cli"
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										75
									
								
								Sources/dpk-cli/CommandLine.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								Sources/dpk-cli/CommandLine.swift
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					// SPDX-License-Identifier: Apache-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import ArgumentParser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@main
 | 
				
			||||||
 | 
					struct DarwinApkCLI: ParsableCommand {
 | 
				
			||||||
 | 
					  static let configuration = CommandConfiguration(
 | 
				
			||||||
 | 
					    commandName: "dpk",
 | 
				
			||||||
 | 
					    abstract: "Command-line interface for managing packages installed via darwin-apk.",
 | 
				
			||||||
 | 
					    subcommands: [
 | 
				
			||||||
 | 
					      Install.self,
 | 
				
			||||||
 | 
					      Remove.self,
 | 
				
			||||||
 | 
					      Update.self,
 | 
				
			||||||
 | 
					      Upgrade.self
 | 
				
			||||||
 | 
					    ])
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extension DarwinApkCLI {
 | 
				
			||||||
 | 
					  struct Install: ParsableCommand {
 | 
				
			||||||
 | 
					    static let configuration = CommandConfiguration(
 | 
				
			||||||
 | 
					      commandName: "add",
 | 
				
			||||||
 | 
					      abstract: "Install package(s) to the system.",
 | 
				
			||||||
 | 
					      aliases: [ "install", "i", "a" ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Argument(help: "One or more package names to install to the system.")
 | 
				
			||||||
 | 
					    var packages: [String]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func run() throws {
 | 
				
			||||||
 | 
					      print("installing \"\(packages.joined(separator: "\", \""))\"")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  struct Remove: ParsableCommand {
 | 
				
			||||||
 | 
					    static let configuration = CommandConfiguration(
 | 
				
			||||||
 | 
					      commandName: "remove",
 | 
				
			||||||
 | 
					      abstract: "Remove specified package(s) from the system.",
 | 
				
			||||||
 | 
					      aliases: [ "uninstall", "del", "rem", "r" ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Argument(help: "One or more package names to uninstall from the system.")
 | 
				
			||||||
 | 
					    var packages: [String]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func run() throws {
 | 
				
			||||||
 | 
					      print("uninstalling \"\(packages.joined(separator: "\", \""))\"")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  struct Update: ParsableCommand {
 | 
				
			||||||
 | 
					    static let configuration = CommandConfiguration(
 | 
				
			||||||
 | 
					      commandName: "update",
 | 
				
			||||||
 | 
					      abstract: "Update the system package repositories.",
 | 
				
			||||||
 | 
					      aliases: [ "u" ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func run() throws {
 | 
				
			||||||
 | 
					      print("updating package repositories")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  struct Upgrade: ParsableCommand {
 | 
				
			||||||
 | 
					    static let configuration = CommandConfiguration(
 | 
				
			||||||
 | 
					      commandName: "upgrade",
 | 
				
			||||||
 | 
					      abstract: "Upgrade installed packages.",
 | 
				
			||||||
 | 
					      aliases: [ "U" ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Argument(help: "Optionally specify packages to upgrade. Otherwise upgrade all packages installed on the system.")
 | 
				
			||||||
 | 
					    var packages: [String] = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func run() throws {
 | 
				
			||||||
 | 
					      if packages.isEmpty {
 | 
				
			||||||
 | 
					        print("upgrading system")
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        print("upgrading invidual packages: \"\(packages.joined(separator: "\", \""))\"")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,4 +0,0 @@
 | 
				
			|||||||
// The Swift Programming Language
 | 
					 | 
				
			||||||
// https://docs.swift.org/swift-book
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
print("Hello, world!")
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user