EngineersDecor/scripts/sanatize-dist-check.js

40 lines
2.1 KiB
JavaScript

#!/usr/bin/djs
if((!fs.chdir(fs.dirname(fs.realpath(sys.script))+"/..")) || (!fs.isdir(".git"))) throw new Error("Failed to switch to mod source directory.");
const uncommitted_changes = sys.shell("git status -s").trim();
const gittags = sys.shell('git log -1 --format="%D"')
.replace(/[\s]/g,"").split(",")
.filter(function(s){ return s.indexOf("tag:")==0;})
.map(function(s){ return s.replace(/^tag:/,"");});
const version_engineersdecor = fs.readfile("gradle.properties", function(line){
if(line.trim().indexOf("version_engineersdecor")!=0) return false;
return line.replace(/^.*?=/,"").trim()
}).trim();
const git_remote = sys.shell("git remote -v").trim();
const git_branch = sys.shell("git rev-parse --abbrev-ref HEAD").trim();
const git_diff = sys.shell("git diff").trim();
var fails = [];
if(version_engineersdecor=="") fails.push("Could not determine 'version_engineersdecor' from gradle properties.");
if(!gittags.length) fails.push("Version not tagged.");
if(!gittags.filter(function(s){return s.indexOf(version_engineersdecor.replace(/[-]/g,""))>=0}).length) fails.push("No tag version not found matching the gradle properties version.");
if(git_remote.replace(/[\s]/g,"").indexOf("git@github.com:stfwi/engineers-decor.git(push)") < 0) fails.push("Not the reference repository.");
if((git_branch != "develop") && (git_branch != "master")) {
fails.push("No valid branch for dist. (branch:'"+git_branch+"')");
} else if((git_branch == "develop") && (version_engineersdecor.replace(/[^\w\.-]/g,"")=="")) {
fails.push("Cannot make release dist on develop branch.");
} else if((git_branch == "master") && (version_engineersdecor.replace(/[^\w\.-]/g,"")!="")) {
fails.push("Cannot make beta dist on master branch.");
}
if(git_diff !== "") fails.push("Not everything committed to the GIT repository.");
if((!fs.isfile("signing.jks")) || (!fs.isfile("signing.properties"))) fails.push("Jar signing files missing.");
if(fails.length>0) {
for(var i in fails) fails[i] = " - " + fails[i];
alert("Dist check failed");
alert(fails.join("\n")+"\n");
exit(1);
}