win32/configure.js
a0b5adcc
 var W = WScript;
 var F;
 try {
 	F = W.CreateObject('Scripting.FileSystemObject');
 } catch(e) {
 	W.Echo('FSO creation failed: ' + e.message);
 	W.Quit(1);
 }
 var f;
 try {
 	f = F.GetFile(WScript.ScriptFullName);
 } catch(e) {
 	W.Echo('I don\'t exit: ' + e.message);
 	W.Quit(1);
 }
 
 var dir_win32 = f.ParentFolder;
 try {
 	f = F.GetFolder(dir_win32);
 } catch(e) {
 	W.Echo('GetFolder failed: ' + e.message);
 	W.Quit(1);
 }
 var dir_root = f.ParentFolder;
 var file_versionsta = dir_root + '\\libclamav\\version.h.static';
 var file_versionout = dir_root + '\\libclamav\\version.h';
 
 W.Echo('Generating version.h');
 if(F.FileExists(file_versionout))
 	F.DeleteFile(file_versionout, true);
 
 if(F.FileExists(file_versionsta)) {
 	try {
 		F.CopyFile(file_versionsta, file_versionout, true);
 	} catch(e) {
 		W.Echo('Cannot copy '+ file_versionsta +' to ' + file_versionout + ': ' + e.message);
 		W.Quit(1);
 	}
 } else {
 	var S;
 	var version = '';
 	try {
 		S = W.CreateObject('WScript.Shell');
 	} catch(e) {
 		W.Echo('No Shell available: ' + e.message);
 		W.Quit(1);
 	}
 	try {
 		var git = S.Exec('git describe --always');
 		version = git.StdOut.ReadAll();
 		while(git.Status == 0) {
 			W.Sleep(100);
 		}
 		if(git.ExitCode != 0) {
 			W.Echo('WARNING: git describe returned ' + git.ExitCode);
 			version = '';
 		} else {
7b745b87
                         version = version.replace(/[\r\n]+$/, '');
                         if(version.match(/^clamav-([^-]+)$/))
 				version = RegExp.$1;
                         else
 				version = 'devel-' + version;
 			version = '#define REPO_VERSION "' + version + '"';
a0b5adcc
 		}
da9a889f
 	} catch (e) {
 		W.Echo('WARNING: Error executing git: ' + e.message);
 	}
a0b5adcc
 	of = F.CreateTextFile(file_versionout, true);
 	if(!of) {
 		W.Echo('Cannot open '+file_versionout+' for writing');
 		W.Quit(1);
 	}
 	of.WriteLine('/* AUTOMATICALLY GENERATED BY configure.js */');
 	if(version != '') 
 		of.WriteLine(version);
5b1e635f
 	else
 		W.Echo('WARNING: unable to determine repository revision');
a0b5adcc
 	of.close();
 }
 
 W.Echo('Work complete');
 W.Quit(0);