# Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

_dart_root = rebase_path("..")

template("create_timestamp_file") {
  assert(defined(invoker.path), "Must specify 'path'")
  assert(defined(invoker.output), "Must specify 'output'")
  path = invoker.path
  output = invoker.output
  action(target_name) {
    script = "$_dart_root/tools/list_dart_files_as_depfile.py"
    args = [
      rebase_path(output),
      path,
    ]
    if (defined(invoker.pattern)) {
      args += [ invoker.pattern ]
    }
    depfile = output
    outputs = [ output ]
  }
}
