Skip to content

Commit 3ac0b2c

Browse files
authored
amplify-xcode: Import models command (#1055)
* amplify-xcode: importModels command * feat(feat/amplify-cli-ios): renamed to AmplifyXcode * feat(amplify-cli): Improve error messages * amplify-xcode: CLI exit code * amplify-xcode: re-enable swiftformat + swiftlint * amplify-xcode: refactor CLICommands into separate files * amplify-xcode: reword error messages, address PR comments * amplify-xcode: onFailure default no-op implementation * amplify-xcode: address PR comments * amplify-xcode: reword error messages, address PR comments * amplify-xcode: collect coverage * amplify-xcode: use ArgumentParser ExitCode.failure * amplify-xcode: re-gen pbxproj file * amplify-xcode: handle AmplifyCommandError with no underlying errors * amplify-xcode: remove inline comment
1 parent df771d2 commit 3ac0b2c

16 files changed

+6416
-8243
lines changed

AmplifyTools/AmplifyXcode/AmplifyXcode.xcodeproj/project.pbxproj

Lines changed: 5920 additions & 8083 deletions
Large diffs are not rendered by default.
Lines changed: 90 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,92 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<Scheme LastUpgradeVersion = "9999" version = "1.3">
3-
<BuildAction parallelizeBuildables = "YES" buildImplicitDependencies = "YES">
4-
<BuildActionEntries>
5-
<BuildActionEntry buildForTesting = "YES" buildForRunning = "YES" buildForProfiling = "YES" buildForArchiving = "YES" buildForAnalyzing = "YES">
6-
<BuildableReference
7-
BuildableIdentifier = "primary"
8-
BuildableName = "'lib$(TARGET_NAME)'"
9-
BlueprintName = "AmplifyXcodeCore"
10-
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
11-
</BuildableReference>
12-
</BuildActionEntry>
13-
<BuildActionEntry buildForTesting = "YES" buildForRunning = "YES" buildForProfiling = "YES" buildForArchiving = "YES" buildForAnalyzing = "YES">
14-
<BuildableReference
15-
BuildableIdentifier = "primary"
16-
BuildableName = "'$(TARGET_NAME)'"
17-
BlueprintName = "AmplifyXcode"
18-
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
19-
</BuildableReference>
20-
</BuildActionEntry>
21-
</BuildActionEntries>
22-
</BuildAction>
23-
<TestAction
24-
buildConfiguration = "Debug"
25-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
26-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
27-
shouldUseLaunchSchemeArgsEnv = "YES"
28-
codeCoverageEnabled = "NO">
29-
<Testables>
30-
<TestableReference
31-
skipped = "NO">
32-
<BuildableReference
33-
BuildableIdentifier = "primary"
34-
BuildableName = "'$(TARGET_NAME)'"
35-
BlueprintName = "AmplifyXcodeCoreTests"
36-
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
37-
</BuildableReference>
38-
</TestableReference>
39-
<TestableReference
40-
skipped = "NO">
41-
<BuildableReference
42-
BuildableIdentifier = "primary"
43-
BuildableName = "'$(TARGET_NAME)'"
44-
BlueprintName = "AmplifyXcodeTests"
45-
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
46-
</BuildableReference>
47-
</TestableReference>
48-
</Testables>
49-
</TestAction>
2+
<Scheme
3+
LastUpgradeVersion = "9999"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcode"
18+
BuildableName = "AmplifyXcode"
19+
BlueprintName = "AmplifyXcode"
20+
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
<BuildActionEntry
24+
buildForTesting = "YES"
25+
buildForRunning = "YES"
26+
buildForProfiling = "YES"
27+
buildForArchiving = "YES"
28+
buildForAnalyzing = "YES">
29+
<BuildableReference
30+
BuildableIdentifier = "primary"
31+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeCore"
32+
BuildableName = "AmplifyXcodeCore.framework"
33+
BlueprintName = "AmplifyXcodeCore"
34+
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
35+
</BuildableReference>
36+
</BuildActionEntry>
37+
</BuildActionEntries>
38+
</BuildAction>
39+
<TestAction
40+
buildConfiguration = "Debug"
41+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
42+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43+
shouldUseLaunchSchemeArgsEnv = "YES">
44+
<Testables>
45+
<TestableReference
46+
skipped = "NO">
47+
<BuildableReference
48+
BuildableIdentifier = "primary"
49+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeCoreTests"
50+
BuildableName = "AmplifyXcodeCoreTests.xctest"
51+
BlueprintName = "AmplifyXcodeCoreTests"
52+
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
53+
</BuildableReference>
54+
</TestableReference>
55+
<TestableReference
56+
skipped = "NO">
57+
<BuildableReference
58+
BuildableIdentifier = "primary"
59+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeTests"
60+
BuildableName = "AmplifyXcodeTests.xctest"
61+
BlueprintName = "AmplifyXcodeTests"
62+
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
63+
</BuildableReference>
64+
</TestableReference>
65+
</Testables>
66+
</TestAction>
67+
<LaunchAction
68+
buildConfiguration = "Debug"
69+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
70+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
71+
launchStyle = "0"
72+
useCustomWorkingDirectory = "NO"
73+
ignoresPersistentStateOnLaunch = "NO"
74+
debugDocumentVersioning = "YES"
75+
debugServiceExtension = "internal"
76+
allowLocationSimulation = "YES">
77+
</LaunchAction>
78+
<ProfileAction
79+
buildConfiguration = "Release"
80+
shouldUseLaunchSchemeArgsEnv = "YES"
81+
savedToolIdentifier = ""
82+
useCustomWorkingDirectory = "NO"
83+
debugDocumentVersioning = "YES">
84+
</ProfileAction>
85+
<AnalyzeAction
86+
buildConfiguration = "Debug">
87+
</AnalyzeAction>
88+
<ArchiveAction
89+
buildConfiguration = "Release"
90+
revealArchiveInOrganizer = "YES">
91+
</ArchiveAction>
5092
</Scheme>
Lines changed: 100 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,106 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<Scheme LastUpgradeVersion = "9999" version = "1.3">
3-
<BuildAction parallelizeBuildables = "YES" buildImplicitDependencies = "YES">
4-
<BuildActionEntries>
5-
<BuildActionEntry buildForTesting = "YES" buildForRunning = "YES" buildForProfiling = "YES" buildForArchiving = "YES" buildForAnalyzing = "YES">
6-
<BuildableReference
7-
BuildableIdentifier = "primary"
8-
BuildableName = "'$(TARGET_NAME)'"
9-
BlueprintName = "AmplifyXcode"
10-
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
11-
</BuildableReference>
12-
</BuildActionEntry>
13-
</BuildActionEntries>
14-
</BuildAction>
15-
<TestAction
16-
buildConfiguration = "Debug"
17-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
18-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
19-
shouldUseLaunchSchemeArgsEnv = "YES"
20-
codeCoverageEnabled = "NO">
21-
<Testables>
22-
<TestableReference
23-
skipped = "NO">
24-
<BuildableReference
2+
<Scheme
3+
LastUpgradeVersion = "9999"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcode"
18+
BuildableName = "AmplifyXcode"
19+
BlueprintName = "AmplifyXcode"
20+
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES"
30+
codeCoverageEnabled = "YES"
31+
onlyGenerateCoverageForSpecifiedTargets = "YES">
32+
<CodeCoverageTargets>
33+
<BuildableReference
2534
BuildableIdentifier = "primary"
26-
BuildableName = "'$(TARGET_NAME)'"
27-
BlueprintName = "AmplifyXcodeCoreTests"
35+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeCore"
36+
BuildableName = "AmplifyXcodeCore.framework"
37+
BlueprintName = "AmplifyXcodeCore"
2838
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
29-
</BuildableReference>
30-
</TestableReference>
31-
<TestableReference
32-
skipped = "NO">
33-
<BuildableReference
39+
</BuildableReference>
40+
<BuildableReference
3441
BuildableIdentifier = "primary"
35-
BuildableName = "'$(TARGET_NAME)'"
36-
BlueprintName = "AmplifyXcodeTests"
42+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcode"
43+
BuildableName = "AmplifyXcode"
44+
BlueprintName = "AmplifyXcode"
3745
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
38-
</BuildableReference>
39-
</TestableReference>
40-
</Testables>
41-
</TestAction>
42-
<LaunchAction
43-
buildConfiguration = "Debug"
44-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
45-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
46-
launchStyle = "0"
47-
useCustomWorkingDirectory = "NO"
48-
ignoresPersistentStateOnLaunch = "NO"
49-
debugDocumentVersioning = "YES"
50-
debugServiceExtension = "internal"
51-
allowLocationSimulation = "YES">
52-
<BuildableProductRunnable
53-
runnableDebuggingMode = "0">
54-
<BuildableReference
55-
BuildableIdentifier = "primary"
56-
BuildableName = "'$(TARGET_NAME)'"
57-
BlueprintName = "AmplifyXcode"
58-
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
59-
</BuildableReference>
60-
</BuildableProductRunnable>
61-
<AdditionalOptions>
62-
</AdditionalOptions>
63-
</LaunchAction>
46+
</BuildableReference>
47+
</CodeCoverageTargets>
48+
<Testables>
49+
<TestableReference
50+
skipped = "NO">
51+
<BuildableReference
52+
BuildableIdentifier = "primary"
53+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeTests"
54+
BuildableName = "AmplifyXcodeTests.xctest"
55+
BlueprintName = "AmplifyXcodeTests"
56+
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
57+
</BuildableReference>
58+
</TestableReference>
59+
<TestableReference
60+
skipped = "NO">
61+
<BuildableReference
62+
BuildableIdentifier = "primary"
63+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeCoreTests"
64+
BuildableName = "AmplifyXcodeCoreTests.xctest"
65+
BlueprintName = "AmplifyXcodeCoreTests"
66+
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
67+
</BuildableReference>
68+
</TestableReference>
69+
</Testables>
70+
</TestAction>
71+
<LaunchAction
72+
buildConfiguration = "Debug"
73+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
74+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
75+
launchStyle = "0"
76+
useCustomWorkingDirectory = "NO"
77+
ignoresPersistentStateOnLaunch = "NO"
78+
debugDocumentVersioning = "YES"
79+
debugServiceExtension = "internal"
80+
allowLocationSimulation = "YES">
81+
<BuildableProductRunnable
82+
runnableDebuggingMode = "0">
83+
<BuildableReference
84+
BuildableIdentifier = "primary"
85+
BlueprintIdentifier = "AmplifyXcode::AmplifyXcode"
86+
BuildableName = "AmplifyXcode"
87+
BlueprintName = "AmplifyXcode"
88+
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
89+
</BuildableReference>
90+
</BuildableProductRunnable>
91+
</LaunchAction>
92+
<ProfileAction
93+
buildConfiguration = "Release"
94+
shouldUseLaunchSchemeArgsEnv = "YES"
95+
savedToolIdentifier = ""
96+
useCustomWorkingDirectory = "NO"
97+
debugDocumentVersioning = "YES">
98+
</ProfileAction>
99+
<AnalyzeAction
100+
buildConfiguration = "Debug">
101+
</AnalyzeAction>
102+
<ArchiveAction
103+
buildConfiguration = "Release"
104+
revealArchiveInOrganizer = "YES">
105+
</ArchiveAction>
64106
</Scheme>

AmplifyTools/AmplifyXcode/Sources/AmplifyXcode/CLI.swift

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,13 @@ import ArgumentParser
1010
import AmplifyXcodeCore
1111

1212
/// This module defines a CLI (Command Line Interface) to commands defined in `Core/Commands`.
13-
/// Each "CLI command" defined below is the actual executor of an `AmplifyCommand`, thus it's responsible
13+
/// Each "CLI command" is the actual executor of an `AmplifyCommand`, thus it's responsible
1414
/// for providing an environment, instantiate and execute a command.
1515
/// The `CommandExecutable` protocol glues an `AmplifyCommand` and the environment provided by the executor.
1616

17-
/// CLI command invoking `CommandImportConfig`.
18-
struct CLICommandImportConfig: ParsableCommand, CommandExecutable, CLICommandReportable {
19-
static let configuration = CommandConfiguration(
20-
commandName: "import-config",
21-
abstract: CommandImportConfig.description
22-
)
23-
24-
@Option(name: .shortAndLong, help: "Project base path")
25-
private var path: String = Process().currentDirectoryPath
26-
27-
var environment: AmplifyCommandEnvironment {
28-
CommandEnvironment(basePath: path, fileManager: FileManager.default)
29-
}
30-
31-
func run() throws {
32-
let output = exec(command: CommandImportConfig())
33-
report(result: output)
34-
}
35-
}
36-
3717
/// CLI interface entry point `amplify-xcode`
3818
struct AmplifyXcode: ParsableCommand {
3919
static let configuration = CommandConfiguration(
4020
abstract: "Amplify Xcode CLI",
41-
subcommands: [CLICommandImportConfig.self]
42-
)
21+
subcommands: [CLICommandImportConfig.self, CLICommandImportModels.self])
4322
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//
2+
// Copyright Amazon.com Inc. or its affiliates.
3+
// All Rights Reserved.
4+
//
5+
// SPDX-License-Identifier: Apache-2.0
6+
//
7+
8+
import Foundation
9+
import ArgumentParser
10+
import AmplifyXcodeCore
11+
12+
/// CLI command invoking `CommandImportConfig`.
13+
struct CLICommandImportConfig: ParsableCommand, CommandExecutable, CLICommandReportable {
14+
static let configuration = CommandConfiguration(
15+
commandName: "import-config",
16+
abstract: CommandImportConfig.description
17+
)
18+
19+
@Option(name: .shortAndLong, help: "Project base path")
20+
private var path: String = Process().currentDirectoryPath
21+
22+
var environment: AmplifyCommandEnvironment {
23+
CommandEnvironment(basePath: path, fileManager: FileManager.default)
24+
}
25+
26+
func run() throws {
27+
let output = exec(command: CommandImportConfig())
28+
report(result: output)
29+
if case .failure = output {
30+
throw ExitCode.failure
31+
}
32+
}
33+
}

0 commit comments

Comments
 (0)