# Copyright 2019 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_library.gni")
import("//build/go/go_test.gni")

go_library("tap") {
  sources = [
    "doc.go",
    "parser.go",
    "parser_test.go",
    "producer.go",
    "producer_test.go",
    "tap.go",
  ]
  deps = [ ":tokenizer" ]
}

go_library("tokenizer") {
  source_dir = "tokenizer"

  sources = [
    "iterator.go",
    "lexer.go",
    "stream.go",
  ]
}

go_test("tap_tests") {
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/testing/tap" ]
  deps = [
    ":tap",
    "//third_party/golibs:github.com/go-yaml/yaml",
  ]
}
