#!python
import argparse
import nbclient
import nbformat
import nbparameterise

parser = argparse.ArgumentParser(
    description='Notebook Runner'
)
parser.add_argument('Notebook')
args, unknown = parser.parse_known_args()


with open(args.Notebook, 'rb') as f:
    nb = nbformat.read(f, as_version=4)

# Extract parameters from the notebook
click_params = []
old_params = nbparameterise.extract_parameters(nb)
parser = argparse.ArgumentParser()

for item in old_params:
    parser.add_argument(f'--{item.name}')

args, unknown = parser.parse_known_args()

new_params = nbparameterise.parameter_values(old_params,**vars(args))
new_nb = nbparameterise.replace_definitions(nb, new_params)

for item in  nbclient.execute(new_nb)['cells']:
    for o in item['outputs']:
        print(o['text'].strip())
