"""The ``main`` function chooses and runs a subcommand."""
from __future__ import absolute_import, print_function

from argparse import ArgumentParser, RawDescriptionHelpFormatter

import project.commands.launch as launch
import project.commands.prepare as prepare
import project.commands.activate as activate


def _run_parser(args):
    """Internal function to run the parsing of params and run the commands. Allows mocking."""
    parser = ArgumentParser("Anaconda project tool", epilog=__doc__, formatter_class=RawDescriptionHelpFormatter)

    subparsers = parser.add_subparsers()

    preset = subparsers.add_parser('launch', description="Runs the project")
    preset.add_argument('project_dir', default='.')
    # preset.add_argument('ui_mode')
    preset.set_defaults(main=launch.main)

    preset = subparsers.add_parser('prepare', description="Configure the project to run.")
    preset.add_argument('project_dir', default='.')
    preset.set_defaults(main=prepare.main)

    preset = subparsers.add_parser('activate', description="Prepare project and outputs lines to be sourced.")
    preset.add_argument('project_dir', default='.')
    preset.set_defaults(main=activate.main)

    args = parser.parse_args(args)

    args.main(args.project_dir)


def main(argv):
    """Start the launch command."""
    _run_parser(argv)

"""The ``main`` function chooses and runs a subcommand."""
from __future__ import absolute_import, print_function

import sys
from argparse import ArgumentParser, RawDescriptionHelpFormatter

import project.commands.launch as launch
import project.commands.prepare as prepare
import project.commands.activate as activate


def _run_parser(args):
    """Internal function to run the parsing of params and run the commands. Allows mocking."""
    parser = ArgumentParser("Anaconda project tool", epilog=__doc__, formatter_class=RawDescriptionHelpFormatter)

    subparsers = parser.add_subparsers()

    preset = subparsers.add_parser('launch', description="Runs the project")
    preset.add_argument('project_dir', default='.')
    # preset.add_argument('ui_mode')
    preset.set_defaults(main=launch.main)

    preset = subparsers.add_parser('prepare', description="Configure the project to run.")
    preset.add_argument('project_dir', default='.')
    preset.set_defaults(main=prepare.main)

    preset = subparsers.add_parser('activate', description="Prepare project and outputs lines to be sourced.")
    preset.add_argument('project_dir', default='.')
    preset.set_defaults(main=activate.main)

    args = parser.parse_args(args)

    args.main(args.project_dir)


def main(argv):
    """Start the launch command."""
    _run_parser(argv)
    # the various sub-mains exit(0) if they succeed, if we get here
    # we must not have called one of them
    sys.exit(1)

Revert "remove unecessary sys.exit call"
Revert "remove unecessary sys.exit call"

This reverts commit 50b79fec1e96c1e5e5cc17f58f2c4ccfba16d6d6.

  """The ``main`` function chooses and runs a subcommand."""
  from __future__ import absolute_import, print_function
  
+ import sys
  from argparse import ArgumentParser, RawDescriptionHelpFormatter
  
  import project.commands.launch as launch
  import project.commands.prepare as prepare
  import project.commands.activate as activate
  
  
  def _run_parser(args):
      """Internal function to run the parsing of params and run the commands. Allows mocking."""
      parser = ArgumentParser("Anaconda project tool", epilog=__doc__, formatter_class=RawDescriptionHelpFormatter)
  
      subparsers = parser.add_subparsers()
  
      preset = subparsers.add_parser('launch', description="Runs the project")
      preset.add_argument('project_dir', default='.')
      # preset.add_argument('ui_mode')
      preset.set_defaults(main=launch.main)
  
      preset = subparsers.add_parser('prepare', description="Configure the project to run.")
      preset.add_argument('project_dir', default='.')
      preset.set_defaults(main=prepare.main)
  
      preset = subparsers.add_parser('activate', description="Prepare project and outputs lines to be sourced.")
      preset.add_argument('project_dir', default='.')
      preset.set_defaults(main=activate.main)
  
      args = parser.parse_args(args)
  
      args.main(args.project_dir)
  
  
  def main(argv):
      """Start the launch command."""
      _run_parser(argv)
+     # the various sub-mains exit(0) if they succeed, if we get here
+     # we must not have called one of them
+     sys.exit(1)
  
Revert "remove unecessary sys.exit call"
## Code Before:
"""The ``main`` function chooses and runs a subcommand."""
from __future__ import absolute_import, print_function

from argparse import ArgumentParser, RawDescriptionHelpFormatter

import project.commands.launch as launch
import project.commands.prepare as prepare
import project.commands.activate as activate


def _run_parser(args):
    """Internal function to run the parsing of params and run the commands. Allows mocking."""
    parser = ArgumentParser("Anaconda project tool", epilog=__doc__, formatter_class=RawDescriptionHelpFormatter)

    subparsers = parser.add_subparsers()

    preset = subparsers.add_parser('launch', description="Runs the project")
    preset.add_argument('project_dir', default='.')
    # preset.add_argument('ui_mode')
    preset.set_defaults(main=launch.main)

    preset = subparsers.add_parser('prepare', description="Configure the project to run.")
    preset.add_argument('project_dir', default='.')
    preset.set_defaults(main=prepare.main)

    preset = subparsers.add_parser('activate', description="Prepare project and outputs lines to be sourced.")
    preset.add_argument('project_dir', default='.')
    preset.set_defaults(main=activate.main)

    args = parser.parse_args(args)

    args.main(args.project_dir)


def main(argv):
    """Start the launch command."""
    _run_parser(argv)

## Instruction:
Revert "remove unecessary sys.exit call"
## Code After:
"""The ``main`` function chooses and runs a subcommand."""
from __future__ import absolute_import, print_function

import sys
from argparse import ArgumentParser, RawDescriptionHelpFormatter

import project.commands.launch as launch
import project.commands.prepare as prepare
import project.commands.activate as activate


def _run_parser(args):
    """Internal function to run the parsing of params and run the commands. Allows mocking."""
    parser = ArgumentParser("Anaconda project tool", epilog=__doc__, formatter_class=RawDescriptionHelpFormatter)

    subparsers = parser.add_subparsers()

    preset = subparsers.add_parser('launch', description="Runs the project")
    preset.add_argument('project_dir', default='.')
    # preset.add_argument('ui_mode')
    preset.set_defaults(main=launch.main)

    preset = subparsers.add_parser('prepare', description="Configure the project to run.")
    preset.add_argument('project_dir', default='.')
    preset.set_defaults(main=prepare.main)

    preset = subparsers.add_parser('activate', description="Prepare project and outputs lines to be sourced.")
    preset.add_argument('project_dir', default='.')
    preset.set_defaults(main=activate.main)

    args = parser.parse_args(args)

    args.main(args.project_dir)


def main(argv):
    """Start the launch command."""
    _run_parser(argv)
    # the various sub-mains exit(0) if they succeed, if we get here
    # we must not have called one of them
    sys.exit(1)
