We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Improve help access and prompts from the CLI
A new user might enter any of the following and expect to be guided to the Help information about using the CLI:
- `cookiecutter`
- `cookiecutter -h`
- `cookiecutter --h`
- `cookiecutter help`

It would be helpful to improve the CLI messages or handle some of the additional cases for a new user.

@audreyr Thanks for the handy tool :bouquet: 

<img width="773" alt="screen shot 2015-08-07 at 7 54 57 am" src="https://cloud.githubusercontent.com/assets/2680980/9138629/e64cb42a-3cd9-11e5-8c9c-cb9d726bd1eb.png">


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `cookiecutter/cli.py`
Content:
```
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 """
5 cookiecutter.cli
6 -----------------
7 
8 Main `cookiecutter` CLI.
9 """
10 
11 import os
12 import sys
13 import logging
14 
15 import click
16 
17 from cookiecutter import __version__
18 from cookiecutter.main import cookiecutter
19 from cookiecutter.exceptions import (
20     OutputDirExistsException, InvalidModeException
21 )
22 
23 logger = logging.getLogger(__name__)
24 
25 
26 def version_msg():
27     python_version = sys.version[:3]
28     location = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
29     message = u'Cookiecutter %(version)s from {} (Python {})'
30     return message.format(location, python_version)
31 
32 
33 @click.command()
34 @click.version_option(__version__, u'-V', u'--version', message=version_msg())
35 @click.argument(u'template')
36 @click.option(
37     u'--no-input', is_flag=True,
38     help=u'Do not prompt for parameters and only use cookiecutter.json '
39          u'file content',
40 )
41 @click.option(
42     u'-c', u'--checkout',
43     help=u'branch, tag or commit to checkout after git clone',
44 )
45 @click.option(
46     '-v', '--verbose',
47     is_flag=True, help='Print debug information', default=False
48 )
49 @click.option(
50     u'--replay', is_flag=True,
51     help=u'Do not prompt for parameters and only use information entered '
52          u'previously',
53 )
54 @click.option(
55     u'-f', u'--overwrite-if-exists', is_flag=True,
56     help=u'Overwrite the contents of the output directory if it already exists'
57 )
58 @click.option(
59     u'-o', u'--output-dir', default='.', type=click.Path(),
60     help=u'Where to output the generated project dir into'
61 )
62 def main(template, no_input, checkout, verbose, replay, overwrite_if_exists,
63          output_dir):
64     """Create a project from a Cookiecutter project template (TEMPLATE)."""
65     if verbose:
66         logging.basicConfig(
67             format=u'%(levelname)s %(filename)s: %(message)s',
68             level=logging.DEBUG
69         )
70     else:
71         # Log info and above to console
72         logging.basicConfig(
73             format=u'%(levelname)s: %(message)s',
74             level=logging.INFO
75         )
76 
77     try:
78         cookiecutter(
79             template, checkout, no_input,
80             replay=replay,
81             overwrite_if_exists=overwrite_if_exists,
82             output_dir=output_dir
83         )
84     except (OutputDirExistsException, InvalidModeException) as e:
85         click.echo(e)
86         sys.exit(1)
87 
88 if __name__ == "__main__":
89     main()
90
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/cookiecutter/cli.py b/cookiecutter/cli.py
--- a/cookiecutter/cli.py
+++ b/cookiecutter/cli.py
@@ -30,7 +30,7 @@
     return message.format(location, python_version)
 
 
-@click.command()
+@click.command(context_settings=dict(help_option_names=[u'-h', u'--help']))
 @click.version_option(__version__, u'-V', u'--version', message=version_msg())
 @click.argument(u'template')
 @click.option(
@@ -75,6 +75,13 @@
         )
 
     try:
+
+        # If you _need_ to support a local template in a directory
+        # called 'help', use a qualified path to the directory.
+        if template == u'help':
+            click.echo(click.get_current_context().get_help())
+            sys.exit(0)
+
         cookiecutter(
             template, checkout, no_input,
             replay=replay,

{"golden_diff": "diff --git a/cookiecutter/cli.py b/cookiecutter/cli.py\n--- a/cookiecutter/cli.py\n+++ b/cookiecutter/cli.py\n@@ -30,7 +30,7 @@\n     return message.format(location, python_version)\n \n \n-@click.command()\n+@click.command(context_settings=dict(help_option_names=[u'-h', u'--help']))\n @click.version_option(__version__, u'-V', u'--version', message=version_msg())\n @click.argument(u'template')\n @click.option(\n@@ -75,6 +75,13 @@\n         )\n \n     try:\n+\n+        # If you _need_ to support a local template in a directory\n+        # called 'help', use a qualified path to the directory.\n+        if template == u'help':\n+            click.echo(click.get_current_context().get_help())\n+            sys.exit(0)\n+\n         cookiecutter(\n             template, checkout, no_input,\n             replay=replay,\n", "issue": "Improve help access and prompts from the CLI\nA new user might enter any of the following and expect to be guided to the Help information about using the CLI:\n- `cookiecutter`\n- `cookiecutter -h`\n- `cookiecutter --h`\n- `cookiecutter help`\n\nIt would be helpful to improve the CLI messages or handle some of the additional cases for a new user.\n\n@audreyr Thanks for the handy tool :bouquet: \n\n<img width=\"773\" alt=\"screen shot 2015-08-07 at 7 54 57 am\" src=\"https://cloud.githubusercontent.com/assets/2680980/9138629/e64cb42a-3cd9-11e5-8c9c-cb9d726bd1eb.png\">\n\n", "before_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\n\"\"\"\ncookiecutter.cli\n-----------------\n\nMain `cookiecutter` CLI.\n\"\"\"\n\nimport os\nimport sys\nimport logging\n\nimport click\n\nfrom cookiecutter import __version__\nfrom cookiecutter.main import cookiecutter\nfrom cookiecutter.exceptions import (\n    OutputDirExistsException, InvalidModeException\n)\n\nlogger = logging.getLogger(__name__)\n\n\ndef version_msg():\n    python_version = sys.version[:3]\n    location = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n    message = u'Cookiecutter %(version)s from {} (Python {})'\n    return message.format(location, python_version)\n\n\n@click.command()\n@click.version_option(__version__, u'-V', u'--version', message=version_msg())\n@click.argument(u'template')\n@click.option(\n    u'--no-input', is_flag=True,\n    help=u'Do not prompt for parameters and only use cookiecutter.json '\n         u'file content',\n)\n@click.option(\n    u'-c', u'--checkout',\n    help=u'branch, tag or commit to checkout after git clone',\n)\n@click.option(\n    '-v', '--verbose',\n    is_flag=True, help='Print debug information', default=False\n)\n@click.option(\n    u'--replay', is_flag=True,\n    help=u'Do not prompt for parameters and only use information entered '\n         u'previously',\n)\n@click.option(\n    u'-f', u'--overwrite-if-exists', is_flag=True,\n    help=u'Overwrite the contents of the output directory if it already exists'\n)\n@click.option(\n    u'-o', u'--output-dir', default='.', type=click.Path(),\n    help=u'Where to output the generated project dir into'\n)\ndef main(template, no_input, checkout, verbose, replay, overwrite_if_exists,\n         output_dir):\n    \"\"\"Create a project from a Cookiecutter project template (TEMPLATE).\"\"\"\n    if verbose:\n        logging.basicConfig(\n            format=u'%(levelname)s %(filename)s: %(message)s',\n            level=logging.DEBUG\n        )\n    else:\n        # Log info and above to console\n        logging.basicConfig(\n            format=u'%(levelname)s: %(message)s',\n            level=logging.INFO\n        )\n\n    try:\n        cookiecutter(\n            template, checkout, no_input,\n            replay=replay,\n            overwrite_if_exists=overwrite_if_exists,\n            output_dir=output_dir\n        )\n    except (OutputDirExistsException, InvalidModeException) as e:\n        click.echo(e)\n        sys.exit(1)\n\nif __name__ == \"__main__\":\n    main()\n", "path": "cookiecutter/cli.py"}], "after_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\n\"\"\"\ncookiecutter.cli\n-----------------\n\nMain `cookiecutter` CLI.\n\"\"\"\n\nimport os\nimport sys\nimport logging\n\nimport click\n\nfrom cookiecutter import __version__\nfrom cookiecutter.main import cookiecutter\nfrom cookiecutter.exceptions import (\n    OutputDirExistsException, InvalidModeException\n)\n\nlogger = logging.getLogger(__name__)\n\n\ndef version_msg():\n    python_version = sys.version[:3]\n    location = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n    message = u'Cookiecutter %(version)s from {} (Python {})'\n    return message.format(location, python_version)\n\n\n@click.command(context_settings=dict(help_option_names=[u'-h', u'--help']))\n@click.version_option(__version__, u'-V', u'--version', message=version_msg())\n@click.argument(u'template')\n@click.option(\n    u'--no-input', is_flag=True,\n    help=u'Do not prompt for parameters and only use cookiecutter.json '\n         u'file content',\n)\n@click.option(\n    u'-c', u'--checkout',\n    help=u'branch, tag or commit to checkout after git clone',\n)\n@click.option(\n    '-v', '--verbose',\n    is_flag=True, help='Print debug information', default=False\n)\n@click.option(\n    u'--replay', is_flag=True,\n    help=u'Do not prompt for parameters and only use information entered '\n         u'previously',\n)\n@click.option(\n    u'-f', u'--overwrite-if-exists', is_flag=True,\n    help=u'Overwrite the contents of the output directory if it already exists'\n)\n@click.option(\n    u'-o', u'--output-dir', default='.', type=click.Path(),\n    help=u'Where to output the generated project dir into'\n)\ndef main(template, no_input, checkout, verbose, replay, overwrite_if_exists,\n         output_dir):\n    \"\"\"Create a project from a Cookiecutter project template (TEMPLATE).\"\"\"\n    if verbose:\n        logging.basicConfig(\n            format=u'%(levelname)s %(filename)s: %(message)s',\n            level=logging.DEBUG\n        )\n    else:\n        # Log info and above to console\n        logging.basicConfig(\n            format=u'%(levelname)s: %(message)s',\n            level=logging.INFO\n        )\n\n    try:\n\n        # If you _need_ to support a local template in a directory\n        # called 'help', use a qualified path to the directory.\n        if template == u'help':\n            click.echo(click.get_current_context().get_help())\n            sys.exit(0)\n\n        cookiecutter(\n            template, checkout, no_input,\n            replay=replay,\n            overwrite_if_exists=overwrite_if_exists,\n            output_dir=output_dir\n        )\n    except (OutputDirExistsException, InvalidModeException) as e:\n        click.echo(e)\n        sys.exit(1)\n\nif __name__ == \"__main__\":\n    main()\n", "path": "cookiecutter/cli.py"}]}