
import pybythec
import argparse


log = pybythec.utils.log


def main():

  parser = argparse.ArgumentParser(formatter_class = argparse.RawTextHelpFormatter)
  parser.add_argument('-v', '--version', action = 'store_true', help = 'the version')
  parser.add_argument('-c', '--compiler', help = 'any variation of gcc, clang, or msvc ie g++-4.4, msvc-110')  # metavar = 'compiler'
  parser.add_argument('-os', '--osType', help = 'operating system: currently linux, macOs, or windows')
  parser.add_argument('-b', '--buildType', help = 'debug release etc')
  parser.add_argument('-bf', '--binaryFormat', help = '32bit, 64bit etc')
  parser.add_argument('-pc', '--projectConfig', help = 'path to a pybythec project config file (json)')
  parser.add_argument('-gc', '--globalConfig', help = 'path to a pybythec global config file (json)')
  parser.add_argument('-bd', '--builds', help = 'list of builds: each one generates a seperate build (comma delineated, no spaces ie foo,bar)')
  parser.add_argument('-cl', '--clean', action = 'store_true', help = 'clean the build')
  parser.add_argument('-cla', '--cleanAll', action = 'store_true', help = 'clean the build and the builds of all library dependencies')
  args = parser.parse_args()

  if args.version:
    print('version: ' + pybythec.__version__)
    return

  be = pybythec.getBuildElements(
      osType = args.osType,
      compiler = args.compiler,
      buildType = args.buildType,
      binaryFormat = args.binaryFormat,
      projConfigPath = args.projectConfig,
      globalConfigPath = args.globalConfig)
  if not be:
    return

  builds = args.builds.split(',') if args.builds else None

  if args.cleanAll:
    return pybythec.cleanAll(be, builds)
  elif args.clean:
    return pybythec.clean(be, builds)
  else:
    return pybythec.build(be, builds)


if  __name__ == '__main__':
  main()
