Skip to content

Commit

Permalink
amplify-xcode: Import models command (#1055)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
diegocstn committed Feb 24, 2021
1 parent df771d2 commit 3ac0b2c
Show file tree
Hide file tree
Showing 16 changed files with 6,416 additions and 8,243 deletions.
14,003 changes: 5,920 additions & 8,083 deletions AmplifyTools/AmplifyXcode/AmplifyXcode.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,50 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme LastUpgradeVersion = "9999" version = "1.3">
<BuildAction parallelizeBuildables = "YES" buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry buildForTesting = "YES" buildForRunning = "YES" buildForProfiling = "YES" buildForArchiving = "YES" buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BuildableName = "'lib$(TARGET_NAME)'"
BlueprintName = "AmplifyXcodeCore"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry buildForTesting = "YES" buildForRunning = "YES" buildForProfiling = "YES" buildForArchiving = "YES" buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BuildableName = "'$(TARGET_NAME)'"
BlueprintName = "AmplifyXcode"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "NO">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BuildableName = "'$(TARGET_NAME)'"
BlueprintName = "AmplifyXcodeCoreTests"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BuildableName = "'$(TARGET_NAME)'"
BlueprintName = "AmplifyXcodeTests"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<Scheme
LastUpgradeVersion = "9999"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcode"
BuildableName = "AmplifyXcode"
BlueprintName = "AmplifyXcode"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeCore"
BuildableName = "AmplifyXcodeCore.framework"
BlueprintName = "AmplifyXcodeCore"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeCoreTests"
BuildableName = "AmplifyXcodeCoreTests.xctest"
BlueprintName = "AmplifyXcodeCoreTests"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeTests"
BuildableName = "AmplifyXcodeTests.xctest"
BlueprintName = "AmplifyXcodeTests"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
Original file line number Diff line number Diff line change
@@ -1,64 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme LastUpgradeVersion = "9999" version = "1.3">
<BuildAction parallelizeBuildables = "YES" buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry buildForTesting = "YES" buildForRunning = "YES" buildForProfiling = "YES" buildForArchiving = "YES" buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BuildableName = "'$(TARGET_NAME)'"
BlueprintName = "AmplifyXcode"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "NO">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
<Scheme
LastUpgradeVersion = "9999"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcode"
BuildableName = "AmplifyXcode"
BlueprintName = "AmplifyXcode"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES"
onlyGenerateCoverageForSpecifiedTargets = "YES">
<CodeCoverageTargets>
<BuildableReference
BuildableIdentifier = "primary"
BuildableName = "'$(TARGET_NAME)'"
BlueprintName = "AmplifyXcodeCoreTests"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeCore"
BuildableName = "AmplifyXcodeCore.framework"
BlueprintName = "AmplifyXcodeCore"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
</BuildableReference>
<BuildableReference
BuildableIdentifier = "primary"
BuildableName = "'$(TARGET_NAME)'"
BlueprintName = "AmplifyXcodeTests"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcode"
BuildableName = "AmplifyXcode"
BlueprintName = "AmplifyXcode"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BuildableName = "'$(TARGET_NAME)'"
BlueprintName = "AmplifyXcode"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
</BuildableReference>
</CodeCoverageTargets>
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeTests"
BuildableName = "AmplifyXcodeTests.xctest"
BlueprintName = "AmplifyXcodeTests"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcodeCoreTests"
BuildableName = "AmplifyXcodeCoreTests.xctest"
BlueprintName = "AmplifyXcodeCoreTests"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AmplifyXcode::AmplifyXcode"
BuildableName = "AmplifyXcode"
BlueprintName = "AmplifyXcode"
ReferencedContainer = "container:AmplifyXcode.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
25 changes: 2 additions & 23 deletions AmplifyTools/AmplifyXcode/Sources/AmplifyXcode/CLI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,34 +10,13 @@ import ArgumentParser
import AmplifyXcodeCore

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

/// CLI command invoking `CommandImportConfig`.
struct CLICommandImportConfig: ParsableCommand, CommandExecutable, CLICommandReportable {
static let configuration = CommandConfiguration(
commandName: "import-config",
abstract: CommandImportConfig.description
)

@Option(name: .shortAndLong, help: "Project base path")
private var path: String = Process().currentDirectoryPath

var environment: AmplifyCommandEnvironment {
CommandEnvironment(basePath: path, fileManager: FileManager.default)
}

func run() throws {
let output = exec(command: CommandImportConfig())
report(result: output)
}
}

/// CLI interface entry point `amplify-xcode`
struct AmplifyXcode: ParsableCommand {
static let configuration = CommandConfiguration(
abstract: "Amplify Xcode CLI",
subcommands: [CLICommandImportConfig.self]
)
subcommands: [CLICommandImportConfig.self, CLICommandImportModels.self])
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//

import Foundation
import ArgumentParser
import AmplifyXcodeCore

/// CLI command invoking `CommandImportConfig`.
struct CLICommandImportConfig: ParsableCommand, CommandExecutable, CLICommandReportable {
static let configuration = CommandConfiguration(
commandName: "import-config",
abstract: CommandImportConfig.description
)

@Option(name: .shortAndLong, help: "Project base path")
private var path: String = Process().currentDirectoryPath

var environment: AmplifyCommandEnvironment {
CommandEnvironment(basePath: path, fileManager: FileManager.default)
}

func run() throws {
let output = exec(command: CommandImportConfig())
report(result: output)
if case .failure = output {
throw ExitCode.failure
}
}
}

0 comments on commit 3ac0b2c

Please sign in to comment.