// Copyright 2019 The Chromium OS 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 config;

option go_package = "go.chromium.org/chromiumos/infra/proto/config";

import "google/protobuf/field_mask.proto";

// Describes different file types that can be replicated.
enum FileType {
    FILE_TYPE_UNSPECIFIED = 0;

    // A JSON file. For protos encoded as JSON, FILE_TYPE_JSONPB should be used.
    FILE_TYPE_JSON = 1;

    // A proto encoded as a JSON file.
    FILE_TYPE_JSONPB = 2;

    // A file not described by the other types.
    FILE_TYPE_OTHER = 3;
}

enum ReplicationType {
    REPLICATION_TYPE_UNSPECIFIED = 0;

    // Copy the entire file.
    REPLICATION_TYPE_COPY = 1;

    // Copy part of the file. When this type is used, a filtering mechanism must
    // be specified, e.g. a FieldMask. Not valid for some FileTypes, e.g.
    // FILE_TYPE_OTHER.
    REPLICATION_TYPE_FILTER = 2;
}

// Describes how to replace a text with another text.
message StringReplacementRule {
    // The text before the transformation.
    string before = 1;

    // The text after the transformation.
    string after = 2;
}

// Describes how a single file should be replicated.
message FileReplicationRule {
    // Path to the original file. Should be relative to the source root,
    // e.g. "src/private-overlays/overlay-coral-private/chromeos-base/chromeos-config-bsp-coral-private/files/build_config.json"
    string source_path = 1;

    // Path to output the file. Should be relative to the source root,
    // e.g. "src/overlays/overlay-coral/chromeos-base/chromeos-config-bsp-coral/files/build_config.json"
    string destination_path = 2;

    // The type of file being replicated.
    FileType file_type = 3;

    // The type of replication being done.
    ReplicationType replication_type = 4;

    // Fields to replicate to destination config payloads. Only relevant for
    // REPLICATION_TYPE_FILTER. If set on other replication types a
    // reader of this rule may choose to ignore this field or throw an error.
    //
    // # Behavior Specific to ChromeOS Config Payloads
    //
    // The mask applies to each device config in the config payload, NOT to the
    // top-level payload; i.e. to copy the "audio" field to the destination,
    // the mask should be "audio", not "chromeos.configs.audio". This is
    // analogous to standard FieldMask behavior on a REST list operation, where
    // the mask applies to each individual message. Sub-fields are still
    // fully-qualified, as per standard FieldMasks, e.g.
    // "bluetooth.config.build-path"
    google.protobuf.FieldMask destination_fields = 5;

    // String replacements to be done on the destination file. Replacements are
    // done in the order they appear in this list.
    //
    // Note that replacements are done after filtering. For example, say a
    // replacement rule changes the name of a field, "field1" -> "field2"; if
    // destination_fields specifies "field2", the renamed fields will not be
    // copied.
    repeated StringReplacementRule string_replacement_rules = 6;
}

// Describes how files should be replicated, e.g. from private to public.
message ReplicationConfig {
    // Files to be replicated.
    repeated FileReplicationRule file_replication_rules = 1;
}
