package tasks;

import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.TaskAction;

import java.io.File;
import java.util.ArrayList;

import util.SevenZ;
import util.Tar;

public class SolidLZMA extends DefaultTask {

    String archiveName;

    String destinationDir;

    String from;


    @TaskAction
    public void archive() {
        System.out.println("SolidLZMA process");

        String tarName = destinationDir + '/' + archiveName + ".tar";
        String sevenName = destinationDir + '/' + archiveName + ".7z";
        try {
            ArrayList<File> tempFileNames = new ArrayList();
            File fromDir = new File(from);
            if(fromDir.exists()){
                tempFileNames.add(fromDir);
                System.out.println("Compress as tar to make solid");
                Tar.compress(tarName, tempFileNames);
                File tarFile = new File(tarName);

                System.out.println("Compress as 7z");
                SevenZ.compress(sevenName, tarFile);


                System.out.println("Delete temp tar file");
                if(!tarFile.delete()) {
                    System.out.println("ERROR: Failed to delete temp file..");
                }

                File sevenZipFile = new File(sevenName);
                if(!sevenZipFile.exists()) {
                    System.out.println(" ERROR: Failed to create compressed file..");
                }
            } else {
                System.out.println(" ERROR: Failed to load source dir");
            }
        } catch (Exception ignored){

        }

    }

}
