#include "TessesFramework/TessesFramework.hpp" using namespace Tesses::Framework::Streams; using namespace Tesses::Framework::Serialization::Json; using namespace Tesses::Framework::TextStreams; std::shared_ptr OpenWrite(std::string dest) { if (dest == "-") { return std::make_shared(stdout, false, "w"); } else { auto strm = std::make_shared(dest, "w"); if (!strm->CanWrite()) { return nullptr; } return strm; } } std::shared_ptr OpenRead(std::string src) { if (src == "-") { return std::make_shared(stdin, false, "r"); } else { auto strm = std::make_shared(src, "r"); if (!strm->CanRead()) { return nullptr; } return strm; } } int main(int argc, char **argv) { if (argc < 3) { std::cout << "USAGE: " << argv[0] << " SRC DEST" << std::endl; std::cout << "SRC: json file or - for stdin to make pretty" << std::endl; std::cout << "DEST: prettied file or - for stdout" << std::endl; return 0; } auto src = OpenRead(argv[1]); auto dest = OpenWrite(argv[2]); if (src == nullptr) { std::cerr << "ERROR: Input could not be read" << std::endl; return 1; } if (dest == nullptr) { std::cerr << "ERROR: Output could not be read" << std::endl; return 1; } StreamReader reader(src); StreamWriter writer(dest); auto str = reader.ReadToEnd(); writer.WriteLine(Json::Encode(Json::Decode(str))); return 0; }