# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from recipe_engine.recipe_api import Property
from recipe_engine.config import Single

PYTHON_VERSION_COMPATIBILITY = "PY3"

DEPS = [
    "recipe_engine/cipd",
    "recipe_engine/context",
    "recipe_engine/file",
    "recipe_engine/path",
    "recipe_engine/platform",
    "recipe_engine/step",
]

PROPERTIES = {
    "windows_sdk.sdk_dir": Property(
        param_name="sdk_dir", kind=Single(str), default=None
    ),
    "windows_sdk.cipd_package": Property(
        param_name="cipd_package",
        kind=Single(str),
        default="chrome_internal/third_party/sdk/windows",
    ),
    "windows_sdk.cipd_version": Property(
        param_name="cipd_version", kind=Single(str), default="uploaded:2021-04-28"
    ),
}
