// 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.engine.engine;

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.
  bool build_windows_uwp = 29;

  // Upload engine benchmarks.
  bool upload_metrics = 30;

  // GClient variables.
  GClientVariables gclient_variables = 31;
}

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;
}
