package com.kartoflane.superluminal2.selfpatch;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.kartoflane.common.selfpatch.SPRunTask;
import com.kartoflane.superluminal2.components.enums.OS;
public class SPSLRunTask extends SPRunTask {
@Override
public void run() {
ProcessBuilder pb = new ProcessBuilder();
pb.redirectErrorStream( true );
pb.directory( null );
List<String> commands = new ArrayList<String>();
commands.add( "java" );
commands.add( "-jar" );
commands.add( "patcher.jar" );
List<File> files = new ArrayList<File>();
scanRec( new File( "." ), files );
for ( File f : files ) {
commands.add( f.getPath() );
commands.add( f.getPath().replace( ".tmp", "" ) );
}
OS os = OS.identifyOS();
if ( os.isWindows() )
commands.add( "-r(cmd.exe /C start superluminal2_admin.exe)" );
else if ( os.isLinux() )
commands.add( "-r(superluminal-cli.sh)" );
else if ( os.isMac() )
commands.add( "-r(Superluminal2.command)" );
pb.command( commands );
try {
pb.start();
}
catch ( IOException e ) {
e.printStackTrace();
}
}
private void scanRec( File dir, List<File> result ) {
if ( dir.getName().endsWith( ".tmp" ) ) {
result.add( dir );
return;
}
for ( File f : dir.listFiles() ) {
if ( f.isDirectory() )
scanRec( f, result );
else if ( f.getName().endsWith( ".tmp" ) )
result.add( f );
}
}
}