add gen_ds subcommand to generate a datasource