#!/usr/bin/env python # vim: set fileencoding=utf-8 : ################################################################################### # # # Copyright (c) 2019 Idiap Research Institute, http://www.idiap.ch/ # # Contact: beat.support@idiap.ch # # # # Redistribution and use in source and binary forms, with or without # # modification, are permitted provided that the following conditions are met: # # # # 1. Redistributions of source code must retain the above copyright notice, this # # list of conditions and the following disclaimer. # # # # 2. Redistributions in binary form must reproduce the above copyright notice, # # this list of conditions and the following disclaimer in the documentation # # and/or other materials provided with the distribution. # # # # 3. Neither the name of the copyright holder nor the names of its contributors # # may be used to endorse or promote products derived from this software without # # specific prior written permission. # # # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # # ################################################################################### import click import logging from . import common from .decorators import raise_on_error from .click_helper import AliasedGroup logger = logging.getLogger(__name__) # ---------------------------------------------------------- @click.group(cls=AliasedGroup) @click.pass_context def protocoltemplates(ctx): """Protocol template commands""" pass @protocoltemplates.command() @click.option( "--remote", help="Only acts on the remote copy of the protocoltemplate.", is_flag=True, ) @click.pass_context @raise_on_error def list(ctx, remote): """Lists all the databases available on the platform. To list all existing databases on your local prefix: $ beat databases list """ configuration = ctx.meta["config"] if remote: with common.make_webapi(configuration) as webapi: return common.display_remote_list(webapi, "protocoltemplate") else: return common.display_local_list(configuration.path, "protocoltemplate") @protocoltemplates.command() @click.argument("names", nargs=-1) @click.pass_context @raise_on_error def path(ctx, names): """Displays local path of databases files Example: $ beat databases path xxx """ return common.display_local_path(ctx.meta["config"].path, "protocoltemplate", names) @protocoltemplates.command() @click.argument("name", nargs=1) @click.pass_context @raise_on_error def edit(ctx, name): """Edit local database file Example: $ beat databases edit xxx """ return common.edit_local_file( ctx.meta["config"].path, ctx.meta["config"].editor, "protocoltemplate", name ) @protocoltemplates.command() @click.argument("names", nargs=-1) @click.pass_context @raise_on_error def check(ctx, names): """Checks a local database for validity. $ beat databases check []... : Database name formatted as "/" """ return common.check(ctx.meta["config"].path, "protocoltemplate", names) @protocoltemplates.command() @click.argument("names", nargs=-1) @click.pass_context @raise_on_error def version(ctx, names): """Creates a new version of an existing protocolt emplate. $ beat databases version []... : Protocol template name formatted as "/" """ configuration = ctx.meta["config"] if len(names) < 1: raise click.ClickException("Requires at least one database name") return common.new_version(configuration.path, "protocoltemplate", names[0])