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

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