package com.github.nukc.plugin.helper;
import com.github.nukc.plugin.model.Options;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.text.StringUtil;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by Nukc.
*/
public class CommandHelper {
private static final Logger log = Logger.getInstance(CommandHelper.class);
public static String exec(String command) {
try {
Process process = Runtime.getRuntime().exec(command);
InputStream errorStream = process.getErrorStream();
byte[] buffer = new byte[1024];
int readBytes;
StringBuilder stringBuilder = new StringBuilder();
while ((readBytes = errorStream.read(buffer)) > 0) {
stringBuilder.append(new String(buffer, 0, readBytes));
}
return stringBuilder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void execSigner(Options options, String apkPath) {
StringBuilder sb = new StringBuilder(options.signer);
if ("jarsigner".equals(options.signer)) {
sb.append(" -sigalg SHA1withRSA -digestalg SHA1 -keystore ");
sb.append(options.keyStorePath);
sb.append(" -storepass ").append(options.keyStorePassword);
sb.append(" -keypass ").append(options.keyPassword);
sb.append(" ").append(apkPath);
sb.append(" ").append(options.keyAlias);
} else {
sb.append(" sign --ks ");
sb.append(options.keyStorePath);
sb.append(" --ks-pass ").append("pass:").append(options.keyStorePassword);
sb.append(" --ks-key-alias ").append(options.keyAlias);
sb.append(" --key-pass ").append("pass:").append(options.keyPassword);
sb.append(" ").append(apkPath);
}
String cmd = sb.toString();
log.info("signer : " + cmd);
String result = CommandHelper.exec(cmd);
if (!StringUtil.isEmpty(result)) {
log.info(result);
}
}
public static void execZipalign(Options options, String tempApkPath, String apkPath) {
String cmd = options.zipalignPath + " -f 4 " + tempApkPath + " " + apkPath;
log.info("zipalign : " + cmd);
String result = CommandHelper.exec(cmd);
if (!StringUtil.isEmpty(result)) {
log.info(result);
}
}
}