prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <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">
  
  
  </issue>
  <code>
  [start of cookiecutter/cli.py]
  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 of cookiecutter/cli.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: 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,
  
verification_info: {"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"}]}