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

#include <fstream>
#include <iostream>

#include "token_replacer.h"

// Read in the file, line-by-line, apply the transformation to each line, and
// then write the line to out.
void transform(const TokenReplacer& replacer,
               std::istream& in,
               std::ostream& out) {
  std::string line;
  while(std::getline(in, line)) {
    out << replacer.TokenizeLine(line) << std::endl;
  }
}

int main(int argc, char* argv[]) {
  if (argc < 6 || argc > 7) {
    std::cerr << "ERROR: " << argv[0]
              << " job-id user title copies options [file]" << std::endl;
    return 1;
  }

  std::string host = "localhost";
  std::string user = argv[2];
  std::string title = argv[3];
  std::string copies = argv[4];

  TokenReplacer replacer(host, user, title, copies);

  if (argc < 7) {
    transform(replacer, std::cin, std::cout);
  } else {
    std::ifstream fstream(argv[6]);
    transform(replacer, fstream, std::cout);
  }

  return 0;
}
