# Copyright 2021 The Fuchsia 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/go/go_binary.gni")
import("//build/go/go_library.gni")
import("//build/testing/host_test_data.gni")

go_library("main") {
  sources = [ "main.go" ]
  deps = [
    "core",
    "rules",
  ]
}

go_binary("mdlint") {
  library = ":main"
}

install_host_tools("host") {
  deps = [ ":mdlint" ]
  outputs = [ "mdlint" ]
}

group("tests") {
  testonly = true
  deps = [
    "core:mdlint_core_tests($host_toolchain)",
    "rules:mdlint_rules_tests($host_toolchain)",
  ]
}
