Add carton package cmd (#96)

* Ignore generate-xcodeproj artifact

* Add carton package command which proxies to swift-package in the selected toolchain
This commit is contained in:
Yuta Saito 2020-08-28 17:35:15 +09:00 committed by GitHub
parent 6d71bdfa0c
commit 86c9998a32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 2 deletions

2
.gitignore vendored
View File

@ -40,7 +40,7 @@ playground.xcworkspace
# Packages/
# Package.pins
# Package.resolved
# *.xcodeproj
*.xcodeproj
#
# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
# hence it is not needed unless you have added a package configuration file to your project

View File

@ -277,4 +277,10 @@ public final class Toolchain {
try ProcessRunner(initArgs, terminal)
.waitUntilFinished()
}
public func runPackage(_ arguments: [String]) throws {
let args = [swiftPath.pathString, "package"] + arguments
try ProcessRunner(args, terminal)
.waitUntilFinished()
}
}

View File

@ -19,6 +19,6 @@ struct Carton: ParsableCommand {
static let configuration = CommandConfiguration(
abstract: "📦 Watcher, bundler, and test runner for your SwiftWasm apps.",
version: cartonVersion,
subcommands: [Init.self, Dev.self, SDK.self, Test.self]
subcommands: [Init.self, Dev.self, SDK.self, Test.self, Package.self]
)
}

View File

@ -0,0 +1,34 @@
// Copyright 2020 Carton contributors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import ArgumentParser
import SwiftToolchain
import TSCBasic
/// Proxy swift-package command to locally pinned toolchain version.
struct Package: ParsableCommand {
static let configuration = CommandConfiguration(abstract: """
Perform operations on Swift packages.
""")
@Argument(wrappedValue: [], parsing: .remaining)
var arguments: [String]
func run() throws {
guard let terminal = TerminalController(stream: stdoutStream)
else { fatalError("failed to create an instance of `TerminalController`") }
let toolchain = try Toolchain(localFileSystem, terminal)
try toolchain.runPackage(arguments)
}
}