Skip to content

Commit

Permalink
add 'info' command to cli
Browse files Browse the repository at this point in the history
  • Loading branch information
con-f-use committed Oct 14, 2023
1 parent 06e0aaf commit d252970
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/setuptools_scm/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
from ._cli import main

if __name__ == "__main__":
main()
raise SystemExit(main())
34 changes: 29 additions & 5 deletions src/setuptools_scm/_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from setuptools_scm.discover import walk_potential_roots


def main(args: list[str] | None = None) -> None:
def main(args: list[str] | None = None) -> int:
opts = _get_cli_opts(args)
inferred_root: str = opts.root or "."

Expand All @@ -31,16 +31,34 @@ def main(args: list[str] | None = None) -> None:
)
config = Configuration(inferred_root)

if opts.command == "ls":
for fname in find_files(config.root):
print(fname)
return 0

if opts.command == "info":
code = 0
if not opts.query:
print("\n".join(config.__dataclass_fields__.keys()))
else:
for q in opts.query:
try:
if q.startswith("_"):
raise AttributeError()
print(f"{q} = {getattr(config, q)}")
except AttributeError:
print(f"'{q}' unknown query!")
code = 1
return code

version = _get_version(config, force_write_version_files=False)
if version is None:
raise SystemExit("ERROR: no version found for", opts)
if opts.strip_dev:
version = version.partition(".dev")[0]
print(version)

if opts.command == "ls":
for fname in find_files(config.root):
print(fname)
print(version)
return 0


def _get_cli_opts(args: list[str] | None) -> argparse.Namespace:
Expand Down Expand Up @@ -71,6 +89,12 @@ def _get_cli_opts(args: list[str] | None) -> argparse.Namespace:
# We avoid `metavar` to prevent printing repetitive information
desc = "List files managed by the SCM"
sub.add_parser("ls", help=desc[0].lower() + desc[1:], description=desc)
desc = "Display setuptools_scm settings according to query\ne.g. dist_name"
nfo_parser = sub.add_parser(
"info", help=desc[0].lower() + desc[1:], description=desc
)
desc = "query for the desired information, omit to list of valid queries"
nfo_parser.add_argument("query", nargs="*", help=desc)
return parser.parse_args(args)


Expand Down

0 comments on commit d252970

Please sign in to comment.