Create a new cabal package.

Usage: cabal init [PROJECT ROOT] [FLAGS]

Create a .cabal, CHANGELOG.md, minimal initial Haskell code and optionally a
LICENSE file.

Calling init with no arguments runs interactive mode by default, which will
try to guess as much as possible and prompt you for the rest.
Non-interactive mode can be invoked by the -n/--non-interactive flag, which
will let you specify the options via flags and will either use the defaults
for the rest, or attempt to infer sensible defaults from your local
development environment (e.g. $PATH).
For a basic simple project with minimal prompting and sensible defaults, issue
the --simple flag.

Flags for init:
 -h, --help                   # Show this help text
 -i, --interactive            # Enable Interactive mode. Creates a prompt tree
                                for project creation. If -n/--non-interactive
                                is issued, a simple project with inferred
                                defaults is created. If --simple is issued,
                                then sensible defaults will be chosen as well.
 -n, --non-interactive        # Disable Interactive mode. Creates a prompt
                                tree for project creation. If
                                -n/--non-interactive is issued, a simple
                                project with inferred defaults is created. If
                                --simple is issued, then sensible defaults
                                will be chosen as well.
 -q, --quiet                  # Do not generate log messages to stdout.
 --no-comments                # Do not generate explanatory comments in the
                                .cabal file.
 -m, --minimal                # Generate a minimal .cabal file, that is, do
                                not include extra empty fields. Also implies
                                --no-comments.
 --overwrite                  # Overwrite any existing .cabal, LICENSE, or
                                Setup.hs files without warning.
 --package-dir=DIRECTORY      # Root directory of the package (default =
                                current directory).
 -p PACKAGE or -pPACKAGE, --package-name=PACKAGE
                              # Name of the Cabal package to create.
 --version=VERSION            # Initial version of the package.
 --cabal-version=CABALSPECVERSION
                              # Version of the Cabal specification.
 -l LICENSE or -lLICENSE, --license=LICENSE
                              # Project license.
 -a NAME or -aNAME, --author=NAME
                              # Name of the project's author.
 -e EMAIL or -eEMAIL, --email=EMAIL
                              # Email address of the maintainer.
 -u URL or -uURL, --homepage=URL
                              # Project homepage and/or repository.
 -s TEXT or -sTEXT, --synopsis=TEXT
                              # Short project synopsis.
 -c CATEGORY or -cCATEGORY, --category=CATEGORY
                              # Project category.
 -x FILE or -xFILE, --extra-source-file=FILE
                              # Extra source file to be distributed with
                                tarball.
 --extra-doc-file=FILE        # Extra doc file to be distributed with tarball.
 --lib                        # Build a library.
 --exe                        # Build an executable.
 --libandexe                  # Build a library and an executable.
 --tests                      # Generate a test suite, standalone or for a
                                library.
 --test-dir=DIR               # Directory containing tests.
 --simple                     # Create a simple project with sensible
                                defaults.
 --main-is=FILE               # Specify the main module.
 --language=LANGUAGE          # Specify the default language.
 -o MODULE or -oMODULE, --expose-module=MODULE
                              # Export a module from the package.
 --extension=EXTENSION        # Use a LANGUAGE extension (in the
                                other-extensions field).
 -d DEPENDENCIES or -dDEPENDENCIES, --dependency=DEPENDENCIES
                              # Package dependencies. Permits comma separated
                                list of dependencies.
 --application-dir=DIR        # Directory containing package application
                                executable.
 --source-dir=DIR             # Directory containing package library source.
 --build-tool=TOOL            # Required external build tool.
 -w PATH or -wPATH, --with-compiler=PATH
                              # Give the path to a particular compiler. For
                                'init', this flag is used to set the bounds
                                inferred for the 'base' package.
 -v[n], --verbose[=n]         # Control verbosity (n is 0--3, default
                                verbosity level is 1)
