# Copyright 2017 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.
"""Recipe for checking licenses in the repo hosting third-party Rust crates."""

DEPS = [
    'fuchsia/jiri',
    'recipe_engine/context',
    'recipe_engine/path',
    'recipe_engine/python',
]


def RunSteps(api):
  with api.context(infra_steps=True):
    api.jiri.init()
    api.jiri.import_manifest('flower',
                             'https://fuchsia.googlesource.com/integration')
    api.jiri.update()

  api.python(
      'verify licenses',
      api.path['start_dir'].join('scripts', 'rust', 'check_rust_licenses.py'),
      args=[
          '--verify',
          '--directory',
          api.path['start_dir'].join('third_party', 'rust_crates', 'vendor'),
      ])


def GenTests(api):
  yield api.test('basic')
