Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit76ee898

Browse files
committed
modelplatform as enum
1 parent4e8bc2f commit76ee898

File tree

2 files changed

+31
-11
lines changed

2 files changed

+31
-11
lines changed

‎Plugins/PackageToJS/Sources/PackageToJS.swift‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,19 @@ import Foundation
22

33
structPackageToJS{
44
structPackageOptions{
5+
enumPlatform:String,CaseIterable{
6+
case browser
7+
case node
8+
}
9+
510
/// Path to the output directory
611
varoutputPath:String?
712
/// The build configuration to use (default: debug)
813
varconfiguration:String?
914
/// Name of the package (default: lowercased Package.swift name)
1015
varpackageName:String?
1116
/// Target platform for the generated JavaScript (default: browser)
12-
varplatform:String?
17+
varplatform:Platform=.browser
1318
/// Whether to explain the build plan (default: false)
1419
varexplain:Bool=false
1520
/// Whether to print verbose output
@@ -719,7 +724,7 @@ struct PackagingPlanner {
719724
"USE_WASI_CDN": options.useCDN,
720725
"HAS_BRIDGE": exportedSkeletons.count>0 || importedSkeletons.count>0,
721726
"HAS_IMPORTS": importedSkeletons.count>0,
722-
"TARGET_PLATFORM_NODE": options.platform=="node",
727+
"TARGET_PLATFORM_NODE": options.platform==.node,
723728
]
724729
letconstantSubstitutions:[String:String]=[
725730
"PACKAGE_TO_JS_MODULE_PATH": wasmFilename,

‎Plugins/PackageToJS/Sources/PackageToJSPlugin.swift‎

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ struct PackageToJSPlugin: CommandPlugin {
175175
}
176176

177177
varextractor=ArgumentExtractor(arguments)
178-
letbuildOptions=PackageToJS.BuildOptions.parse(from:&extractor)
178+
letbuildOptions=tryPackageToJS.BuildOptions.parse(from:&extractor)
179179

180180
if extractor.remainingArguments.count>0{
181181
printStderr(
@@ -239,7 +239,7 @@ struct PackageToJSPlugin: CommandPlugin {
239239
}
240240

241241
varextractor=ArgumentExtractor(arguments)
242-
lettestOptions=PackageToJS.TestOptions.parse(from:&extractor)
242+
lettestOptions=tryPackageToJS.TestOptions.parse(from:&extractor)
243243

244244
if extractor.remainingArguments.count>0{
245245
printStderr(
@@ -440,13 +440,28 @@ private func printStderr(_ message: String) {
440440

441441
// MARK: - Options parsing
442442

443+
extensionArgumentExtractor{
444+
mutatingfunc extractPlatformOption(named name:String)throws->PackageToJS.PackageOptions.Platform{
445+
letstringValue:String?=self.extractOption(named: name).last
446+
guardlet stringValueelse{
447+
throwPackageToJSError("Missing value for option --\(name)")
448+
}
449+
guardlet platform=PackageToJS.PackageOptions.Platform(rawValue: stringValue)else{
450+
throwPackageToJSError(
451+
"Invalid platform:\(stringValue), expected one of\(PackageToJS.PackageOptions.Platform.allCases.map(\.rawValue).joined(separator:","))"
452+
)
453+
}
454+
return platform
455+
}
456+
}
457+
443458
extensionPackageToJS.PackageOptions{
444-
staticfunc parse(from extractor:inoutArgumentExtractor)->PackageToJS.PackageOptions{
459+
staticfunc parse(from extractor:inoutArgumentExtractor)throws->PackageToJS.PackageOptions{
445460
letoutputPath= extractor.extractOption(named:"output").last
446461
letconfiguration:String?=
447462
(extractor.extractOption(named:"configuration")+ extractor.extractSingleDashOption(named:"c")).last
448463
letpackageName= extractor.extractOption(named:"package-name").last
449-
letplatform= extractor.extractOption(named:"platform").last
464+
letplatform=tryextractor.extractPlatformOption(named:"platform")
450465
letexplain= extractor.extractFlag(named:"explain")
451466
letuseCDN= extractor.extractFlag(named:"use-cdn")
452467
letverbose= extractor.extractFlag(named:"verbose")
@@ -468,7 +483,7 @@ extension PackageToJS.PackageOptions {
468483
--output <path> Path to the output directory (default: .build/plugins/PackageToJS/outputs/Package)
469484
-c, --configuration <name> The build configuration to use (values: debug, release; default: debug)
470485
--package-name <name> Name of the package (default: lowercased Package.swift name)
471-
--platform <name> Target platform for generated JavaScript (values:browser, node; default: browser)
486+
--platform <name> Target platform for generated JavaScript (values:\(PackageToJS.PackageOptions.Platform.allCases.map(\.rawValue).joined(separator:",")); default:\(PackageToJS.PackageOptions.Platform.browser))
472487
--use-cdn Whether to use CDN for dependency packages
473488
--enable-code-coverage Whether to enable code coverage collection
474489
--explain Whether to explain the build plan
@@ -478,7 +493,7 @@ extension PackageToJS.PackageOptions {
478493
}
479494

480495
extensionPackageToJS.BuildOptions{
481-
staticfunc parse(from extractor:inoutArgumentExtractor)->PackageToJS.BuildOptions{
496+
staticfunc parse(from extractor:inoutArgumentExtractor)throws->PackageToJS.BuildOptions{
482497
letproduct= extractor.extractOption(named:"product").last
483498
letnoOptimize= extractor.extractFlag(named:"no-optimize")
484499
letrawDebugInfoFormat= extractor.extractOption(named:"debug-info-format").last
@@ -491,7 +506,7 @@ extension PackageToJS.BuildOptions {
491506
}
492507
debugInfoFormat= format
493508
}
494-
letpackageOptions=PackageToJS.PackageOptions.parse(from:&extractor)
509+
letpackageOptions=tryPackageToJS.PackageOptions.parse(from:&extractor)
495510
returnPackageToJS.BuildOptions(
496511
product: product,
497512
noOptimize: noOptimize!=0,
@@ -529,15 +544,15 @@ extension PackageToJS.BuildOptions {
529544
}
530545

531546
extensionPackageToJS.TestOptions{
532-
staticfunc parse(from extractor:inoutArgumentExtractor)->PackageToJS.TestOptions{
547+
staticfunc parse(from extractor:inoutArgumentExtractor)throws->PackageToJS.TestOptions{
533548
letbuildOnly= extractor.extractFlag(named:"build-only")
534549
letlistTests= extractor.extractFlag(named:"list-tests")
535550
letfilter= extractor.extractOption(named:"filter")
536551
letprelude= extractor.extractOption(named:"prelude").last
537552
letenvironment= extractor.extractOption(named:"environment").last
538553
letinspect= extractor.extractFlag(named:"inspect")
539554
letextraNodeArguments= extractor.extractSingleDashOption(named:"Xnode")
540-
letpackageOptions=PackageToJS.PackageOptions.parse(from:&extractor)
555+
letpackageOptions=tryPackageToJS.PackageOptions.parse(from:&extractor)
541556
varoptions=PackageToJS.TestOptions(
542557
buildOnly: buildOnly!=0,
543558
listTests: listTests!=0,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp