// Copyright 2020 The Pigweed Authors
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.

syntax = "proto3";

package recipes.pigweed.envtest;

message InputProperties {
  // Path within repository to env setup script to source (trailing ".sh" will
  // be replaced with ".bat" on Windows). Default: "bootstrap.sh".
  string setup_path = 1;

  // Command with which to test. Unix-style variables ($ABC) will be replaced
  // with Windows-style (%ABC%) automatically on Windows. Default:
  // `pw --directory $PW_ROOT --loglevel debug presubmit --step gn_clang_build`
  string command = 2;

  // Environment variables to be added to context before launching subprocess.
  // Format: ["VAR1=value1", "VAR2=value2", ...].
  repeated string environment_variables = 3;

  // Number of times to run bootstrap. Defaults to 2.
  int32 bootstrap_count = 4;
}
