fix: noconfirm auto-selects first AUR match
This commit is contained in:
@@ -0,0 +1,227 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# Copyright © 2022-2023 Intel Corporation
|
||||
|
||||
"""Type definitions for cargo manifest files."""
|
||||
|
||||
from __future__ import annotations
|
||||
import typing as T
|
||||
|
||||
from typing_extensions import Literal, TypedDict, Required
|
||||
|
||||
EDITION = Literal['2015', '2018', '2021']
|
||||
CRATE_TYPE = Literal['bin', 'lib', 'dylib', 'staticlib', 'cdylib', 'rlib', 'proc-macro']
|
||||
|
||||
Package = TypedDict(
|
||||
'Package',
|
||||
{
|
||||
'name': Required[str],
|
||||
'version': Required[str],
|
||||
'authors': T.List[str],
|
||||
'edition': EDITION,
|
||||
'rust-version': str,
|
||||
'description': str,
|
||||
'readme': str,
|
||||
'license': str,
|
||||
'license-file': str,
|
||||
'keywords': T.List[str],
|
||||
'categories': T.List[str],
|
||||
'workspace': str,
|
||||
'build': str,
|
||||
'links': str,
|
||||
'include': T.List[str],
|
||||
'exclude': T.List[str],
|
||||
'publish': bool,
|
||||
'metadata': T.Dict[str, T.Dict[str, str]],
|
||||
'default-run': str,
|
||||
'autobins': bool,
|
||||
'autoexamples': bool,
|
||||
'autotests': bool,
|
||||
'autobenches': bool,
|
||||
},
|
||||
total=False,
|
||||
)
|
||||
"""A description of the Package Dictionary."""
|
||||
|
||||
class FixedPackage(TypedDict, total=False):
|
||||
|
||||
"""A description of the Package Dictionary, fixed up."""
|
||||
|
||||
name: Required[str]
|
||||
version: Required[str]
|
||||
authors: T.List[str]
|
||||
edition: EDITION
|
||||
rust_version: str
|
||||
description: str
|
||||
readme: str
|
||||
license: str
|
||||
license_file: str
|
||||
keywords: T.List[str]
|
||||
categories: T.List[str]
|
||||
workspace: str
|
||||
build: str
|
||||
links: str
|
||||
include: T.List[str]
|
||||
exclude: T.List[str]
|
||||
publish: bool
|
||||
metadata: T.Dict[str, T.Dict[str, str]]
|
||||
default_run: str
|
||||
autobins: bool
|
||||
autoexamples: bool
|
||||
autotests: bool
|
||||
autobenches: bool
|
||||
|
||||
|
||||
class Badge(TypedDict):
|
||||
|
||||
"""An entry in the badge section."""
|
||||
|
||||
status: Literal['actively-developed', 'passively-developed', 'as-is', 'experimental', 'deprecated', 'none']
|
||||
|
||||
|
||||
Dependency = TypedDict(
|
||||
'Dependency',
|
||||
{
|
||||
'version': str,
|
||||
'registry': str,
|
||||
'git': str,
|
||||
'branch': str,
|
||||
'rev': str,
|
||||
'path': str,
|
||||
'optional': bool,
|
||||
'package': str,
|
||||
'default-features': bool,
|
||||
'features': T.List[str],
|
||||
},
|
||||
total=False,
|
||||
)
|
||||
"""An entry in the *dependencies sections."""
|
||||
|
||||
|
||||
class FixedDependency(TypedDict, total=False):
|
||||
|
||||
"""An entry in the *dependencies sections, fixed up."""
|
||||
|
||||
version: T.List[str]
|
||||
registry: str
|
||||
git: str
|
||||
branch: str
|
||||
rev: str
|
||||
path: str
|
||||
optional: bool
|
||||
package: str
|
||||
default_features: bool
|
||||
features: T.List[str]
|
||||
|
||||
|
||||
DependencyV = T.Union[Dependency, str]
|
||||
"""A Dependency entry, either a string or a Dependency Dict."""
|
||||
|
||||
|
||||
_BaseBuildTarget = TypedDict(
|
||||
'_BaseBuildTarget',
|
||||
{
|
||||
'path': str,
|
||||
'test': bool,
|
||||
'doctest': bool,
|
||||
'bench': bool,
|
||||
'doc': bool,
|
||||
'plugin': bool,
|
||||
'proc-macro': bool,
|
||||
'harness': bool,
|
||||
'edition': EDITION,
|
||||
'crate-type': T.List[CRATE_TYPE],
|
||||
'required-features': T.List[str],
|
||||
},
|
||||
total=False,
|
||||
)
|
||||
|
||||
|
||||
class BuildTarget(_BaseBuildTarget, total=False):
|
||||
|
||||
name: Required[str]
|
||||
|
||||
class LibTarget(_BaseBuildTarget, total=False):
|
||||
|
||||
name: str
|
||||
|
||||
|
||||
class _BaseFixedBuildTarget(TypedDict, total=False):
|
||||
path: str
|
||||
test: bool
|
||||
doctest: bool
|
||||
bench: bool
|
||||
doc: bool
|
||||
plugin: bool
|
||||
harness: bool
|
||||
edition: EDITION
|
||||
crate_type: T.List[CRATE_TYPE]
|
||||
required_features: T.List[str]
|
||||
|
||||
|
||||
class FixedBuildTarget(_BaseFixedBuildTarget, total=False):
|
||||
|
||||
name: str
|
||||
|
||||
class FixedLibTarget(_BaseFixedBuildTarget, total=False):
|
||||
|
||||
name: Required[str]
|
||||
proc_macro: bool
|
||||
|
||||
|
||||
class Target(TypedDict):
|
||||
|
||||
"""Target entry in the Manifest File."""
|
||||
|
||||
dependencies: T.Dict[str, DependencyV]
|
||||
|
||||
|
||||
class Workspace(TypedDict):
|
||||
|
||||
"""The representation of a workspace.
|
||||
|
||||
In a vritual manifest the :attribute:`members` is always present, but in a
|
||||
project manifest, an empty workspace may be provided, in which case the
|
||||
workspace is implicitly filled in by values from the path based dependencies.
|
||||
|
||||
the :attribute:`exclude` is always optional
|
||||
"""
|
||||
|
||||
members: T.List[str]
|
||||
exclude: T.List[str]
|
||||
|
||||
|
||||
Manifest = TypedDict(
|
||||
'Manifest',
|
||||
{
|
||||
'package': Package,
|
||||
'badges': T.Dict[str, Badge],
|
||||
'dependencies': T.Dict[str, DependencyV],
|
||||
'dev-dependencies': T.Dict[str, DependencyV],
|
||||
'build-dependencies': T.Dict[str, DependencyV],
|
||||
'lib': LibTarget,
|
||||
'bin': T.List[BuildTarget],
|
||||
'test': T.List[BuildTarget],
|
||||
'bench': T.List[BuildTarget],
|
||||
'example': T.List[BuildTarget],
|
||||
'features': T.Dict[str, T.List[str]],
|
||||
'target': T.Dict[str, Target],
|
||||
'workspace': Workspace,
|
||||
|
||||
# TODO: patch?
|
||||
# TODO: replace?
|
||||
},
|
||||
total=False,
|
||||
)
|
||||
"""The Cargo Manifest format."""
|
||||
|
||||
|
||||
class VirtualManifest(TypedDict):
|
||||
|
||||
"""The Representation of a virtual manifest.
|
||||
|
||||
Cargo allows a root manifest that contains only a workspace, this is called
|
||||
a virtual manifest. This doesn't really map 1:1 with any meson concept,
|
||||
except perhaps the proposed "meta project".
|
||||
"""
|
||||
|
||||
workspace: Workspace
|
||||
Reference in New Issue
Block a user