// 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 GenerateRules() 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_
