Commits

Jason McKesson committed dafd3b2

Distro creation

  • Participants
  • Parent commits dac0b15

Comments (0)

Files changed (2)

_FindFileInPath.lua

+
+require("ex")
+require "ufs"
+
+function FindFileInPath(filename)
+	local path = ex.getenv("PATH");
+
+	for pathname in path:gmatch("([^%;%\"]+)%;?") do
+		pathname = ufs.path(pathname);
+		
+		local testName = pathname / filename;
+		
+		if(ufs.exists(testName)) then
+			return tostring(testName);
+		end
+	end
+	
+	return nil;
+end
+
+
+--[[
+Will automatically generate all files from the current sources.
+Takes three parameters:
+- The destination directory, as a relative directory. This will create that directory and put the distro in that directory
+- The Mercurial revision number to archive to the destination directory.
+- The version number of the loader.
+]]--
+
+require "lfs"
+require "ufs"
+require "_FindFileInPath"
+
+local baseDir, hgChangelist, versionNum = ...
+
+if(#({...}) ~= 3) then
+	print("Not enough commandline parameters. You provided: " .. #({...}));
+	print("Paramters:")
+	print("\tDestination dir, relative to this path.")
+	print("\tMercurial revision to archive.")
+	print("\tVersion number of the SDK.")
+	return
+end
+
+local buildDirname = "glLoadGen_" .. versionNum:gsub("%.", "_")
+
+lfs.mkdir(baseDir);
+local pathDestDir = ufs.path(baseDir) / buildDirname;
+local destDir = tostring(pathDestDir);
+lfs.mkdir(destDir);
+
+local pathCurrent = ufs.current_path()
+local pathDest = pathCurrent / destDir;
+local pathBase = pathCurrent / baseDir;
+
+-----------------------------------------------------------
+-- Step 1: Copy the Mercurial repo number to the location.
+
+local clone = [[hg archive -r "%s" "%s"]];
+clone = clone:format(hgChangelist, destDir);
+
+print(clone);
+os.execute(clone);
+
+------------------------------------------------------------
+-- Step 2: Delete select files from the destination location.
+local toDelete =
+{
+	--files
+	"make_distro.lua", ".hgignore", ".hgtags",
+	"_FindFileInPath.lua", ".hg_archival.txt",
+	--directories
+}
+
+
+for i, filename in ipairs(toDelete) do
+	local pathFile = pathDest / filename;
+	print("deleting:", pathFile);
+	ufs.remove_all(pathFile);
+end
+
+------------------------------------------------------------
+-- Step 3: Create Zip archive of the distro.
+local szFilename = "7z.exe"
+local archiveName = buildDirname .. ".7z"
+local pathSZ = ufs.path(FindFileInPath(szFilename))
+
+if(pathSZ:empty()) then
+	print("Could not find 7zip.");
+	return;
+end
+
+ufs.current_path(pathBase);
+
+local depProc = ex.spawn(tostring(pathSZ),
+	{args={"a", "-r", archiveName, buildDirname}});
+depProc:wait(depProc);
+
+------------------------------------------------------------
+-- Step 4: Destroy the directory.
+ufs.remove_all(pathDest);