mirror of
https://github.com/GayPizzaSpecifications/darwin-apk.git
synced 2025-08-04 05:51:31 +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