# Copyright 2017 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("//tools/grit/grit_rule.gni")

group("extensions") {
  deps = [
    ":colorenhancer",
  ]
}

group("colorenhancer") {
  deps = [
    ":colorenhancer_copy",
    ":colorenhancer_strings",
  ]
}

locale_files = [
  "_locales/am/messages.json",
  "_locales/ar/messages.json",
  "_locales/bg/messages.json",
  "_locales/bn/messages.json",
  "_locales/ca/messages.json",
  "_locales/cs/messages.json",
  "_locales/da/messages.json",
  "_locales/de/messages.json",
  "_locales/el/messages.json",
  "_locales/en_GB/messages.json",
  "_locales/en/messages.json",
  "_locales/es/messages.json",
  "_locales/es_419/messages.json",
  "_locales/et/messages.json",
  "_locales/fa/messages.json",
  "_locales/fi/messages.json",
  "_locales/fil/messages.json",
  "_locales/fr/messages.json",
  "_locales/gu/messages.json",
  "_locales/he/messages.json",
  "_locales/hi/messages.json",
  "_locales/hr/messages.json",
  "_locales/hu/messages.json",
  "_locales/id/messages.json",
  "_locales/it/messages.json",
  "_locales/ja/messages.json",
  "_locales/kn/messages.json",
  "_locales/ko/messages.json",
  "_locales/lt/messages.json",
  "_locales/lv/messages.json",
  "_locales/ml/messages.json",
  "_locales/mr/messages.json",
  "_locales/ms/messages.json",
  "_locales/nl/messages.json",
  "_locales/nb/messages.json",
  "_locales/pl/messages.json",
  "_locales/pt_BR/messages.json",
  "_locales/pt_PT/messages.json",
  "_locales/ro/messages.json",
  "_locales/ru/messages.json",
  "_locales/sk/messages.json",
  "_locales/sl/messages.json",
  "_locales/sr/messages.json",
  "_locales/sv/messages.json",
  "_locales/sw/messages.json",
  "_locales/ta/messages.json",
  "_locales/te/messages.json",
  "_locales/th/messages.json",
  "_locales/tr/messages.json",
  "_locales/uk/messages.json",
  "_locales/vi/messages.json",
  "_locales/zh_CN/messages.json",
  "_locales/zh_TW/messages.json",
]

grit("colorenhancer_strings") {
  source = "strings/accessibility_extensions_strings.grd"
  outputs = locale_files
  output_dir = "$root_out_dir/colorenhancer"
  depfile_dir = "$root_out_dir"
  resource_ids = ""
}

colorenhancer_files = [
  "colorenhancer/manifest.json",
  "colorenhancer/src/background.js",
  "colorenhancer/src/common.js",
  "colorenhancer/src/cvd.js",
  "colorenhancer/src/popup.html",
  "colorenhancer/src/popup.js",
  "colorenhancer/src/storage.js",
  "colorenhancer/res/cvd-128.png",
  "colorenhancer/res/cvd-16.png",
  "colorenhancer/res/cvd-19.png",
  "colorenhancer/res/cvd-38.png",
  "colorenhancer/res/cvd-48.png",
  "colorenhancer/res/setup.css",
]

copy("colorenhancer_copy") {
  sources = colorenhancer_files
  outputs = [
    "$root_out_dir/{{source_target_relative}}",
  ]
}
