code: def do_cli(ctx, template, semantic_version):
      
      try:
          template_data = get_template_data(template)
      except ValueError as ex:
          click.secho("Publish Failed", fg='red')
          raise UserException(str(ex))
  
      # Override SemanticVersion in template metadata when provided in command input
      if semantic_version and SERVERLESS_REPO_APPLICATION in template_data.get(METADATA, {}):
          template_data.get(METADATA).get(SERVERLESS_REPO_APPLICATION)[SEMANTIC_VERSION] = semantic_version
  
      try:
          publish_output = publish_application(template_data)
          click.secho("Publish Succeeded", fg="green")
          click.secho(_gen_success_message(publish_output))
      except InvalidS3UriError:
          click.secho("Publish Failed", fg='red')
          raise UserException(
              "Your SAM template contains invalid S3 URIs. Please make sure that you have uploaded application "
              "artifacts to S3 by packaging the template. See more details in {}".format(SAM_PACKAGE_DOC))
      except ServerlessRepoError as ex:
          click.secho("Publish Failed", fg='red')
          LOG.debug("Failed to publish application to serverlessrepo", exc_info=True)
          error_msg = '{}\nPlease follow the instructions in {}'.format(str(ex), SAM_PUBLISH_DOC)
          raise UserException(error_msg)
  
      application_id = publish_output.get('application_id')
      _print_console_link(ctx.region, application_id)
docs: Publish the application based on command line inputs.