package codeine.servlets.command_backup;
import java.io.File;
import java.nio.file.attribute.PosixFilePermission;
import codeine.utils.FilesUtils;
import codeine.utils.StringUtils;
import codeine.utils.TextFileUtils;
public class ShellScriptBackup {
private String content;
private String fileName;
// private String key;
private boolean windows;
public ShellScriptBackup(String key, String content) {
this(key, content, false, "/tmp");
}
public ShellScriptBackup(String key, String content, boolean windows, String tmp_dir) {
// this.key = key;
this.content = content;
this.windows = windows;
String tmpDir = StringUtils.isEmpty(tmp_dir) ? System.getProperty("java.io.tmpdir") : tmp_dir;
this.fileName = tmpDir + File.separator + "codeine_" + key.hashCode() + (windows ? ".bat" : ".sh");
}
public String create() {
content = content.replace("\n", System.lineSeparator());
TextFileUtils.setContents(fileName, content);
if (!windows) {
FilesUtils.setPermissions(fileName,
PosixFilePermission.OWNER_EXECUTE, PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE,
PosixFilePermission.GROUP_EXECUTE, PosixFilePermission.GROUP_READ, PosixFilePermission.GROUP_WRITE,
PosixFilePermission.OTHERS_EXECUTE, PosixFilePermission.OTHERS_READ
);
}
return fileName;
}
public void delete() {
FilesUtils.delete(fileName);
}
}