@click.group(cls=AliasGroup,invoke_without_command=True)@click.pass_context@pass_config@click.option("--username",help="Username used to authenticate with the remote.")@click.option("--password",help="Password used to authenticate with the remote.")@click.argument("remote",required=False)defalias(config:"Config",ctx:"Context",remote,username,password):"""Query remote and local aliases."""ifnotctx.invoked_subcommandandnotany(is_empty(i)foriinctx.params.values()):click.echo(ctx.get_help())elif"--help"notinsys.argvandctx.invoked_subcommand:ctx.obj=RemoteAPI(remote,username,password,config)@alias.command("make-unique",cls=AliasCommand)@pass_api@pass_config@click.argument("alias")defalias_make_unique(config:"Config",api:RemoteAPI,alias:str):"Make the given alias unique, checking locally stored simulations and the remote."trans=str.maketrans("#/()=,*%","________")alias=alias.translate(trans)simulations=api.list_simulations()db=get_local_db(config)simulations+=db.list_simulations()aliases=[sim.aliasforsiminsimulations]n=1base=aliaswhilealiasinaliases:alias=f"{base}-{n}"n+=1click.echo(alias)@alias.command("search",cls=AliasCommand)@pass_api@pass_config@click.argument("alias")defalias_search(config:"Config",api:RemoteAPI,alias:str):"""Search the REMOTE for all aliases that contain the given VALUE."""simulations=api.list_simulations()db=get_local_db(config)simulations+=db.list_simulations()aliases=[sim.aliasforsiminsimulationsifaliasinsim.alias]foraliasinaliases:click.echo(alias)@alias.command("list",cls=AliasCommand)@pass_api@pass_config@click.option("--local",help="Only list the local aliases.",is_flag=True)defalias_list(config:"Config",api:RemoteAPI,local:bool):"""List aliases from the local database and the REMOTE (if specified)."""ifnotlocal:remote_simulations=[]ifapi.has_url():remote_simulations=api.list_simulations()else:click.echo("The Remote Server has not been specified in the configuration file. ""Please set remote-url")click.echo("Remote:")forsiminremote_simulations:click.echo(f" {sim.alias}")db=get_local_db(config)local_simulations=db.list_simulations()click.echo("Local:")forsiminlocal_simulations:click.echo(f" {sim.alias}")