#!/usr/bin/env python
# Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

import argparse
import os
import sys
import utils


def ParseArgs(args):
    args = args[1:]
    parser = argparse.ArgumentParser(
        description='A script to write the version string to a file')

    parser.add_argument(
        '--output', '-o', type=str, required=True, help='File to write')

    return parser.parse_args(args)


def Main(argv):
    args = ParseArgs(argv)
    revision = utils.GetGitRevision()
    if revision is not None:
        with open(args.output, 'w') as f:
            f.write('%s\n' % revision)
    return 0


if __name__ == '__main__':
    sys.exit(Main(sys.argv))
