{
  "name": "agrippa",
  "args": [
    {
      "name": "component's name"
    }
  ],
  "subcommands": [
    {
      "name": "init",
      "description": "Generates a basic .agripparc.json file, with some default values for options that agrippa accepts"
    },
    {
      "name": "generate",
      "aliases": [
        "gen"
      ],
      "description": "This is the core of the CLI - this command generates a new React component, based on the name and options passed to it",
      "options": [
        {
          "names": [
            "--props"
          ],
          "description": "Determines which prop declaration/validation solution to generate. Defaults to `ts` if `typescript` flag is `true`, `none` otherwise",
          "args": [
            {
              "suggestions": [
                "ts",
                "jsdoc",
                "prop-types",
                "none"
              ]
            }
          ]
        },
        {
          "names": [
            "--children"
          ],
          "description": "Whether the component is meant to have children or not. Defaults to `false`",
          "args": [
            {}
          ]
        },
        {
          "names": [
            "--typescript",
            "--ts"
          ],
          "description": "Option to generate Typescript components, defaults to `true` if the CLI manages to find a `tsconfig.json` file, false otherwise",
          "args": [
            {}
          ]
        },
        {
          "names": [
            "--import-react"
          ],
          "description": "Option to import React at the top of the component. Defaults to `true` if the CLI manages to find a `tsconfig.json` file and it has a `jsx` field under `compilerOptions` with `react-jsx` or `react-jsxdev` as the value, `false` otherwise",
          "args": [
            {}
          ]
        },
        {
          "names": [
            "--export-type"
          ],
          "description": "Whether to export the component as a named export or a default export. Defaults to `named`",
          "args": [
            {
              "suggestions": [
                "named",
                "default"
              ]
            }
          ]
        },
        {
          "names": [
            "--declaration"
          ],
          "description": "Whether to declare the component as a `const` with an arrow function, or as a `function` declaration. Defaults to `const`",
          "args": [
            {
              "suggestions": [
                "const",
                "function"
              ]
            }
          ]
        },
        {
          "names": [
            "--memo"
          ],
          "description": "Generates a component as a memo component. Defaults to `false`",
          "args": [
            {}
          ]
        },
        {
          "names": [
            "--react-native"
          ],
          "description": "Generates a React Native component. Defaults to `true` if `react-native` is a dependency in the project's `package.json`, `false` otherwise",
          "args": [
            {}
          ]
        },
        {
          "names": [
            "--styling"
          ],
          "description": "Which styling solution to generate. Defaults to `none`",
          "args": [
            {
              "suggestions": [
                "none",
                "css",
                "scss",
                "jss",
                "mui",
                "react-native"
              ]
            }
          ]
        },
        {
          "names": [
            "--styling-module"
          ],
          "description": "Whether to generate a scoped `module` stylesheet. This option is only relevant for `css` or `scss` styling, and will be ignored for other values. Defaults to `true`",
          "args": [
            {}
          ]
        },
        {
          "names": [
            "--base-dir"
          ],
          "description": "Path to a base directory which components should be generated inside of (directly or nested). Defaults to the current working directory",
          "args": [
            {
              "name": "path",
              "isOptional": true,
              "isVariadic": true,
              "template": "folders"
            }
          ]
        },
        {
          "names": [
            "--dest",
            "--destination"
          ],
          "description": "Allows the user to generate the component at a path relative to `baseDir`. It's mostly used to augment or modify the generation path in the command-line when creating the component itself. `dest` is resolved relative to `baseDir`",
          "isRequired": true,
          "args": [
            {
              "name": "path",
              "isOptional": true,
              "isVariadic": true,
              "template": "folders"
            }
          ]
        },
        {
          "names": [
            "--allow-outside-base"
          ],
          "description": "Overrides default Agrippa behaviour to allow components to be specified outside `baseDir`. Defaults to current working directory",
          "args": [
            {
              "name": "path",
              "isOptional": true,
              "isVariadic": true,
              "template": "folders"
            }
          ]
        },
        {
          "names": [
            "--flat"
          ],
          "description": "By default, Agrippa generates a dedicated directory for the generated component; this directory has the same name as the component, and will contain the component file (as `index.tsx` or `index.jsx`), and the style file (if one is generated). Defaults to `false`",
          "args": [
            {}
          ]
        },
        {
          "names": [
            "--separate-index"
          ],
          "description": "In the `separateIndex` generation scheme, Agrippa creates one file for the component's code, and one `index` file, whose purpose is to allow importing exports from the component's directory elegantly (the import path can then be `<path>/<to>/<directory>/Component` instead of `<path>/<to>/<directory>/Component/Component`). Defaults to `true`",
          "args": [
            {}
          ]
        },
        {
          "names": [
            "--post-command",
            "--postCommand"
          ],
          "description": "Allows a custom command to be run after having generated a component. This allows for some cool functionality, such as opening an IDE at the newly generated files automatically or linting them. Defaults to `none`",
          "args": [
            {
              "isCommand": true
            }
          ]
        },
        {
          "names": [
            "--overwrite"
          ],
          "description": "By default, Agrippa prevents the generation of a component over an existing components, to prevent a loss of code. `--overwrite` tells Agrippa to replace existing files, if any are found. Defaults to `false`",
          "args": [
            {}
          ]
        },
        {
          "names": [
            "--debug"
          ],
          "description": "The `debug` flag makes Agrippa print out additional debug information. It's quite useful when debugging. Defaults to `false`",
          "args": [
            {}
          ]
        }
      ],
      "args": [
        {
          "name": "component"
        }
      ]
    }
  ]
}
