Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
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