#!/usr/bin/env vpython3
# Copyright 2020 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Note: We use tags here instead of refs because refs will always hit the
# network to see if there are any updates.

# [VPYTHON:BEGIN]
# python_version: "3.8"
#
# # Third party dependencies.  These are only listed because pylint itself needs
# # them.  Feel free to add/remove anything here.
#
# wheel: <
#   name: "infra/python/wheels/dill-py3"
#   version: "version:0.3.4"
# >
# wheel: <
#   name: "infra/python/wheels/futures-py3"
#   version: "version:3.1.1"
# >
# wheel: <
#   name: "infra/python/wheels/isort-py3"
#   version: "version:5.10.1"
# >
# wheel: <
#   name: "infra/python/wheels/mccabe-py3"
#   version: "version:0.6.1"
# >
# wheel: <
#   name: "infra/python/wheels/platformdirs-py3"
#   version: "version:2.5.2"
# >
# wheel: <
#   name: "infra/python/wheels/six-py3"
#   version: "version:1.15.0"
# >
# wheel: <
#   name: "infra/python/wheels/toml-py3"
#   version: "version:0.10.1"
# >
# wheel: <
#   name: "infra/python/wheels/tomli-py3"
#   version: "version:2.0.1"
# >
# wheel: <
#   name: "infra/python/wheels/wrapt/${vpython_platform}"
#   version: "version:1.12.1"
# >
# wheel: <
#   name: "infra/python/wheels/lazy-object-proxy/${vpython_platform}"
#   version: "version:1.4.3"
# >
# wheel: <
#   name: "infra/python/wheels/typing-extensions-py3"
#   version: "version:4.0.1"
# >
#
# # Pylint extensions.
#
# wheel: <
#   name: "infra/python/wheels/pylint-quotes-py3"
#   version: "version:0.2.3"
# >
#
# # Pylint dependencies.
# # NB: Keep in sync with scripts/run_tests.vpython3.
#
# wheel: <
#   name: "infra/python/wheels/astroid-py3"
#   version: "version:2.11.3"
# >
# wheel: <
#   name: "infra/python/wheels/pylint-py3"
#   version: "version:2.13.8"
# >
# wheel: <
#   name: "infra/python/wheels/packaging-py2_py3"
#   version: "version:16.8"
# >
# wheel: <
#   name: "infra/python/wheels/pyparsing-py2_py3"
#   version: "version:2.2.0"
# >
#
# [VPYTHON:END]

"""Wrapper for stable version of pylint that we control."""

from pathlib import Path
import sys

from pylint import lint


THIS_FILE = Path(__file__).resolve()

# Ensure pylint can find chromite.cli.cros.lint, assuming this script is running
# from chromite/scripts/.
sys.path.append(str(THIS_FILE.parents[2]))

try:
    lint.Run(sys.argv[1:])
except Exception:
    print(f"{sys.argv[0]} failed; args: {sys.argv}", file=sys.stderr)
    raise
