def _get_parser(self, env):
        """ Creates base argument parser.

            `env`
                Runtime ``Environment`` instance.

            * Raises ``HelpBanner`` exception when certain conditions apply.

            Returns ``FocusArgumentParser`` object.
            """

        version_str = 'focus version ' + __version__
        usage_str = 'focus [-h] [-v] [--no-color] <command> [<args>]'

        # setup parser
        parser = FocusArgParser(description=("Command-line productivity tool "
                                             "for improved task workflows."),
                                epilog=("See 'focus help <command>' for more "
                                        "information on a specific command."),
                                usage=usage_str)

        parser.add_argument('-v', '--version', action='version',
                            version=version_str)
        parser.add_argument('--no-color', action='store_true',
                            help='disables colors')

        # fetch command plugins
        commands = []
        active = env.task.active
        command_hooks = registration.get_registered(command_hooks=True,
                                                    task_active=active)

        # extract command name and docstrings as help text
        for plugin in command_hooks:
            help_text = (plugin.__doc__ or '').strip().rstrip('.').lower()
            commands.append((plugin.command, help_text))
        commands.sort(key=lambda x: x[0])  # command ordered

        # install subparsers
        subparsers = parser.add_subparsers(title='available commands')

        # install 'help' subparser
        help_parser = subparsers.add_parser('help', add_help=False)
        help_parser.set_defaults(func=self._handle_help)

        # install 'version' subparser
        version_parser = subparsers.add_parser('version', add_help=False)

        def _print_version(env, args):
            env.io.write(version_str)
            return True
        version_parser.set_defaults(func=_print_version)

        # install command subparsers based on registered command plugins.
        # this allows for focus commands (e.g. focus on [...])

        for command, help_ in commands:
            cmd_parser = subparsers.add_parser(command, help=help_,
                                               add_help=False)

            # use wrapper to bind command value and passthru to _handle_command
            # when executed later
            def _run(command):
                def _wrapper(env, args):
                    return self._handle_command(command, env, args)
                return _wrapper
            cmd_parser.set_defaults(func=_run(command))

        return parser
Creates base argument parser.

            `env`
                Runtime ``Environment`` instance.

            * Raises ``HelpBanner`` exception when certain conditions apply.

            Returns ``FocusArgumentParser`` object.