package net.argius.filetool;

import java.io.*;

/**
 * ファイルの結合処理。
 */
public final class Concatenation {

    /**
     * 処理の起動。
     * @param args パラメータ
     * @throws IOException 入出力エラーが発生した場合
     */
    private static void invoke(String[] args) throws IOException {
        for (int i = 0; i < args.length; i++) {
            InputStream is = new FileInputStream(args[i]);
            try {
                IOUtilities.transferAll(is, System.out);
            } finally {
                is.close();
            }
        }
    }

    /**
     * 使い方の表示。
     */
    private static void printUsage() {
        PrintStream err = System.err;
        err.println("Concat (argius-filetool)");
        err.println("usage : (command) [files...]");
        err.println("options: none");
    }

    /**
     * Concatenationの実行。
     * @param args パラメータ(see 'usage')
     */
    public static void main(String[] args) {
        if (args.length == 0) {
            printUsage();
            return;
        }
        final String commandNameInfo = "Concatenation: ";
        int status;
        try {
            invoke(args);
            status = 0;
        } catch (IOException ex) {
            System.out.println(commandNameInfo + ex.getMessage());
            status = 1;
        } catch (Exception ex) {
            String message = ex + Utilities.getFirstStackTrace(ex, Concatenation.class);
            System.out.println(commandNameInfo + message);
            status = 255;
        }
        if (status > 0) {
            System.exit(status);
        }
    }

}
