id = "clasp" name = "clasp" homepage = "https://github.com/google/clasp" description = "Develop Apps Script projects locally using clasp (Command Line Apps Script Projects)." icon = "SimpleIcons:googleappsscript" executables = ["clasp"] [dotfiles] # clasp has no user-level configuration. docs/config-files.md lists four files # and three of them are per-project, next to the code rather than in the home # directory: the project file `./.clasp.json`, the ignore file `.claspignore` # "in the same directory as the Clasp project file", and the manifest # `/appsscript.json`. The one file it keeps in the home directory is # the credential below. paths = [] exclude = [] # docs/config-files.md, the "Google Auth file" row: "`~/.clasprc.json` (global) # or `.clasprc.json` in the same directory as the Clasp project file (local) — # OAuth 2.0 authentication and authorization to access Google APIs. # Authentication is global by default." The README says the same for `login`: # it "saves the client credentials to a `.clasprc.json` file in the user's home # directory", and of the `--creds` form: "This file should be private!" # # The file is that OAuth token set and nothing else — `logout` deletes it # outright — so it is a credential end to end rather than a config file with a # token in it. $clasp_config_auth can move it, and the local per-project copy # lives beside the code; neither is a path under the home directory. secret = ["~/.clasprc.json"] [commands] format = 1 label = "Apps Script project" description = "Push or pull the current Apps Script project, or log in. Deployments, versions and logs are not covered." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["push"] label = "Push local files" [[commands.subcommand.source]] id = "readme" kind = "manual" url = "https://raw.githubusercontent.com/google/clasp/master/README.md" revision = "master 3.x" evidence = """ - [`clasp push [--watch] [--force]`](#push) """ [[commands.subcommand.field]] id = "watch" label = "Watch and push on change" type = "boolean" option = ["--watch"] sources = ["readme"] [[commands.subcommand.field]] id = "force" label = "Overwrite manifest" description = "Forcibly overwrites the remote manifest." type = "boolean" option = ["--force"] effect = "overwrite" sources = ["readme"] [[commands.subcommand.task]] id = "push" label = "Push once" fields = ["watch", "force"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["watch", "force"] [[commands.subcommand]] path = ["login"] label = "Log in" [[commands.subcommand.source]] id = "readme" kind = "manual" url = "https://raw.githubusercontent.com/google/clasp/master/README.md" revision = "master 3.x" evidence = """ - [`clasp login [--no-localhost] [--creds ] [--use-project-scopes] [--include-clasp-scopes] [--extra-scopes ] [--redirect-port]`](#login) """ [[commands.subcommand.field]] id = "no_localhost" label = "No localhost redirect" type = "boolean" option = ["--no-localhost"] sources = ["readme"] [[commands.subcommand.field]] id = "creds" label = "Credentials file" type = "path" option = ["--creds"] path = { kind = "file", role = "input" } sources = ["readme"] [[commands.subcommand.task]] id = "login" label = "Log in" fields = ["no_localhost", "creds"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["no_localhost", "creds"]