@cli_coursebook_roster.command(name='xlsx-to-csv', help='Convert a CourseBook roster XLSX to CSV.')
@click.option('--force/--no-force', default=False, help='Overwrite existing file.')
@click.argument('source', type=click.Path(exists=True))
@click.argument('target', type=click.Path())
def cli_coursebook_xlsx_to_csv(force, source, target):
    if (os.path.exists(target) and (not force)):
        raise click.ClickException(('File exists, maybe use --force?: ' + target))
    coursebook.roster_xlsx_to_csv(source, target)
@cli_coursebook_roster.command(name='xlsx-to-csv', help='Convert a CourseBook roster XLSX to CSV.')
@click.option('--force/--no-force', default=False, help='Overwrite existing file.')
@click.argument('source', type=click.Path(exists=True))
@click.argument('target', type=click.Path())
def cli_coursebook_xlsx_to_csv(force, source, target):
    if (os.path.exists(target) and (not force)):
        raise click.ClickException(('File exists, maybe use --force?: ' + target))
    coursebook.roster_xlsx_to_csv(source, target)