Newer
Older
sklauncher / src / main / java / com / skcraft / launcher / builder / ServerCopyExport.java
/*
 * SK's Minecraft Launcher
 * Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors
 * Please see LICENSE.txt for license information.
 */

package com.skcraft.launcher.builder;

import com.beust.jcommander.JCommander;
import com.google.common.io.Files;
import com.skcraft.launcher.util.SimpleLogFormatter;
import lombok.NonNull;
import lombok.extern.java.Log;

import java.io.File;
import java.io.IOException;

@Log
public class ServerCopyExport extends DirectoryWalker {

    private final File destDir;

    public ServerCopyExport(@NonNull File destDir) {
        this.destDir = destDir;
    }

    @Override
    protected DirectoryBehavior getBehavior(String name) {
        if (name.startsWith(".")) {
            return DirectoryBehavior.SKIP;
        } else if (name.equals("_SERVER")) {
            return DirectoryBehavior.IGNORE;
        } else if (name.equals("_CLIENT")) {
            return DirectoryBehavior.SKIP;
        } else {
            return DirectoryBehavior.CONTINUE;
        }
    }

    @Override
    protected void onFile(File file, String relPath) throws IOException {
        File dest = new File(destDir, relPath);

        log.info("Copying " + file.getAbsolutePath() + " to " + dest.getAbsolutePath());
        dest.getParentFile().mkdirs();
        Files.copy(file, dest);
    }

    public static void main(String[] args) throws IOException {
        SimpleLogFormatter.configureGlobalLogger();

        ServerExportOptions options = new ServerExportOptions();
        new JCommander(options, args);

        log.info("From: " + options.getSourceDir().getAbsolutePath());
        log.info("To: " + options.getDestDir().getAbsolutePath());
        ServerCopyExport task = new ServerCopyExport(options.getDestDir());
        task.walk(options.getSourceDir());
    }

}