"""生成version.info文件。"""
import argparse
import logging
import os
import sys
from datetime import datetime, timedelta, timezone
from typing import Iterable, Iterator
def gen_version_info_content(version: str, deps: Iterable[str]) -> Iterator[str]:
"""生成version.info文件内容。"""
yield f'Version={version}'
yield 'version_dir=cann'
deps_iter = iter(deps)
for dep_pkg in deps_iter:
dep_info = next(deps_iter)
yield f'required_package_{dep_pkg}_version="{dep_info}"'
if os.environ.get('tagInfo'):
tag_info = os.environ.get('tagInfo')
timestamp = '_'.join(tag_info.split('_')[-3:-1])
else:
timestamp = datetime.now(timezone(timedelta(hours=8))).strftime('%Y%m%d_%H%M%S%f')[:-3]
yield f'timestamp={timestamp}'
yield ''
def main():
"""主流程。"""
parser = argparse.ArgumentParser()
parser.add_argument('version', help='Version number.')
parser.add_argument('deps', nargs='*', help='Dependency informations.')
parser.add_argument('--output', required=True, help='Output file path.')
args = parser.parse_args()
logging.basicConfig(format=f'{os.path.basename(__file__)}: %(levelname)s: %(message)s')
if len(args.deps) % 2 != 0:
logging.error('The deps argument must contain an even number of elements!')
return False
content = '\n'.join(gen_version_info_content(args.version, args.deps))
with open(args.output, 'w', encoding='utf-8') as file:
file.write(content)
return True
if __name__ == '__main__':
if not main():
sys.exit(1)