From b08492349205e72807544d8022a1bcfe3d886fa6 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Wed, 3 Aug 2005 22:42:13 +0000
Subject: [PATCH] New script for updating PRs based on CVS commit logs... usage
 is:

gnats_cvs.js $USER gnatsuser gnatspw

Where $USER is the CVS user who comitted the change
gnatsuser is the GNATS userID (ie: cvs)
gnatspw is the GNATS password.
---
 exec/gnats_cvs.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)
 create mode 100755 exec/gnats_cvs.js

diff --git a/exec/gnats_cvs.js b/exec/gnats_cvs.js
new file mode 100755
index 0000000000..79beaf26cf
--- /dev/null
+++ b/exec/gnats_cvs.js
@@ -0,0 +1,55 @@
+#!/sbbs/exec/jsexec -x -c /sbbs/ctrl
+load("gnatslib.js");
+
+var logmsg='';
+var name=argv[0];
+
+var gnats_user="guest";
+var password=undefined;
+if(argc>1)
+        gnats_user=argv[1];
+if(argc>2)
+        password=argv[2];
+var gnats = new GNATS("bugs.synchro.net",gnats_user,password);
+
+if(!gnats.connect())
+        handle_error();
+
+while((line=readln()) != undefined)
+	logmsg += line+"\n";
+logmsg += "\n";
+
+auditprs=new Object;
+stateprs=new Object;
+myRe=/PR:([0-9]+)/g;
+while((pr=myRe.exec(logmsg))!=undefined) {
+	auditprs[pr[1]]=pr[1];
+}
+
+myRe=/PR:([0-9]+)-\>([a-z]*)/g;
+while((pr=myRe.exec(logmsg))!=undefined) {
+	stateprs[pr[1]]=pr[2];
+}
+
+for(pr in auditprs) {
+	if(name != gnats.get_field(pr,"Responsible")) {
+		if(!gnats.replace(pr, "Responsible", name, "CVS Commit"))
+			handle_error();
+	}
+	if(!gnats.append(pr,"Audit-Trail", logmsg, "CVS Commit"))
+		handle_error();
+}
+
+for(pr in stateprs) {
+	if(stateprs[pr] != gnats.get_field(pr,"State")) {
+		if(!gnats.replace(pr, "State", stateprs[pr], "CVS Commit"))
+			handle_error();
+	}
+}
+
+function handle_error()
+{
+        writeln(gnats.error);
+        gnats.close();
+        exit(1);
+}
-- 
GitLab