structures property

Map<String, dynamic> get structures

Implementation

Map<String, dynamic> get structures => {
      "name": "Distribution CLI",
      "description": "A CLI tool to build and publish your application.",
      "variables": {
        "ANDROID_PACKAGE": argResults?['android-package-name'] as String?,
        "IOS_PACKAGE": argResults?['ios-package-name'] as String?,
        "APPLE_ID": "\${APPLE_ID}",
        "APPLE_APP_SPECIFIC_PASSWORD": "\${APPLE_APP_SPESIFIC_PASSWORD}",
      },
      "tasks": [
        Task(
          name: "Android Build and deploy",
          key: "android",
          description:
              "Build and deploy the Android application to playstore.",
          workflows: ["build", "publish"],
          jobs: [
            Job(
              name: "Build Android",
              description: "Build the Android application using Gradle.",
              key: "build",
              packageName: "\${{ANDROID_PACKAGE}}",
              builder: BuilderJob(
                  android: android_arguments.Arguments(
                      Variables.fromSystem(globalResults),
                      binaryType: "aab",
                      buildMode: "release")),
            ),
            Job(
              name: "Publish Android",
              description:
                  "Publish the Android application to playstore as internal test track.",
              key: "publish",
              packageName: "\${{ANDROID_PACKAGE}}",
              publisher: PublisherJob(
                fastlane: fastlane_publisher.Arguments(
                  Variables.fromSystem(globalResults),
                  filePath: Files.androidDistributionOutputDir.path,
                  metadataPath: Files.androidDistributionMetadataDir.path,
                  jsonKey: Files.fastlaneJson.path,
                  track: 'internal',
                  trackPromoteTo: 'production',
                  binaryType: 'aab',
                  skipUploadImages: true,
                  skipUploadScreenshots: true,
                ),
              ),
            ),
          ],
        ).toJson(),
        if (Platform.isMacOS)
          Task(
            name: "iOS Build and deploy",
            key: "ios",
            description: "Build and deploy the iOS application to app store.",
            jobs: [
              Job(
                name: "Build iOS",
                description: "Build the iOS application using Xcode.",
                key: "build",
                packageName: "\${{IOS_PACKAGE}}",
                builder: BuilderJob(
                    ios: ios_arguments.Arguments(
                  Variables.fromSystem(globalResults),
                  binaryType: "ipa",
                  buildMode: "release",
                )),
              ),
              Job(
                  name: "Publish iOS",
                  description: "Publish the iOS application to app store.",
                  key: "publish",
                  packageName: "\${{IOS_PACKAGE}}",
                  publisher: PublisherJob(
                    xcrun: xcrun_publisher.Arguments(
                      Variables.fromSystem(globalResults),
                      filePath: Files.iosDistributionOutputDir.path,
                      username: "\${{APPLE_ID}}",
                      password: "\${{APPLE_APP_SPECIFIC_PASSWORD}}",
                    ),
                  )),
            ],
          ).toJson(),
      ]
    };