6 changed files with 55 additions and 66 deletions
-
2.gitignore
-
3src/common/common.vcxproj
-
3src/common/common.vcxproj.filters
-
3src/common/scm_rev.h
-
109src/common/scm_rev_gen.js
-
1src/common/scm_rev_gen.vcxproj
@ -1,80 +1,67 @@ |
|||||
var wshShell = new ActiveXObject("WScript.Shell") |
|
||||
var oFS = new ActiveXObject("Scripting.FileSystemObject"); |
|
||||
|
var wshShell = new ActiveXObject("WScript.Shell") |
||||
|
var oFS = new ActiveXObject("Scripting.FileSystemObject"); |
||||
|
|
||||
var outfile = "scm_rev.h"; |
|
||||
var cmd_revision = " rev-parse HEAD"; |
|
||||
var cmd_describe = " describe --always --long --dirty"; |
|
||||
var cmd_branch = " rev-parse --abbrev-ref HEAD"; |
|
||||
|
var outfile = "scm_rev.cpp"; |
||||
|
var cmd_revision = " rev-parse HEAD"; |
||||
|
var cmd_describe = " describe --always --long --dirty"; |
||||
|
var cmd_branch = " rev-parse --abbrev-ref HEAD"; |
||||
|
|
||||
function GetGitExe() |
|
||||
{ |
|
||||
for (var gitexe in {"git.cmd":1, "git":1}) |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
wshShell.Exec(gitexe); |
|
||||
return gitexe; |
|
||||
} |
|
||||
catch (e) |
|
||||
{} |
|
||||
} |
|
||||
|
function GetGitExe() { |
||||
|
for (var gitexe in { "git.cmd": 1, "git": 1 }) { |
||||
|
try { |
||||
|
wshShell.Exec(gitexe); |
||||
|
return gitexe; |
||||
|
} catch (e) { |
||||
|
} |
||||
|
} |
||||
|
|
||||
WScript.Echo("Cannot find git or git.cmd, check your PATH:\n" + |
|
||||
wshShell.ExpandEnvironmentStrings("%PATH%")); |
|
||||
WScript.Quit(1); |
|
||||
|
WScript.Echo("Cannot find git or git.cmd, check your PATH:\n" + |
||||
|
wshShell.ExpandEnvironmentStrings("%PATH%")); |
||||
|
WScript.Quit(1); |
||||
} |
} |
||||
|
|
||||
function GetFirstStdOutLine(cmd) |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
return wshShell.Exec(cmd).StdOut.ReadLine(); |
|
||||
} |
|
||||
catch (e) |
|
||||
{ |
|
||||
// catch "the system cannot find the file specified" error
|
|
||||
WScript.Echo("Failed to exec " + cmd + " this should never happen"); |
|
||||
WScript.Quit(1); |
|
||||
} |
|
||||
|
function GetFirstStdOutLine(cmd) { |
||||
|
try { |
||||
|
return wshShell.Exec(cmd).StdOut.ReadLine(); |
||||
|
} catch (e) { |
||||
|
// catch "the system cannot find the file specified" error
|
||||
|
WScript.Echo("Failed to exec " + cmd + " this should never happen"); |
||||
|
WScript.Quit(1); |
||||
|
} |
||||
} |
} |
||||
|
|
||||
function GetFileContents(f) |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
return oFS.OpenTextFile(f).ReadAll(); |
|
||||
} |
|
||||
catch (e) |
|
||||
{ |
|
||||
// file doesn't exist
|
|
||||
return ""; |
|
||||
} |
|
||||
|
function GetFileContents(f) { |
||||
|
try { |
||||
|
return oFS.OpenTextFile(f).ReadAll(); |
||||
|
} catch (e) { |
||||
|
// file doesn't exist
|
||||
|
return ""; |
||||
|
} |
||||
} |
} |
||||
|
|
||||
// get info from git
|
// get info from git
|
||||
var gitexe = GetGitExe(); |
|
||||
var revision = GetFirstStdOutLine(gitexe + cmd_revision); |
|
||||
var describe = GetFirstStdOutLine(gitexe + cmd_describe); |
|
||||
var branch = GetFirstStdOutLine(gitexe + cmd_branch); |
|
||||
|
var gitexe = GetGitExe(); |
||||
|
var revision = GetFirstStdOutLine(gitexe + cmd_revision); |
||||
|
var describe = GetFirstStdOutLine(gitexe + cmd_describe); |
||||
|
var branch = GetFirstStdOutLine(gitexe + cmd_branch); |
||||
var isMaster = +("master" == branch); |
var isMaster = +("master" == branch); |
||||
|
|
||||
// remove hash (and trailing "-0" if needed) from description
|
// remove hash (and trailing "-0" if needed) from description
|
||||
describe = describe.replace(/(-0)?-[^-]+(-dirty)?$/, '$2'); |
describe = describe.replace(/(-0)?-[^-]+(-dirty)?$/, '$2'); |
||||
|
|
||||
var out_contents = |
var out_contents = |
||||
"#define SCM_REV_STR \"" + revision + "\"\n" + |
|
||||
"#define SCM_DESC_STR \"" + describe + "\"\n" + |
|
||||
"#define SCM_BRANCH_STR \"" + branch + "\"\n" + |
|
||||
"#define SCM_IS_MASTER " + isMaster + "\n"; |
|
||||
|
"#include \"common/scm_rev.h\"\n" + |
||||
|
"namespace Common {\n" + |
||||
|
" const char g_scm_rev[] = \"" + revision + "\";\n" + |
||||
|
" const char g_scm_branch[] = \"" + branch + "\";\n" + |
||||
|
" const char g_scm_desc[] = \"" + describe + "\";\n" + |
||||
|
"}\n"; |
||||
|
|
||||
// check if file needs updating
|
// check if file needs updating
|
||||
if (out_contents == GetFileContents(outfile)) |
|
||||
{ |
|
||||
WScript.Echo(outfile + " current at " + describe); |
|
||||
} |
|
||||
else |
|
||||
{ |
|
||||
// needs updating - writeout current info
|
|
||||
oFS.CreateTextFile(outfile, true).Write(out_contents); |
|
||||
WScript.Echo(outfile + " updated to " + describe); |
|
||||
|
if (out_contents == GetFileContents(outfile)) { |
||||
|
WScript.Echo(outfile + " current at " + describe); |
||||
|
} else { |
||||
|
// needs updating - writeout current info
|
||||
|
oFS.CreateTextFile(outfile, true).Write(out_contents); |
||||
|
WScript.Echo(outfile + " updated to " + describe); |
||||
} |
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue