// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TOOLS_GN_NINJA_COPY_TARGET_WRITER_H_
#define TOOLS_GN_NINJA_COPY_TARGET_WRITER_H_

#include "gn/ninja_target_writer.h"

// Writes a .ninja file for a copy target type.
class NinjaCopyTargetWriter : public NinjaTargetWriter {
 public:
  NinjaCopyTargetWriter(const Target* target, std::ostream& out);
  ~NinjaCopyTargetWriter() override;

  void Run() override;

 private:
  // Writes the rules top copy the file(s), putting the computed output file
  // name(s) into the given vector.
  void WriteCopyRules(std::vector<OutputFile>* output_files);

  NinjaCopyTargetWriter(const NinjaCopyTargetWriter&) = delete;
  NinjaCopyTargetWriter& operator=(const NinjaCopyTargetWriter&) = delete;
};

#endif  // TOOLS_GN_NINJA_COPY_TARGET_WRITER_H_
