#include "TargetFactory.h"


TargetFactory TargetFactory::build() {
  return {};
}

TargetFactory& TargetFactory::id(std::string val) {
  data_.id = std::move(val); return *this;
}

TargetFactory& TargetFactory::name(std::string val) {
  data_.name = std::move(val);
  return *this;
}

TargetFactory& TargetFactory::type(std::string val) {
  data_.type = std::move(val);
  return *this;
}

TargetFactory& TargetFactory::generatorProvided(bool val) {
  data_.isGeneratorProvided = val;
  return *this;
}

TargetFactory& TargetFactory::imported(bool val) {
  data_.isImported = val;
  return *this;
}

TargetFactory& TargetFactory::dependencies(std::vector<std::string> val) {
  data_.dependencies = std::move(val);
  return *this;
}

TargetFactory& TargetFactory::sources(std::vector<std::string> val) {
  data_.sources = std::move(val);
  return *this;
}

TargetFactory& TargetFactory::includes(std::vector<std::string> val) {
  data_.includes = std::move(val);
  return *this;
}

TargetFactory& TargetFactory::defines(std::vector<std::string> val) {
  data_.defines = std::move(val);
  return *this;
}

TargetFactory& TargetFactory::compileFlags(std::vector<std::string> val) {
  data_.compileFlags = std::move(val);
  return *this;
}

TargetFactory& TargetFactory::linkLibraries(std::vector<std::string> val) {
  data_.linkLibraries = std::move(val);
  return *this;
}

TargetFactory& TargetFactory::artifacts(bool val) {
  data_.hasArtifacts = val;
  return *this;
}

Target TargetFactory::done() {
  return Target(std::move(data_));
}
