-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathPackage.swift
97 lines (94 loc) · 3.97 KB
/
Package.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// swift-tools-version: 6.0
//===----------------------------------------------------------------------===//
//
// This source file is part of the SwiftContainerPlugin open source project
//
// Copyright (c) 2024 Apple Inc. and the SwiftContainerPlugin project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of SwiftContainerPlugin project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
import PackageDescription
let package = Package(
name: "swift-container-plugin",
platforms: [.macOS(.v13)],
products: [
.executable(name: "containertool", targets: ["containertool"]),
.plugin(name: "ContainerImageBuilder", targets: ["ContainerImageBuilder"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-crypto.git", "1.0.0"..<"4.0.0"),
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.3.0"),
.package(url: "https://github.com/apple/swift-http-types.git", from: "1.2.0"),
],
targets: [
.target(
name: "ContainerRegistry",
dependencies: [
.target(name: "Basics"), .product(name: "Crypto", package: "swift-crypto"),
.product(name: "HTTPTypes", package: "swift-http-types"),
.product(name: "HTTPTypesFoundation", package: "swift-http-types"),
]
),
.executableTarget(
name: "containertool",
dependencies: [
.target(name: "ContainerRegistry"),
.target(name: "VendorCNIOExtrasZlib"),
.target(name: "Tar"),
.product(name: "ArgumentParser", package: "swift-argument-parser"),
],
swiftSettings: [.swiftLanguageMode(.v5)]
),
.target(
// Vendored from https://github.com/apple/swift-nio-extras
name: "VendorCNIOExtrasZlib",
dependencies: [],
path: "Vendor/github.com/apple/swift-nio-extras/Sources/CNIOExtrasZlib",
linkerSettings: [.linkedLibrary("z")]
),
.target(name: "Tar"),
.target(
// Vendored from https://github.com/apple/swift-package-manager with modifications
name: "Basics",
path: "Vendor/github.com/apple/swift-package-manager/Sources/Basics"
),
.plugin(
name: "ContainerImageBuilder",
capability: .command(
intent: .custom(
verb: "build-container-image",
description: "Builds a container image for the specified target"
),
permissions: [
.allowNetworkConnections(
// scope: .all(ports: [443, 5000, 8080, 70000]),
scope: .all(),
reason: "This command publishes images to container registries over the network"
)
]
),
dependencies: [.target(name: "containertool")]
),
// Empty target that builds the DocC catalog at /ContainerImageBuilderPluginDocumentation/ContainerImageBuilder.docc.
// The ContainerImageBuilder catalog includes high-level, user-facing documentation about using
// the ContainerImageBuilder plugin from the command-line.
.target(
name: "ContainerImageBuilderPlugin",
path: "Sources/ContainerImageBuilderPluginDocumentation",
exclude: ["README.md"]
),
.testTarget(
name: "ContainerRegistryTests",
dependencies: [.target(name: "ContainerRegistry")],
resources: [.process("Resources")]
),
.testTarget(name: "containertoolTests", dependencies: [.target(name: "containertool")]),
.testTarget(name: "TarTests", dependencies: [.target(name: "Tar")]),
],
swiftLanguageModes: [.v6]
)