diff --git a/.github/workflows/generate-documentation.yml b/.github/workflows/generate-documentation.yml new file mode 100644 index 00000000000..fb5dff8a0f1 --- /dev/null +++ b/.github/workflows/generate-documentation.yml @@ -0,0 +1,84 @@ +name: Generate Documentation + +on: + release: + types: [published] + +permissions: + id-token: write + +jobs: + generate-docs: + strategy: + matrix: + # Use strategy to split up the work into 32 jobs + job: [0, 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] + runs-on: ubuntu-latest + container: swift:5.9-jammy + env: + IGNORE: none + outputs: + version: ${{ steps.set-version.outputs.version }} + steps: + - name: Checkout Sources + uses: actions/checkout@v4 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CD_API_REFS_PUBLISH_ROLE_ARN }} + aws-region: us-east-1 + - name: Install AWS CLI, jq, and native dependencies + run: | + DEBIAN_FRONTEND="noninteractive" apt-get update + apt-get -y install curl unzip openssl libssl-dev jq + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip && ./aws/install + - name: Extract version from GITHUB_REF + id: set-version + run: | + if [[ $GITHUB_REF == refs/tags/* ]]; then + echo "Tagged release" + # get last part of GITHUB_REF separated by / + VERSION=$(echo $GITHUB_REF | tr '/' '\n' | tail -1) + echo "Version: $VERSION" + echo "VERSION=$VERSION" >> "$GITHUB_ENV" + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + else + echo "Error: runs on a tag only" + exit(1) + fi + - name: Generate docs + run: | + DOCS_BUCKET=${{ secrets.CD_API_REFS_BUCKET_NAME }} \ + ./scripts/generatedocc.sh "$VERSION" ${{ matrix.job }} ${{ strategy.job-total }} ${{ env.IGNORE }} + update-latest: + needs: generate-docs + runs-on: ubuntu-latest + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CD_API_REFS_PUBLISH_ROLE_ARN }} + aws-region: us-east-1 + - name: Install AWS CLI + run: | + # Need to install aws cli from latest since GH runner doesn't yet have + # cloudfront-keyvaluestore in the preinstalled version + DEBIAN_FRONTEND="noninteractive" sudo apt-get update + sudo apt-get -y install curl unzip + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip && sudo ./aws/install --update + - name: Update Cloudfront key value store + env: + VERSION: ${{ needs.generate-docs.outputs.version }} + run: | + export KVS_ETAG=`aws cloudfront-keyvaluestore describe-key-value-store \ + --output text \ + --query ETag \ + --kvs-arn "${{ secrets.CD_CLOUDFRONT_KVS_ARN }}"` + aws cloudfront-keyvaluestore put-key \ + --kvs-arn "${{ secrets.CD_CLOUDFRONT_KVS_ARN }}" \ + --if-match "$KVS_ETAG" \ + --key latest \ + --value "$VERSION" + diff --git a/AWSSDKSwiftCLI/Package.swift b/AWSSDKSwiftCLI/Package.swift index b35fe442acf..5c0e73ccfd4 100644 --- a/AWSSDKSwiftCLI/Package.swift +++ b/AWSSDKSwiftCLI/Package.swift @@ -24,7 +24,8 @@ let package = Package( .product(name: "Logging", package: "swift-log"), ], resources: [ - .process("Resources/Package.Base.swift") + .process("Resources/Package.Base.swift"), + .process("Resources/DocIndex.Base.md") ], swiftSettings: [ .unsafeFlags(["-package-description-version", "5.7"]) diff --git a/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/AWSSDKSwiftCLI.swift b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/AWSSDKSwiftCLI.swift index 4a2fe7f2294..6858269b5ab 100644 --- a/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/AWSSDKSwiftCLI.swift +++ b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/AWSSDKSwiftCLI.swift @@ -16,7 +16,8 @@ struct AWSSDKSwiftCLI: ParsableCommand { GeneratePackageManifestCommand.self, PrepareReleaseCommand.self, SyncClientRuntimeVersionCommand.self, - TestAWSSDKCommand.self + TestAWSSDKCommand.self, + GenerateDocIndexCommand.self ] ) } diff --git a/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Commands/GenerateDocIndex.swift b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Commands/GenerateDocIndex.swift new file mode 100644 index 00000000000..1f4509dc2da --- /dev/null +++ b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Commands/GenerateDocIndex.swift @@ -0,0 +1,70 @@ +// +// Copyright Amazon.com Inc. or its affiliates. +// All Rights Reserved. +// +// SPDX-License-Identifier: Apache-2.0 +// + +import ArgumentParser +import Foundation + +// MARK: - Command + +struct GenerateDocIndexCommand: ParsableCommand { + static var configuration = CommandConfiguration( + commandName: "generate-doc-index", + abstract: "Generates the documentation index for the AWSSDKforSwift documentation target." + ) + + @Argument(help: "The path to the aws-sdk-swift repository") + var repoPath: String + + func run() throws { + try FileManager.default.changeWorkingDirectory(repoPath) + let contents = try generateDocIndexContents() + try saveDocIndex(contents) + } + + // MARK: - Helpers + + /// Returns the contents of the generated doc index. + /// This determines the versions of the dependencies and the list of services to include and then generates the doc index with those values. + /// + /// - Returns: The contents of the generated doc index. + func generateDocIndexContents() throws -> String { + let services = try resolveServices() + log("Creating doc index contents...") + let contents = try DocIndexBuilder(services: services).build() + log("Successfully created doc index contents") + return contents + } + + /// Saves the doc index file. + /// If no file exists, then this will create a new file. Otherwise, this will overwrite the existing file. + /// + /// - Parameter contents: The contents of the doc index. + func saveDocIndex(_ contents: String) throws { + let docIndexFileName = "Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md" + log("Saving doc index to \(docIndexFileName)...") + try contents.write( + toFile: docIndexFileName, + atomically: true, + encoding: .utf8 + ) + log("Successfully saved doc index to \(docIndexFileName)") + } + + /// Returns the list of services to include in the doc index. + /// If an explicit list of services was provided by the command, then this returns the specified services. + /// Otherwise, this returns the list of services that exist within `Sources/Services` + /// + /// - Returns: The list of services to include in the doc index + func resolveServices() throws -> [String] { + log("Resolving services...") + let resolvedServices: [String] + log("Using list of services that exist within Sources/Services") + resolvedServices = try FileManager.default.enabledServices() + log("Resolved list of services: \(resolvedServices.count)") + return resolvedServices + } +} diff --git a/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Models/DocIndexBuilder.swift b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Models/DocIndexBuilder.swift new file mode 100644 index 00000000000..e678ae31797 --- /dev/null +++ b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Models/DocIndexBuilder.swift @@ -0,0 +1,73 @@ +// +// Copyright Amazon.com Inc. or its affiliates. +// All Rights Reserved. +// +// SPDX-License-Identifier: Apache-2.0 +// + +import Foundation +import PackageDescription + +/// Builds the contents of the package manifest file. +struct DocIndexBuilder { + struct Service { + let name: String + } + + let services: [String] + let baseDocIndexContents: () throws -> String + + init(services: [String]) { + self.services = services + self.baseDocIndexContents = { + // Returns the contents of the base doc index stored in the bundle at `Resources/DocIndex.Base.md` + let basePackageName = "DocIndex.Base" + + // Get the url for the base doc index that is stored in the bundle + guard let url = Bundle.module.url(forResource: basePackageName, withExtension: "md") else { + throw Error("Could not find \(basePackageName).md in bundle") + } + + // Load the contents of the base doc index + let fileContents = try FileManager.default.loadContents(atPath: url.path) + + // Convert the base doc index data to a string + guard let fileText = String(data: fileContents, encoding: .utf8) else { + throw Error("Failed to create string from contents of file \(basePackageName).swift") + } + + return fileText + } + } + + // MARK: - Build + + /// Builds the contents of the package manifest file. + func build() throws -> String { + let contents = try [ + baseDocIndexContents(), + "", + buildGeneratedContent() + ] + return contents.joined(separator: "\n") + } + + /// Builds all the generated package manifest content + private func buildGeneratedContent() -> String { + let contents = [ + buildServiceIndex(), + "" + ] + return contents.joined(separator: .newline) + } + + /// Returns a pragma mark comment to provide separation between the non-generated (base) and generated content + /// + /// - Returns: A pragma mark comment to provide separation between the non-generated (base) and generated content + private func buildServiceIndex() -> String { + return services.map { service in + let urlService = service.lowercased(with: Locale(identifier: "en_US_POSIX")) + return "[\(service)](../../../../../swift/api/\(urlService)/latest)\n" + }.joined(separator: "\n") + } +} diff --git a/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Resources/DocIndex.Base.md b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Resources/DocIndex.Base.md new file mode 100644 index 00000000000..2889383610b --- /dev/null +++ b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Resources/DocIndex.Base.md @@ -0,0 +1,11 @@ +# ``AWSSDKForSwift`` + +A pure-Swift SDK for accessing all published AWS services. + +## Overview + +**The AWS SDK for Swift is currently in developer preview and is intended strictly for feedback purposes only. Do not use this SDK for production workloads. Refer to the SDK [stability guidelines](docs/stability.md) for more detail.** + +This SDK is open-source. Code is available on Github [here](https://github.com/awslabs/aws-sdk-swift). + +## Service Documentation diff --git a/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Resources/Package.Base.swift b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Resources/Package.Base.swift index 3d3bfccae8b..d136fb40d3c 100644 --- a/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Resources/Package.Base.swift +++ b/AWSSDKSwiftCLI/Sources/AWSSDKSwiftCLI/Resources/Package.Base.swift @@ -34,6 +34,11 @@ let package = Package( .library(name: "AWSClientRuntime", targets: ["AWSClientRuntime"]) ], targets: [ + .target( + name: "AWSSDKForSwift", + path: "Sources/Core/AWSSDKForSwift", + exclude: ["Documentation.docc/AWSSDKForSwift.md"] + ), .target( name: "AWSClientRuntime", dependencies: [.crt, .clientRuntime], @@ -53,6 +58,7 @@ let package = Package( func addDependencies(clientRuntimeVersion: Version, crtVersion: Version) { addClientRuntimeDependency(clientRuntimeVersion) addCRTDependency(crtVersion) + addDoccDependency() } func addClientRuntimeDependency(_ version: Version) { @@ -83,6 +89,12 @@ func addCRTDependency(_ version: Version) { ] } +func addDoccDependency() { + package.dependencies += [ + .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0") + ] +} + // MARK: - Services func addServiceTarget(_ name: String) { diff --git a/Package.swift b/Package.swift index 23275be4692..8039448759e 100644 --- a/Package.swift +++ b/Package.swift @@ -34,6 +34,11 @@ let package = Package( .library(name: "AWSClientRuntime", targets: ["AWSClientRuntime"]) ], targets: [ + .target( + name: "AWSSDKForSwift", + path: "Sources/Core/AWSSDKForSwift", + exclude: ["Documentation.docc/AWSSDKForSwift.md"] + ), .target( name: "AWSClientRuntime", dependencies: [.crt, .clientRuntime], @@ -53,6 +58,7 @@ let package = Package( func addDependencies(clientRuntimeVersion: Version, crtVersion: Version) { addClientRuntimeDependency(clientRuntimeVersion) addCRTDependency(crtVersion) + addDoccDependency() } func addClientRuntimeDependency(_ version: Version) { @@ -83,6 +89,12 @@ func addCRTDependency(_ version: Version) { ] } +func addDoccDependency() { + package.dependencies += [ + .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0") + ] +} + // MARK: - Services func addServiceTarget(_ name: String) { diff --git a/Sources/Core/AWSSDKForSwift/AWSSDKForSwift.swift b/Sources/Core/AWSSDKForSwift/AWSSDKForSwift.swift new file mode 100644 index 00000000000..6dd310fcad1 --- /dev/null +++ b/Sources/Core/AWSSDKForSwift/AWSSDKForSwift.swift @@ -0,0 +1,8 @@ +// +// Copyright Amazon.com Inc. or its affiliates. +// All Rights Reserved. +// +// SPDX-License-Identifier: Apache-2.0 +// + +// Empty source file to satisfy the minimum requirements for a valid target diff --git a/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md b/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md new file mode 100644 index 00000000000..14a8f9f0533 --- /dev/null +++ b/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md @@ -0,0 +1,727 @@ +# ``AWSSDKForSwift`` + +A pure-Swift SDK for accessing all published AWS services. + +## Overview + +**The AWS SDK for Swift is currently in developer preview and is intended strictly for feedback purposes only. Do not use this SDK for production workloads. Refer to the SDK [stability guidelines](docs/stability.md) for more detail.** + +This SDK is open-source. Code is available on Github [here](https://github.com/awslabs/aws-sdk-swift). + +## Service Documentation + + +[AWSACM](../../../../../swift/api/awsacm/latest) + +[AWSACMPCA](../../../../../swift/api/awsacmpca/latest) + +[AWSAPIGateway](../../../../../swift/api/awsapigateway/latest) + +[AWSARCZonalShift](../../../../../swift/api/awsarczonalshift/latest) + +[AWSAccessAnalyzer](../../../../../swift/api/awsaccessanalyzer/latest) + +[AWSAccount](../../../../../swift/api/awsaccount/latest) + +[AWSAlexaForBusiness](../../../../../swift/api/awsalexaforbusiness/latest) + +[AWSAmp](../../../../../swift/api/awsamp/latest) + +[AWSAmplify](../../../../../swift/api/awsamplify/latest) + +[AWSAmplifyBackend](../../../../../swift/api/awsamplifybackend/latest) + +[AWSAmplifyUIBuilder](../../../../../swift/api/awsamplifyuibuilder/latest) + +[AWSApiGatewayManagementApi](../../../../../swift/api/awsapigatewaymanagementapi/latest) + +[AWSApiGatewayV2](../../../../../swift/api/awsapigatewayv2/latest) + +[AWSAppConfig](../../../../../swift/api/awsappconfig/latest) + +[AWSAppConfigData](../../../../../swift/api/awsappconfigdata/latest) + +[AWSAppFabric](../../../../../swift/api/awsappfabric/latest) + +[AWSAppIntegrations](../../../../../swift/api/awsappintegrations/latest) + +[AWSAppMesh](../../../../../swift/api/awsappmesh/latest) + +[AWSAppRunner](../../../../../swift/api/awsapprunner/latest) + +[AWSAppStream](../../../../../swift/api/awsappstream/latest) + +[AWSAppSync](../../../../../swift/api/awsappsync/latest) + +[AWSAppflow](../../../../../swift/api/awsappflow/latest) + +[AWSApplicationAutoScaling](../../../../../swift/api/awsapplicationautoscaling/latest) + +[AWSApplicationCostProfiler](../../../../../swift/api/awsapplicationcostprofiler/latest) + +[AWSApplicationDiscoveryService](../../../../../swift/api/awsapplicationdiscoveryservice/latest) + +[AWSApplicationInsights](../../../../../swift/api/awsapplicationinsights/latest) + +[AWSAthena](../../../../../swift/api/awsathena/latest) + +[AWSAuditManager](../../../../../swift/api/awsauditmanager/latest) + +[AWSAutoScaling](../../../../../swift/api/awsautoscaling/latest) + +[AWSAutoScalingPlans](../../../../../swift/api/awsautoscalingplans/latest) + +[AWSBackup](../../../../../swift/api/awsbackup/latest) + +[AWSBackupGateway](../../../../../swift/api/awsbackupgateway/latest) + +[AWSBackupStorage](../../../../../swift/api/awsbackupstorage/latest) + +[AWSBatch](../../../../../swift/api/awsbatch/latest) + +[AWSBedrock](../../../../../swift/api/awsbedrock/latest) + +[AWSBedrockRuntime](../../../../../swift/api/awsbedrockruntime/latest) + +[AWSBillingconductor](../../../../../swift/api/awsbillingconductor/latest) + +[AWSBraket](../../../../../swift/api/awsbraket/latest) + +[AWSBudgets](../../../../../swift/api/awsbudgets/latest) + +[AWSChime](../../../../../swift/api/awschime/latest) + +[AWSChimeSDKIdentity](../../../../../swift/api/awschimesdkidentity/latest) + +[AWSChimeSDKMediaPipelines](../../../../../swift/api/awschimesdkmediapipelines/latest) + +[AWSChimeSDKMeetings](../../../../../swift/api/awschimesdkmeetings/latest) + +[AWSChimeSDKMessaging](../../../../../swift/api/awschimesdkmessaging/latest) + +[AWSChimeSDKVoice](../../../../../swift/api/awschimesdkvoice/latest) + +[AWSCleanRooms](../../../../../swift/api/awscleanrooms/latest) + +[AWSCloud9](../../../../../swift/api/awscloud9/latest) + +[AWSCloudControl](../../../../../swift/api/awscloudcontrol/latest) + +[AWSCloudDirectory](../../../../../swift/api/awsclouddirectory/latest) + +[AWSCloudFormation](../../../../../swift/api/awscloudformation/latest) + +[AWSCloudFront](../../../../../swift/api/awscloudfront/latest) + +[AWSCloudHSM](../../../../../swift/api/awscloudhsm/latest) + +[AWSCloudHSMV2](../../../../../swift/api/awscloudhsmv2/latest) + +[AWSCloudSearch](../../../../../swift/api/awscloudsearch/latest) + +[AWSCloudSearchDomain](../../../../../swift/api/awscloudsearchdomain/latest) + +[AWSCloudTrail](../../../../../swift/api/awscloudtrail/latest) + +[AWSCloudTrailData](../../../../../swift/api/awscloudtraildata/latest) + +[AWSCloudWatch](../../../../../swift/api/awscloudwatch/latest) + +[AWSCloudWatchEvents](../../../../../swift/api/awscloudwatchevents/latest) + +[AWSCloudWatchLogs](../../../../../swift/api/awscloudwatchlogs/latest) + +[AWSCodeBuild](../../../../../swift/api/awscodebuild/latest) + +[AWSCodeCatalyst](../../../../../swift/api/awscodecatalyst/latest) + +[AWSCodeCommit](../../../../../swift/api/awscodecommit/latest) + +[AWSCodeDeploy](../../../../../swift/api/awscodedeploy/latest) + +[AWSCodeGuruProfiler](../../../../../swift/api/awscodeguruprofiler/latest) + +[AWSCodeGuruReviewer](../../../../../swift/api/awscodegurureviewer/latest) + +[AWSCodeGuruSecurity](../../../../../swift/api/awscodegurusecurity/latest) + +[AWSCodePipeline](../../../../../swift/api/awscodepipeline/latest) + +[AWSCodeStar](../../../../../swift/api/awscodestar/latest) + +[AWSCodeStarconnections](../../../../../swift/api/awscodestarconnections/latest) + +[AWSCodeartifact](../../../../../swift/api/awscodeartifact/latest) + +[AWSCodestarnotifications](../../../../../swift/api/awscodestarnotifications/latest) + +[AWSCognitoIdentity](../../../../../swift/api/awscognitoidentity/latest) + +[AWSCognitoIdentityProvider](../../../../../swift/api/awscognitoidentityprovider/latest) + +[AWSCognitoSync](../../../../../swift/api/awscognitosync/latest) + +[AWSComprehend](../../../../../swift/api/awscomprehend/latest) + +[AWSComprehendMedical](../../../../../swift/api/awscomprehendmedical/latest) + +[AWSComputeOptimizer](../../../../../swift/api/awscomputeoptimizer/latest) + +[AWSConfigService](../../../../../swift/api/awsconfigservice/latest) + +[AWSConnect](../../../../../swift/api/awsconnect/latest) + +[AWSConnectCampaigns](../../../../../swift/api/awsconnectcampaigns/latest) + +[AWSConnectCases](../../../../../swift/api/awsconnectcases/latest) + +[AWSConnectContactLens](../../../../../swift/api/awsconnectcontactlens/latest) + +[AWSConnectParticipant](../../../../../swift/api/awsconnectparticipant/latest) + +[AWSControlTower](../../../../../swift/api/awscontroltower/latest) + +[AWSCostExplorer](../../../../../swift/api/awscostexplorer/latest) + +[AWSCostandUsageReportService](../../../../../swift/api/awscostandusagereportservice/latest) + +[AWSCustomerProfiles](../../../../../swift/api/awscustomerprofiles/latest) + +[AWSDAX](../../../../../swift/api/awsdax/latest) + +[AWSDLM](../../../../../swift/api/awsdlm/latest) + +[AWSDataBrew](../../../../../swift/api/awsdatabrew/latest) + +[AWSDataExchange](../../../../../swift/api/awsdataexchange/latest) + +[AWSDataPipeline](../../../../../swift/api/awsdatapipeline/latest) + +[AWSDataSync](../../../../../swift/api/awsdatasync/latest) + +[AWSDataZone](../../../../../swift/api/awsdatazone/latest) + +[AWSDatabaseMigrationService](../../../../../swift/api/awsdatabasemigrationservice/latest) + +[AWSDetective](../../../../../swift/api/awsdetective/latest) + +[AWSDevOpsGuru](../../../../../swift/api/awsdevopsguru/latest) + +[AWSDeviceFarm](../../../../../swift/api/awsdevicefarm/latest) + +[AWSDirectConnect](../../../../../swift/api/awsdirectconnect/latest) + +[AWSDirectoryService](../../../../../swift/api/awsdirectoryservice/latest) + +[AWSDocDB](../../../../../swift/api/awsdocdb/latest) + +[AWSDocDBElastic](../../../../../swift/api/awsdocdbelastic/latest) + +[AWSDrs](../../../../../swift/api/awsdrs/latest) + +[AWSDynamoDB](../../../../../swift/api/awsdynamodb/latest) + +[AWSDynamoDBStreams](../../../../../swift/api/awsdynamodbstreams/latest) + +[AWSEBS](../../../../../swift/api/awsebs/latest) + +[AWSEC2](../../../../../swift/api/awsec2/latest) + +[AWSEC2InstanceConnect](../../../../../swift/api/awsec2instanceconnect/latest) + +[AWSECR](../../../../../swift/api/awsecr/latest) + +[AWSECRPUBLIC](../../../../../swift/api/awsecrpublic/latest) + +[AWSECS](../../../../../swift/api/awsecs/latest) + +[AWSEFS](../../../../../swift/api/awsefs/latest) + +[AWSEKS](../../../../../swift/api/awseks/latest) + +[AWSEMR](../../../../../swift/api/awsemr/latest) + +[AWSEMRServerless](../../../../../swift/api/awsemrserverless/latest) + +[AWSEMRcontainers](../../../../../swift/api/awsemrcontainers/latest) + +[AWSElastiCache](../../../../../swift/api/awselasticache/latest) + +[AWSElasticBeanstalk](../../../../../swift/api/awselasticbeanstalk/latest) + +[AWSElasticInference](../../../../../swift/api/awselasticinference/latest) + +[AWSElasticLoadBalancing](../../../../../swift/api/awselasticloadbalancing/latest) + +[AWSElasticLoadBalancingv2](../../../../../swift/api/awselasticloadbalancingv2/latest) + +[AWSElasticTranscoder](../../../../../swift/api/awselastictranscoder/latest) + +[AWSElasticsearchService](../../../../../swift/api/awselasticsearchservice/latest) + +[AWSEntityResolution](../../../../../swift/api/awsentityresolution/latest) + +[AWSEventBridge](../../../../../swift/api/awseventbridge/latest) + +[AWSEvidently](../../../../../swift/api/awsevidently/latest) + +[AWSFMS](../../../../../swift/api/awsfms/latest) + +[AWSFSx](../../../../../swift/api/awsfsx/latest) + +[AWSFinspace](../../../../../swift/api/awsfinspace/latest) + +[AWSFinspacedata](../../../../../swift/api/awsfinspacedata/latest) + +[AWSFirehose](../../../../../swift/api/awsfirehose/latest) + +[AWSFis](../../../../../swift/api/awsfis/latest) + +[AWSForecast](../../../../../swift/api/awsforecast/latest) + +[AWSForecastquery](../../../../../swift/api/awsforecastquery/latest) + +[AWSFraudDetector](../../../../../swift/api/awsfrauddetector/latest) + +[AWSGameLift](../../../../../swift/api/awsgamelift/latest) + +[AWSGlacier](../../../../../swift/api/awsglacier/latest) + +[AWSGlobalAccelerator](../../../../../swift/api/awsglobalaccelerator/latest) + +[AWSGlue](../../../../../swift/api/awsglue/latest) + +[AWSGrafana](../../../../../swift/api/awsgrafana/latest) + +[AWSGreengrass](../../../../../swift/api/awsgreengrass/latest) + +[AWSGreengrassV2](../../../../../swift/api/awsgreengrassv2/latest) + +[AWSGroundStation](../../../../../swift/api/awsgroundstation/latest) + +[AWSGuardDuty](../../../../../swift/api/awsguardduty/latest) + +[AWSHealth](../../../../../swift/api/awshealth/latest) + +[AWSHealthLake](../../../../../swift/api/awshealthlake/latest) + +[AWSHoneycode](../../../../../swift/api/awshoneycode/latest) + +[AWSIAM](../../../../../swift/api/awsiam/latest) + +[AWSIVSRealTime](../../../../../swift/api/awsivsrealtime/latest) + +[AWSIdentitystore](../../../../../swift/api/awsidentitystore/latest) + +[AWSImagebuilder](../../../../../swift/api/awsimagebuilder/latest) + +[AWSInspector](../../../../../swift/api/awsinspector/latest) + +[AWSInspector2](../../../../../swift/api/awsinspector2/latest) + +[AWSInternetMonitor](../../../../../swift/api/awsinternetmonitor/latest) + +[AWSIoT](../../../../../swift/api/awsiot/latest) + +[AWSIoT1ClickDevicesService](../../../../../swift/api/awsiot1clickdevicesservice/latest) + +[AWSIoT1ClickProjects](../../../../../swift/api/awsiot1clickprojects/latest) + +[AWSIoTAnalytics](../../../../../swift/api/awsiotanalytics/latest) + +[AWSIoTDataPlane](../../../../../swift/api/awsiotdataplane/latest) + +[AWSIoTEvents](../../../../../swift/api/awsiotevents/latest) + +[AWSIoTEventsData](../../../../../swift/api/awsioteventsdata/latest) + +[AWSIoTFleetHub](../../../../../swift/api/awsiotfleethub/latest) + +[AWSIoTFleetWise](../../../../../swift/api/awsiotfleetwise/latest) + +[AWSIoTJobsDataPlane](../../../../../swift/api/awsiotjobsdataplane/latest) + +[AWSIoTRoboRunner](../../../../../swift/api/awsiotroborunner/latest) + +[AWSIoTSecureTunneling](../../../../../swift/api/awsiotsecuretunneling/latest) + +[AWSIoTSiteWise](../../../../../swift/api/awsiotsitewise/latest) + +[AWSIoTThingsGraph](../../../../../swift/api/awsiotthingsgraph/latest) + +[AWSIoTTwinMaker](../../../../../swift/api/awsiottwinmaker/latest) + +[AWSIoTWireless](../../../../../swift/api/awsiotwireless/latest) + +[AWSIotDeviceAdvisor](../../../../../swift/api/awsiotdeviceadvisor/latest) + +[AWSIvs](../../../../../swift/api/awsivs/latest) + +[AWSIvschat](../../../../../swift/api/awsivschat/latest) + +[AWSKMS](../../../../../swift/api/awskms/latest) + +[AWSKafka](../../../../../swift/api/awskafka/latest) + +[AWSKafkaConnect](../../../../../swift/api/awskafkaconnect/latest) + +[AWSKendra](../../../../../swift/api/awskendra/latest) + +[AWSKendraRanking](../../../../../swift/api/awskendraranking/latest) + +[AWSKeyspaces](../../../../../swift/api/awskeyspaces/latest) + +[AWSKinesis](../../../../../swift/api/awskinesis/latest) + +[AWSKinesisAnalytics](../../../../../swift/api/awskinesisanalytics/latest) + +[AWSKinesisAnalyticsV2](../../../../../swift/api/awskinesisanalyticsv2/latest) + +[AWSKinesisVideo](../../../../../swift/api/awskinesisvideo/latest) + +[AWSKinesisVideoArchivedMedia](../../../../../swift/api/awskinesisvideoarchivedmedia/latest) + +[AWSKinesisVideoMedia](../../../../../swift/api/awskinesisvideomedia/latest) + +[AWSKinesisVideoSignaling](../../../../../swift/api/awskinesisvideosignaling/latest) + +[AWSKinesisVideoWebRTCStorage](../../../../../swift/api/awskinesisvideowebrtcstorage/latest) + +[AWSLakeFormation](../../../../../swift/api/awslakeformation/latest) + +[AWSLambda](../../../../../swift/api/awslambda/latest) + +[AWSLaunchWizard](../../../../../swift/api/awslaunchwizard/latest) + +[AWSLexModelBuildingService](../../../../../swift/api/awslexmodelbuildingservice/latest) + +[AWSLexModelsV2](../../../../../swift/api/awslexmodelsv2/latest) + +[AWSLexRuntimeService](../../../../../swift/api/awslexruntimeservice/latest) + +[AWSLexRuntimeV2](../../../../../swift/api/awslexruntimev2/latest) + +[AWSLicenseManager](../../../../../swift/api/awslicensemanager/latest) + +[AWSLicenseManagerLinuxSubscriptions](../../../../../swift/api/awslicensemanagerlinuxsubscriptions/latest) + +[AWSLicenseManagerUserSubscriptions](../../../../../swift/api/awslicensemanagerusersubscriptions/latest) + +[AWSLightsail](../../../../../swift/api/awslightsail/latest) + +[AWSLocation](../../../../../swift/api/awslocation/latest) + +[AWSLookoutEquipment](../../../../../swift/api/awslookoutequipment/latest) + +[AWSLookoutMetrics](../../../../../swift/api/awslookoutmetrics/latest) + +[AWSLookoutVision](../../../../../swift/api/awslookoutvision/latest) + +[AWSM2](../../../../../swift/api/awsm2/latest) + +[AWSMTurk](../../../../../swift/api/awsmturk/latest) + +[AWSMWAA](../../../../../swift/api/awsmwaa/latest) + +[AWSMachineLearning](../../../../../swift/api/awsmachinelearning/latest) + +[AWSMacie](../../../../../swift/api/awsmacie/latest) + +[AWSMacie2](../../../../../swift/api/awsmacie2/latest) + +[AWSManagedBlockchain](../../../../../swift/api/awsmanagedblockchain/latest) + +[AWSManagedBlockchainQuery](../../../../../swift/api/awsmanagedblockchainquery/latest) + +[AWSMarketplaceCatalog](../../../../../swift/api/awsmarketplacecatalog/latest) + +[AWSMarketplaceCommerceAnalytics](../../../../../swift/api/awsmarketplacecommerceanalytics/latest) + +[AWSMarketplaceEntitlementService](../../../../../swift/api/awsmarketplaceentitlementservice/latest) + +[AWSMarketplaceMetering](../../../../../swift/api/awsmarketplacemetering/latest) + +[AWSMediaConnect](../../../../../swift/api/awsmediaconnect/latest) + +[AWSMediaConvert](../../../../../swift/api/awsmediaconvert/latest) + +[AWSMediaLive](../../../../../swift/api/awsmedialive/latest) + +[AWSMediaPackage](../../../../../swift/api/awsmediapackage/latest) + +[AWSMediaPackageV2](../../../../../swift/api/awsmediapackagev2/latest) + +[AWSMediaPackageVod](../../../../../swift/api/awsmediapackagevod/latest) + +[AWSMediaStore](../../../../../swift/api/awsmediastore/latest) + +[AWSMediaStoreData](../../../../../swift/api/awsmediastoredata/latest) + +[AWSMediaTailor](../../../../../swift/api/awsmediatailor/latest) + +[AWSMedicalImaging](../../../../../swift/api/awsmedicalimaging/latest) + +[AWSMemoryDB](../../../../../swift/api/awsmemorydb/latest) + +[AWSMgn](../../../../../swift/api/awsmgn/latest) + +[AWSMigrationHub](../../../../../swift/api/awsmigrationhub/latest) + +[AWSMigrationHubConfig](../../../../../swift/api/awsmigrationhubconfig/latest) + +[AWSMigrationHubOrchestrator](../../../../../swift/api/awsmigrationhuborchestrator/latest) + +[AWSMigrationHubRefactorSpaces](../../../../../swift/api/awsmigrationhubrefactorspaces/latest) + +[AWSMigrationHubStrategy](../../../../../swift/api/awsmigrationhubstrategy/latest) + +[AWSMobile](../../../../../swift/api/awsmobile/latest) + +[AWSMq](../../../../../swift/api/awsmq/latest) + +[AWSNeptune](../../../../../swift/api/awsneptune/latest) + +[AWSNeptunedata](../../../../../swift/api/awsneptunedata/latest) + +[AWSNetworkFirewall](../../../../../swift/api/awsnetworkfirewall/latest) + +[AWSNetworkManager](../../../../../swift/api/awsnetworkmanager/latest) + +[AWSNimble](../../../../../swift/api/awsnimble/latest) + +[AWSOAM](../../../../../swift/api/awsoam/latest) + +[AWSOSIS](../../../../../swift/api/awsosis/latest) + +[AWSOmics](../../../../../swift/api/awsomics/latest) + +[AWSOpenSearch](../../../../../swift/api/awsopensearch/latest) + +[AWSOpenSearchServerless](../../../../../swift/api/awsopensearchserverless/latest) + +[AWSOpsWorks](../../../../../swift/api/awsopsworks/latest) + +[AWSOpsWorksCM](../../../../../swift/api/awsopsworkscm/latest) + +[AWSOrganizations](../../../../../swift/api/awsorganizations/latest) + +[AWSOutposts](../../../../../swift/api/awsoutposts/latest) + +[AWSPI](../../../../../swift/api/awspi/latest) + +[AWSPanorama](../../../../../swift/api/awspanorama/latest) + +[AWSPaymentCryptography](../../../../../swift/api/awspaymentcryptography/latest) + +[AWSPaymentCryptographyData](../../../../../swift/api/awspaymentcryptographydata/latest) + +[AWSPcaConnectorAd](../../../../../swift/api/awspcaconnectorad/latest) + +[AWSPersonalize](../../../../../swift/api/awspersonalize/latest) + +[AWSPersonalizeEvents](../../../../../swift/api/awspersonalizeevents/latest) + +[AWSPersonalizeRuntime](../../../../../swift/api/awspersonalizeruntime/latest) + +[AWSPinpoint](../../../../../swift/api/awspinpoint/latest) + +[AWSPinpointEmail](../../../../../swift/api/awspinpointemail/latest) + +[AWSPinpointSMSVoice](../../../../../swift/api/awspinpointsmsvoice/latest) + +[AWSPinpointSMSVoiceV2](../../../../../swift/api/awspinpointsmsvoicev2/latest) + +[AWSPipes](../../../../../swift/api/awspipes/latest) + +[AWSPolly](../../../../../swift/api/awspolly/latest) + +[AWSPricing](../../../../../swift/api/awspricing/latest) + +[AWSPrivateNetworks](../../../../../swift/api/awsprivatenetworks/latest) + +[AWSProton](../../../../../swift/api/awsproton/latest) + +[AWSQLDB](../../../../../swift/api/awsqldb/latest) + +[AWSQLDBSession](../../../../../swift/api/awsqldbsession/latest) + +[AWSQuickSight](../../../../../swift/api/awsquicksight/latest) + +[AWSRAM](../../../../../swift/api/awsram/latest) + +[AWSRDS](../../../../../swift/api/awsrds/latest) + +[AWSRDSData](../../../../../swift/api/awsrdsdata/latest) + +[AWSRUM](../../../../../swift/api/awsrum/latest) + +[AWSRbin](../../../../../swift/api/awsrbin/latest) + +[AWSRedshift](../../../../../swift/api/awsredshift/latest) + +[AWSRedshiftData](../../../../../swift/api/awsredshiftdata/latest) + +[AWSRedshiftServerless](../../../../../swift/api/awsredshiftserverless/latest) + +[AWSRekognition](../../../../../swift/api/awsrekognition/latest) + +[AWSResiliencehub](../../../../../swift/api/awsresiliencehub/latest) + +[AWSResourceExplorer2](../../../../../swift/api/awsresourceexplorer2/latest) + +[AWSResourceGroups](../../../../../swift/api/awsresourcegroups/latest) + +[AWSResourceGroupsTaggingAPI](../../../../../swift/api/awsresourcegroupstaggingapi/latest) + +[AWSRoboMaker](../../../../../swift/api/awsrobomaker/latest) + +[AWSRolesAnywhere](../../../../../swift/api/awsrolesanywhere/latest) + +[AWSRoute53](../../../../../swift/api/awsroute53/latest) + +[AWSRoute53Domains](../../../../../swift/api/awsroute53domains/latest) + +[AWSRoute53RecoveryCluster](../../../../../swift/api/awsroute53recoverycluster/latest) + +[AWSRoute53RecoveryControlConfig](../../../../../swift/api/awsroute53recoverycontrolconfig/latest) + +[AWSRoute53RecoveryReadiness](../../../../../swift/api/awsroute53recoveryreadiness/latest) + +[AWSRoute53Resolver](../../../../../swift/api/awsroute53resolver/latest) + +[AWSS3](../../../../../swift/api/awss3/latest) + +[AWSS3Control](../../../../../swift/api/awss3control/latest) + +[AWSS3Outposts](../../../../../swift/api/awss3outposts/latest) + +[AWSSES](../../../../../swift/api/awsses/latest) + +[AWSSESv2](../../../../../swift/api/awssesv2/latest) + +[AWSSFN](../../../../../swift/api/awssfn/latest) + +[AWSSMS](../../../../../swift/api/awssms/latest) + +[AWSSNS](../../../../../swift/api/awssns/latest) + +[AWSSQS](../../../../../swift/api/awssqs/latest) + +[AWSSSM](../../../../../swift/api/awsssm/latest) + +[AWSSSMContacts](../../../../../swift/api/awsssmcontacts/latest) + +[AWSSSMIncidents](../../../../../swift/api/awsssmincidents/latest) + +[AWSSSO](../../../../../swift/api/awssso/latest) + +[AWSSSOAdmin](../../../../../swift/api/awsssoadmin/latest) + +[AWSSSOOIDC](../../../../../swift/api/awsssooidc/latest) + +[AWSSTS](../../../../../swift/api/awssts/latest) + +[AWSSWF](../../../../../swift/api/awsswf/latest) + +[AWSSageMaker](../../../../../swift/api/awssagemaker/latest) + +[AWSSageMakerA2IRuntime](../../../../../swift/api/awssagemakera2iruntime/latest) + +[AWSSageMakerFeatureStoreRuntime](../../../../../swift/api/awssagemakerfeaturestoreruntime/latest) + +[AWSSageMakerGeospatial](../../../../../swift/api/awssagemakergeospatial/latest) + +[AWSSageMakerMetrics](../../../../../swift/api/awssagemakermetrics/latest) + +[AWSSageMakerRuntime](../../../../../swift/api/awssagemakerruntime/latest) + +[AWSSagemakerEdge](../../../../../swift/api/awssagemakeredge/latest) + +[AWSSavingsplans](../../../../../swift/api/awssavingsplans/latest) + +[AWSScheduler](../../../../../swift/api/awsscheduler/latest) + +[AWSSchemas](../../../../../swift/api/awsschemas/latest) + +[AWSSecretsManager](../../../../../swift/api/awssecretsmanager/latest) + +[AWSSecurityHub](../../../../../swift/api/awssecurityhub/latest) + +[AWSSecurityLake](../../../../../swift/api/awssecuritylake/latest) + +[AWSServerlessApplicationRepository](../../../../../swift/api/awsserverlessapplicationrepository/latest) + +[AWSServiceCatalog](../../../../../swift/api/awsservicecatalog/latest) + +[AWSServiceCatalogAppRegistry](../../../../../swift/api/awsservicecatalogappregistry/latest) + +[AWSServiceDiscovery](../../../../../swift/api/awsservicediscovery/latest) + +[AWSServiceQuotas](../../../../../swift/api/awsservicequotas/latest) + +[AWSShield](../../../../../swift/api/awsshield/latest) + +[AWSSigner](../../../../../swift/api/awssigner/latest) + +[AWSSimSpaceWeaver](../../../../../swift/api/awssimspaceweaver/latest) + +[AWSSnowDeviceManagement](../../../../../swift/api/awssnowdevicemanagement/latest) + +[AWSSnowball](../../../../../swift/api/awssnowball/latest) + +[AWSSsmSap](../../../../../swift/api/awsssmsap/latest) + +[AWSStorageGateway](../../../../../swift/api/awsstoragegateway/latest) + +[AWSSupport](../../../../../swift/api/awssupport/latest) + +[AWSSupportApp](../../../../../swift/api/awssupportapp/latest) + +[AWSSynthetics](../../../../../swift/api/awssynthetics/latest) + +[AWSTextract](../../../../../swift/api/awstextract/latest) + +[AWSTimestreamQuery](../../../../../swift/api/awstimestreamquery/latest) + +[AWSTimestreamWrite](../../../../../swift/api/awstimestreamwrite/latest) + +[AWSTnb](../../../../../swift/api/awstnb/latest) + +[AWSTranscribe](../../../../../swift/api/awstranscribe/latest) + +[AWSTranscribeStreaming](../../../../../swift/api/awstranscribestreaming/latest) + +[AWSTransfer](../../../../../swift/api/awstransfer/latest) + +[AWSTranslate](../../../../../swift/api/awstranslate/latest) + +[AWSVPCLattice](../../../../../swift/api/awsvpclattice/latest) + +[AWSVerifiedPermissions](../../../../../swift/api/awsverifiedpermissions/latest) + +[AWSVoiceID](../../../../../swift/api/awsvoiceid/latest) + +[AWSWAF](../../../../../swift/api/awswaf/latest) + +[AWSWAFRegional](../../../../../swift/api/awswafregional/latest) + +[AWSWAFV2](../../../../../swift/api/awswafv2/latest) + +[AWSWellArchitected](../../../../../swift/api/awswellarchitected/latest) + +[AWSWisdom](../../../../../swift/api/awswisdom/latest) + +[AWSWorkDocs](../../../../../swift/api/awsworkdocs/latest) + +[AWSWorkLink](../../../../../swift/api/awsworklink/latest) + +[AWSWorkMail](../../../../../swift/api/awsworkmail/latest) + +[AWSWorkMailMessageFlow](../../../../../swift/api/awsworkmailmessageflow/latest) + +[AWSWorkSpaces](../../../../../swift/api/awsworkspaces/latest) + +[AWSWorkSpacesWeb](../../../../../swift/api/awsworkspacesweb/latest) + +[AWSXRay](../../../../../swift/api/awsxray/latest) + diff --git a/docs/development.md b/Sources/Core/AWSSDKForSwift/Documentation.docc/development.md similarity index 100% rename from docs/development.md rename to Sources/Core/AWSSDKForSwift/Documentation.docc/development.md diff --git a/docs/logging.md b/Sources/Core/AWSSDKForSwift/Documentation.docc/logging.md similarity index 100% rename from docs/logging.md rename to Sources/Core/AWSSDKForSwift/Documentation.docc/logging.md diff --git a/docs/stability.md b/Sources/Core/AWSSDKForSwift/Documentation.docc/stability.md similarity index 100% rename from docs/stability.md rename to Sources/Core/AWSSDKForSwift/Documentation.docc/stability.md diff --git a/scripts/codegen.sh b/scripts/codegen.sh index ccb9045d49a..62bbef6197f 100755 --- a/scripts/codegen.sh +++ b/scripts/codegen.sh @@ -28,9 +28,10 @@ rm -rf Tests/Services/* # Merge the newly built models ./scripts/mergeModels.sh Sources/Services -# Regenerate the package manifest +# Regenerate the package manifest and doc index cd AWSSDKSwiftCLI -swift run AWSSDKSwiftCLI generate-package-manifest --include-integration-tests ../ +swift run AWSSDKSwiftCLI generate-package-manifest .. +swift run AWSSDKSwiftCLI generate-doc-index .. cd .. # If on Mac, open Xcode to the newly refreshed SDK diff --git a/scripts/generatedocc.sh b/scripts/generatedocc.sh new file mode 100755 index 00000000000..15b10cd4e79 --- /dev/null +++ b/scripts/generatedocc.sh @@ -0,0 +1,113 @@ +#!/bin/bash +# generate docs for all packages in a swift package + +# Create temporary dir for staging docs +OUTPUT_DIR=`mktemp -d` + +usage() { + echo "Usage:" + echo " ./scripts/generatedocc [version] [currentJob] [totalJobs] [ignorelist]" + echo "" + echo "Example:" + echo " ./scripts/generatedocc 0.7.0 0 16 AWSBatch,AWSIoTAnalytics" +} + +# Generates docs for one Swift package and uploads them to S3. +# Takes the package name and version as parameters. +generateDocs() { + package=$1 + VERSION=$2 + + # Change the package name to lowercase + package_lowercase=$(echo $package | tr '[:upper:]' '[:lower:]') + + # generate docs for version + echo "Generating docs for $package $VERSION" + swift package \ + --allow-writing-to-directory $OUTPUT_DIR \ + generate-documentation \ + --target $package \ + --disable-indexing \ + --transform-for-static-hosting \ + --output-path $OUTPUT_DIR/$package_lowercase-$VERSION.doccarchive \ + --hosting-base-path swift/api/$package_lowercase/$VERSION + + # break if swift package generate-documentation fails + if [ $? -ne 0 ]; then + echo "Failed to generate docs for $package $VERSION" + exit 1 + else + echo "Generating docs complete" + fi + + # Delete any old version of this doccarchive before upload + aws s3 rm --recursive --only-show-errors \ + s3://$DOCS_BUCKET/$package-lowercase-$VERSION.doccarchive + + # copy the new docs to AWS S3 + echo "Copying doccarchive to S3 for $package_lowercase-$VERSION" + aws s3 cp --recursive --only-show-errors \ + $OUTPUT_DIR/$package_lowercase-$VERSION.doccarchive \ + s3://$DOCS_BUCKET/$package_lowercase-$VERSION.doccarchive + + # break if S3 copy fails + if [ $? -ne 0 ]; then + echo "Failed to copy $package_lowercase-$VERSION" + exit 1 + else + echo "$package_lowercase-$VERSION copied successfully" + fi + + # delete docs from temp files + rm -rf $OUTPUT_DIR/* +} + +# Break if all params aren't supplied +if [ $# -ne 4 ]; then + usage + exit 1 +fi + +VERSION="$1" +CURRENT_JOB="$2" +TOTAL_JOBS="$3" + +# convert comma separated ignore list to array +IGNORE=($(echo $4 | tr ',' '\n')) + +echo "Dumping packages" +dump=$(swift package dump-package) + +echo "Finding packages" +packages=$(echo $dump | jq '.products[].name') + +# loop through each package with index +current=0 +for package in $packages; do + # skip if not current job + if [ $((current % TOTAL_JOBS)) -ne $CURRENT_JOB ]; then + current=$((current + 1)) + continue + fi + + # remove quotes + package=$(echo $package | sed 's/"//g') + + # skip if in ignore list + if [[ " ${IGNORE[@]} " =~ " ${package} " ]]; then + echo "Skipping $package" + current=$((current + 1)) + continue + fi + + generateDocs "$package" "$VERSION" + + current=$((current + 1)) +done + +# Generate an index with the current version, and +# the literal version "latest" +if [ $CURRENT_JOB -eq 0 ]; then + generateDocs "AWSSDKForSwift" "$VERSION" + generateDocs "AWSSDKForSwift" "latest" +fi