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

import("//build/compiled_action.gni")

# Compresses a file with brotli.
#
# Variables
#   input_file: Path to input file.
#   output_file: Path to output file.
#
template("compress_file_brotli") {
  compiled_action(target_name) {
    forward_variables_from(invoker,
                           [
                             "deps",
                             "testonly",
                           ])
    tool = "//third_party/brotli:bro"
    inputs = [
      invoker.input_file,
    ]
    outputs = [
      invoker.output_file,
    ]
    args = [
      "--force",
      "--input",
      rebase_path(invoker.input_file, root_build_dir),
      "--output",
      rebase_path(invoker.output_file, root_build_dir),
    ]
  }
}
