// Revisa archivos de código: build/lab/check_brackets archivo1 archivo2 ...
// Devuelve 0 si todos están bien, 1 si alguno tiene un error y 2 si no se pudo leer alguno.
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>

#include "brackets.h"
#include "code_text.h"

int main(int argc, char* argv[]) {
    int status = 0;
    for (int i = 1; i < argc; i++) {
        std::ifstream file(argv[i]);
        if (!file) {
            std::cerr << argv[i] << ": no se pudo abrir\n";
            status = 2;
            continue;
        }
        std::ostringstream contents;
        contents << file.rdbuf();
        BracketReport report = check_brackets(blank_comments_and_literals(contents.str()));
        if (report.line == 0) {
            std::cout << argv[i] << ": ok\n";
        } else {
            std::cout << argv[i] << ":" << report.line << ": " << report.message << "\n";
            if (status == 0) {
                status = 1;
            }
        }
    }
    return status;
}
