#!/usr/bin/env python3
#
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

""" Compiles a cml manifest file.
"""

import argparse
import os
import subprocess
import sys


def main():
  parser = argparse.ArgumentParser()

  parser.add_argument('--cmc-bin', dest='cmc_bin', action='store', required=True)
  parser.add_argument('--output', dest='output', action='store', required=True)
  parser.add_argument('--manifest-file', dest='manifest_file', action='store', required=True)
  parser.add_argument(
      '--includepath',
      dest='includepath',
      action='append',
      required=True,
  )

  args = parser.parse_args()

  assert os.path.exists(args.cmc_bin)
  assert os.path.exists(args.manifest_file)

  subprocess.check_output([
      args.cmc_bin,
      'compile',
      '--output',
      args.output,
      args.manifest_file,
  ] + (args.includepath and ['--includepath'] + args.includepath))

  return 0


if __name__ == '__main__':
  sys.exit(main())
