Automate per-package release for specific components (#2875)

This commit is contained in:
Liudmila Molkova
2024-10-09 09:20:02 -07:00
committed by GitHub
parent 6bb6d3896d
commit 6a54106f5b
30 changed files with 1058 additions and 107 deletions

View File

@ -260,7 +260,23 @@ def parse_args(args=None):
See description of exec for available options."""
),
)
versionparser.add_argument(
"--package",
"-p",
required=False,
help="Name of a specific package to get the version for",
)
findparser = subparsers.add_parser(
"find-package", help="Find package path.",
)
findparser.set_defaults(func=find_package_args)
findparser.add_argument(
"--package",
"-p",
required=True,
help="Name of the package to find",
)
return parser.parse_args(args)
@ -478,7 +494,7 @@ def install_args(args):
),
)
)
if args.with_dev_deps:
rootpath = find_projectroot()
runsubprocess(
@ -726,8 +742,37 @@ def format_args(args):
def version_args(args):
cfg = ConfigParser()
cfg.read(str(find_projectroot() / "eachdist.ini"))
print(cfg[args.mode]["version"])
if not args.package:
print(cfg[args.mode]["version"])
return
root = find_projectroot()
for package in find_targets_unordered(root):
if args.package == package.name:
version_file = find("version.py", package)
if version_file is None:
print(f"file missing: {package}/version.py")
return
with open(version_file, encoding="utf-8") as file:
for line in file:
if "__version__" in line:
print(line.split('"')[1])
return
print("package not found")
sys.exit(1)
def find_package_args(args):
root = find_projectroot()
for package in find_targets_unordered(root):
if args.package == package.name:
relative_path = package.relative_to(root)
print(relative_path)
return
print("package not found")
sys.exit(1)
def main():
args = parse_args()