def list_cmd(args): "List notes files based on query arguments" LOG.debug('starting list') reporoot = args.reporoot.rstrip('/') + '/' notesdir = utils.get_notes_dir(args) collapse = args.collapse_pre_releases ldr = loader.Loader( reporoot=reporoot, notesdir=notesdir, branch=args.branch, collapse_pre_releases=collapse, earliest_version=args.earliest_version, ) if args.version: versions = args.version else: versions = ldr.versions for version in versions: notefiles = ldr[version] print(version) for n, sha in notefiles: if n.startswith(reporoot): n = n[len(reporoot):] print('\t%s (%s)' % (n, sha)) return
def cache_cmd(args): "Generates a release notes cache" reporoot = args.reporoot.rstrip('/') + '/' notesdir = utils.get_notes_dir(args) if args.output == '-': stream = sys.stdout close_stream = False elif args.output: stream = open(args.output, 'w') close_stream = True else: stream = open(loader.get_cache_filename(reporoot, notesdir), 'w') close_stream = True try: cache = build_cache_db( reporoot=reporoot, notesdir=notesdir, branch=args.branch, collapse_pre_releases=args.collapse_pre_releases, versions_to_include=args.version, earliest_version=args.earliest_version, ) yaml.safe_dump( cache, stream, allow_unicode=True, explicit_start=True, encoding='utf-8', ) finally: if close_stream: stream.close() return
def report_cmd(args): "Generates a release notes report" reporoot = args.reporoot.rstrip('/') + '/' notesdir = utils.get_notes_dir(args) collapse = args.collapse_pre_releases ldr = loader.Loader( reporoot=reporoot, notesdir=notesdir, branch=args.branch, collapse_pre_releases=collapse, earliest_version=args.earliest_version, ) if args.version: versions = args.version else: versions = ldr.versions text = formatter.format_report( ldr, versions, title='Release Notes', ) if args.output: with open(args.output, 'w') as f: f.write(text) else: print(text) return
def create_cmd(args): "Create a new release note file from the template." notesdir = utils.get_notes_dir(args) # NOTE(dhellmann): There is a short race window where we might try # to pick a name that does not exist, then overwrite the file if # it is created before we try to write it. This isn't a problem # because this command is expected to be run by one developer in # their local git tree, and so there should not be any concurrency # concern. slug = args.slug.replace(" ", "-") filename = _pick_note_file_name(notesdir, slug) _make_note_file(filename) print("Created new notes file in %s" % filename) return
def create_cmd(args): "Create a new release note file from the template." notesdir = utils.get_notes_dir(args) # NOTE(dhellmann): There is a short race window where we might try # to pick a name that does not exist, then overwrite the file if # it is created before we try to write it. This isn't a problem # because this command is expected to be run by one developer in # their local git tree, and so there should not be any concurrency # concern. slug = args.slug.replace(' ', '-') filename = _pick_note_file_name(notesdir, slug) _make_note_file(filename) print('Created new notes file in %s' % filename) return
def list_cmd(args): "List notes files based on query arguments" reporoot = args.reporoot.rstrip("/") + "/" notesdir = utils.get_notes_dir(args) notes = scanner.get_notes_by_version(reporoot, notesdir, args.branch) if args.version: versions = args.version else: versions = notes.keys() for version in versions: notefiles = notes[version] print(version) for n, sha in notefiles: if n.startswith(reporoot): n = n[len(reporoot) :] print("\t%s (%s)" % (n, sha)) return
def report_cmd(args): "Generates a release notes report" reporoot = args.reporoot.rstrip('/') + '/' notesdir = utils.get_notes_dir(args) notes = scanner.get_notes_by_version(reporoot, notesdir, args.branch) if args.version: versions = args.version else: versions = notes.keys() text = formatter.format_report( reporoot, notes, versions, title='Release Notes', ) if args.output: with open(args.output, 'w') as f: f.write(text) else: print(text) return