#!/usr/bin/env vpython3

# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Writes all command line arguments to a file, separated by newlines.

import argparse
import os
import sys

# Set up path to be able to import action_helpers
sys.path.append(
    os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir,
                 os.pardir, os.pardir, 'build'))
import action_helpers


def main():
  parser = argparse.ArgumentParser(description='Run Rust build script.')
  parser.add_argument('--output', required=True, help='output file')
  args, flags = parser.parse_known_args()
  # AtomicOutput will ensure we only write to the file on disk if what we
  # give to write() is different than what's currently on disk.
  with action_helpers.atomic_output(args.output) as output:
    output.write(b'\n'.join([f.encode('utf-8') for f in flags]))


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