AvdLee / appstoreconnect-swift-sdk

The Swift SDK to work with the App Store Connect API from Apple.
Other
1.48k stars 198 forks source link

Write CreateAPI outputs into dedicated Generated directory #198

Closed liamnichols closed 2 years ago

liamnichols commented 2 years ago

Related Links

Background

When running the CreateAPI generator, it's typically best to write the outputs into an isolated directory. This allows you to safely use the --clean option without worrying about deleting other important files.

When testing the upcoming 0.1 changes in this repo today, I spotted that there are currently legacy generated source files from what I assume was an older version of the App Store Connect API:

The problem is that if I run the generator with --clean, it would remove .create-api.yaml and app_store_connect_api_2.0_openapi.json since they are located in the output directory (In 0.1 we're adding a warning to prevent you from doing this though).

This also becomes more relevant in 0.1 because generated extensions (such as StringCodingKey) will no longer be nested within the Paths/Entities directory and instead they'll live at the top-level of the output directory.

To help make the transition easier, and to be sure that we cleanup old entities/paths, we should move the generated output into its own subdirectory.

Changes

In this change, I deleted the old generated source and updated the generate-open-api plugin so that it uses the --clean option and outputs into a new Generated directory.

Let me know if you'd prefer to give it a different directory name or if those deleted files were in use for some reason 🙇

SwiftLeeBot commented 2 years ago
Warnings
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppClipAdvancedExperience.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Paths/PathsV1Builds.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Paths/PathsV1AppsWithIDAppStoreVersions.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Paths/PathsV1Apps.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppScreenshotSet.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppClipAdvancedExperienceCreateRequest.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/CiWorkflowCreateRequest.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/CiBuildRun.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/App.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/BundleID.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/CiWorkflow.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/SubscriptionIntroductoryOffer.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Paths/PathsV1CiBuildRunsWithIDBuilds.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/ReviewSubmissionItemCreateRequest.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppStoreVersion.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppPreviewSet.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/SubscriptionOfferCode.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppEventLocalization.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppInfo.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppStoreVersionExperimentTreatmentLocalization.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Paths/PathsV1AppsWithIDCustomerReviews.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Paths/PathsV1CiProductsWithIDApp.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Paths/PathsV1AppsWithID.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/InAppPurchaseV2.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppClipDefaultExperience.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppClipAdvancedExperienceUpdateRequest.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/BuildBundle.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/Profile.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/ReviewSubmission.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppStoreVersionLocalization.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppCustomProductPageCreateRequest.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/CiProduct.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppInfoUpdateRequest.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Paths/PathsV1AppStoreVersionsWithIDCustomerReviews.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppPricePointV2.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/Subscription.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/AppCustomProductPageLocalization.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/Build.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/BetaGroup.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/PromotedPurchase.swift, which is over 300 lines big.
:warning: Consider to place some `MARK:` lines for Sources/OpenAPI/Generated/Entities/ReviewSubmissionItem.swift, which is over 300 lines big.
:warning: 'AppStoreVersionSubmission' is deprecated: Deprecated
:warning: 'AppStoreVersionSubmission' is deprecated: Deprecated
:warning: 'AppStoreVersionSubmission' is deprecated: Deprecated
:warning: 'AppStoreVersionSubmission' is deprecated: Deprecated
:warning: 'AgeRatingDeclaration' is deprecated: Deprecated
:warning: 'AgeRatingDeclaration' is deprecated: Deprecated
:warning: 'AgeRatingDeclaration' is deprecated: Deprecated
:warning: 'AppPricePoint' is deprecated: Deprecated
:warning: 'AppPricePoint' is deprecated: Deprecated
:warning: 'AppPricePoint' is deprecated: Deprecated
:warning: 'AppPricePoint' is deprecated: Deprecated
:warning: 'AppPricePoint' is deprecated: Deprecated
:warning: 'AppPricePoint' is deprecated: Deprecated
:warning: 'PricePoints' is deprecated: Deprecated
:warning: 'PricePoints' is deprecated: Deprecated
:warning: 'PricePoints' is deprecated: Deprecated
:warning: 'InAppPurchases' is deprecated: Deprecated
:warning: 'InAppPurchases' is deprecated: Deprecated
:warning: 'InAppPurchases' is deprecated: Deprecated
Messages
:book: View more details on Bitrise
:book: AppStoreConnect-Swift-SDK-Tests: Executed 9 tests (0 failed, 0 retried, 0 skipped) in 0.145 seconds

Code Coverage Report

Name Coverage

Generated by :no_entry_sign: Danger Swift against de43c717c74dd8ef111ffe9da6e7cf4cd1e7e235

liamnichols commented 2 years ago

This is interesting! What is the reason for this change, will it lead to better compile times, for example?

I think it was more of an organisational thing so that the Paths and Entities directories consist of just Path and Entity definitions and nothing more.

But I'm considering that maybe the extensions should go in a separate Extensions folder instead which is a bit more consistent with some other generators available

SwiftLeeBot commented 2 years ago

Congratulations! :tada: This was released as part of Release 2.3.0 :rocket:

Generated by GitBuddy