// Copyright 2019 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto3";
package recipes.flutter.release.release;

message GClientVariables {
  bool download_fuchsia_sdk = 1;
  string fuchsia_sdk_path = 2;
}

message InputProperties {
  string mastername = 1;
  string goma_jobs = 2;

  // License keys for the Android SDK.
  string android_sdk_license = 3;
  string android_sdk_preview_license = 4;

  // Which artifacts to build.
  // TODO(dnfield): Deprecate these in favor of actually passing in
  // build artifacts to use.
  bool build_host = 5;
  bool build_fuchsia = 6;
  bool build_android_aot = 7;
  bool build_android_debug = 8;
  bool build_android_vulkan = 9;

  // Whether to actually upload results to the bucket.
  bool upload_packages = 10;

  // Used to override the git ref/url. Only for experimental or non-prod builds.
  string git_url = 11;
  string git_ref = 12;

  string jazzy_version = 13;
  string xcpretty_version = 14;

  bool build_ios = 15;
  bool ios_debug = 16;
  bool ios_profile = 17;
  bool ios_release = 18;
  bool no_bitcode = 19;
  bool no_maven = 20;
  bool clobber=21;

  string fuchsia_ctl_version = 22;
  bool build_font_subset = 23;
  bool test_fuchsia = 24;
  // Override previous upload check, defaults to False
  bool force_upload = 25;
  bool build_android_jit_release = 26;
  bool no_lto = 27;

  // CIPD tag for fuchsia/vdl/...
  string vdl_version = 28;

  // Whether to build Windows UWP artifacts.
  // UWP support removed: https://github.com/flutter/flutter/issues/102172
  reserved 29; // deprecated build_windows_uwp field

  // Upload engine benchmarks.
  bool upload_metrics = 30;

  // GClient variables.
  GClientVariables gclient_variables = 31;

  // emulator architecture to run tests on
  // Currently only used by femu_test
  string emulator_arch = 32;
}

message EnvProperties {
  string SWARMING_TASK_ID = 1;

  // Whether to skip android build. 'TRUE' skips the build.
  // Intentionally not using a boolean as protobuf doesn't allow null defaults.
  string SKIP_ANDROID = 2;
}