#!/usr/bin/env python

import argparse
from multiprocessing import cpu_count

from fjd import Recruiter


if __name__ == '__main__':
    '''
    Start some workers on this PC
    '''
    parser = argparse.ArgumentParser(description='Recruit workers.')
    parser.add_argument('--project', type=str, help="Custom identifier (useful"\
                                  " when fjd is used to run several projects).")
    parser.add_argument('--local-only', action='store_true', help="Ignore remote.conf")
    parser.add_argument('--curdir', type=str, help="Current directory workers should cd into before starting.")
    hf_parsers = parser.add_subparsers(title='action', dest='action')
    hp = hf_parsers.add_parser('hire', help='Hire some workers')
    hp.add_argument('num_workers', type=int, nargs='?', default=max(1, cpu_count() - 1),
                    help="How many workers are needed.")
    hf_parsers.add_parser('fire', help='Fire everyone (in this project)')

    args = parser.parse_args()

    if args.action == 'hire':
        recruiter = Recruiter(num_workers=args.num_workers, project=args.project,
                              local_only=args.local_only, curdir=args.curdir)
        recruiter.hire()
    elif args.action == 'fire':
        recruiter = Recruiter(project=args.project, local_only=args.local_only)
        recruiter.fire()

