app init

Initializes a Snowflake Native App project.

Syntax

snow app init
  <path>
  --name <name>
  --template-repo <template_repo>
  --template <template>
  --format <format>
  --verbose
  --debug
  --silent
Copy

Arguments

path

Directory to be initialized with the Snowflake Native App project. This directory must not already exist.

Options

--name TEXT

The name of the Snowflake Native App project to include in snowflake.yml. When not specified, it is generated from the name of the directory. Names are assumed to be unquoted identifiers whenever possible, but can be forced to be quoted by including the surrounding quote characters in the provided value.

--template-repo TEXT

Specifies the git URL to a template repository, which can be a template itself or contain many templates inside it, such as https://github.com/snowflakedb/native-apps-templates.git for all official Snowflake Native App with Snowflake CLI templates. If using a private Github repo, you might be prompted to enter your Github username and password. Please use your personal access token in the password prompt, and refer to https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.

--template TEXT

A specific template name within the --template-repo to use as the template for the Snowflake Native App project. It should be the full path from the root, --template-repo, to the template folder. For example, if the --template-repo is https://github.com/snowflakedb/native-apps-templates.git and the specific template is at native-apps-templates/templates/python/streamlit-template, then --template should be templates/python/streamlit-template. When using the official Snowflake template repository, the default value is basic.

--format [TABLE|JSON]

Specifies the output format.

--verbose, -v

Displays log entries for log levels info and higher.

--debug

Displays log entries for log levels debug and higher; debug logs contains additional information.

--silent

Turns off intermediate output to console.

--help

Displays the help text for this command.

Usage notes

The snow app init command provides a mechanism by which you can bootstrap a Native App project and get them up and running as quickly as possible. The result of this command is a newly created directory on your local filesystem that contains the contents of a git repository you cloned from, along with a snowflake.yml file to match.

By default, the git repository used is the official Snowflake native apps templates repository. Refer to the individual templates within this repository to understand their purposes.

How you name your native app project determines the native app object names that are created by the Snowflake CLI:

  • If the native app project name is already a valid unquoted SQL identifier, the CLI uses this directly as the default app name.

  • If the native app project name is not a valid unquoted SQL identifier, the CLI attempts to perform some basic character substitution according the the rules below:

    • Replace any number of hyphen (‘-‘), period (‘.’) or space (’ ‘) with underscore (‘_’)

    • Collapse contiguous substitutions into a single ‘_’ character

  • If the native app project name is not valid even after applying substitution rules from the point above, then the CLI defaults the native app name to the double quoted form of the (unmodified) name parameter.

  • You can include double quotes in the name (e.g. snow app init my-app --name ‘"MyApplication"’) to force the use of quoted identifiers for names that are valid unquoted identifiers.

Note

Snowflake does not own the templates provided by third parties and makes no guarantee that these templates represent working Native Applications. However, Snowflake CLI requires all templates to have a valid project definition file.

Examples

  • If you want to use the official Snowflake templates, you can enter any of the following commands.

    • To clone the basic template from the Snowflake git repository:

      snow app init my_app_project
      
      Copy
    • To clone the basic template from the Snowflake git repository into a new directory my-app-project in the current directory, and name the project my_app:

      snow app init my-app-project --name "my_app"
      
      Copy
    • To clone the streamlit-python template from the repository:

      snow app init my_app_project --template streamlit-python
      
      Copy

      For other templates, please visit the Snowflake git repository.

  • To clone from a git repository that has a valid native apps template, i.e. has a valid snowflake.yml at the root of its directory structure, enter a command similar to the following:

    snow app init my_app_project --template-repo <a_valid_git_url>
    
    Copy

    However, if a git repository contains many templates at its root, you can use:

    snow app init my_app_project --template-repo <a_valid_git_url> --template <a_template_within_the_git_repo>
    
    Copy