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_SPECIFIC_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(),
      ],
    };