diff --git a/exec/query_pr.js b/exec/query_pr.js deleted file mode 100644 index 586d34c46b5f55744268d97c2c5dd70834fcc028..0000000000000000000000000000000000000000 --- a/exec/query_pr.js +++ /dev/null @@ -1,359 +0,0 @@ -// $Id: query_pr.js,v 1.20 2005/08/05 21:26:02 deuce Exp $ - -load("sbbsdefs.js"); -load("sockdefs.js"); -load("gnatslib.js"); - -var SUCCESS=0; -var SENDING_PR=1; -var QUERY_SUCCESS=2; -var ERROR=3; -var RETRY=4; - -var query=new Object; - -// Set up query object... this probobly SHOULD be done with server data. -query.text=new Object; -query.text.text="Any"; -query.text.expr=undefined; -query.text.field="fieldtype:Text"; -query.text.list=undefined; -query.text.desc="Single Line Text Fields"; -query.multitext=new Object; -query.multitext.text="Any"; -query.multitext.expr=undefined; -query.multitext.field="fieldtype:Multitext"; -query.multitext.list=undefined; -query.multitext.desc="Multi Line Text Fields"; -query.category=new Object; -query.category.text="Any"; -query.category.expr=undefined; -query.category.field="Category"; -query.category.list="Categories"; -query.category.listdesc=1; -query.category.desc="Category"; -query.number=new Object; -query.number.text="Any"; -query.number.expr=undefined; -query.number.field="Number"; -query.number.list=undefined; -query.number.desc="PR Number"; -query.responsible=new Object; -query.responsible.text="Any"; -query.responsible.expr=undefined; -query.responsible.field="Responsible"; -query.responsible.list="Responsible"; -query.responsible.listdesc=1; -query.responsible.desc="Responsible"; -query.state=new Object; -query.state.text='Doesn'+"'"+'t equal "closed"'; -query.state.expr='State != "closed"'; -query.state.field="State"; -query.state.list="States"; -query.state.listdesc=2; -query.state.desc="State"; - -var gnats_user="guest"; -var password=undefined; -if(argc>0) - gnats_user=argv[0]; -if(argc>1) - password=argv[1]; -var gnats = new GNATS("bugs.synchro.net",gnats_user,password); - -if(!gnats.connect()) - handle_error(); - -var done=false; -while(!done && bbs.online) { - done=set_prlist(); - if(done) - break; - prs=gnats.get_results('"%-72.72s %-10.10s %-6.6s %-10.10s %-10.10s" Synopsis Category Number Responsible State'); - if(prs==undefined) - handle_error(); - if(prs.length > 0) { - var donelist=false; - var c; - while(!donelist && bbs.online) { - for(c=0; c < prs.length; c++) { - m=prs[c].match(/^(.{72}) (.{10}) (.{6}) (.{10}) (.{10})\r\n$/); - if(m!=undefined && m.index>-1) { - console.uselect(c,"Problem Report",format("%s\r\n State: %s Responsible: %s Category: %s PR: %s",m[1],m[5],m[4],m[2],m[3]),""); - } - } - pr=console.uselect(); - if(pr>=0) { - m=prs[pr].match(/.{84}([0-9]*)/); - if(m!=undefined && m.index >-1) { - if(gnats.access >= GNATS_LEVEL_EDIT && - !console.noyes("Modify/Remove this PR")) { - var fields=gnats.get_list("FieldNames"); - for(c=0; c<fields.length; c++) { - console.uselect(c,"Field",fields[c],""); - } - console.uselect(fields.length,"Fields","Delete this PR",""); - var field=console.uselect(); - if(field>=0 && field<fields.length) { - var oldval=gnats.get_field(m[1],fields[field]); - var newval=undefined; - if(oldval==undefined) - oldval=''; - if(!gnats.cmd("FTYP",fields[field])) - handle_error(); - if(!gnats.expect("FTYP",350)) - handle_error(); - switch(gnats.response.message) { - case 'Text': - case 'TextWithRegex': - case 'Date': - oldval=oldval.replace(/[\r\n]/g,''); - var newval=console.getstr(oldval,78,K_EDIT); - if(console.aborted) - newval=undefined; - break; - case 'MultiText': - writeln("Cannot yet modify multitext fields, sorry."); - break; - case 'Enum': - var vals=gnats.get_valid(fields[field]); - if(vals==undefined) - handle_error(); - for(c=0; c<vals.length; c++) { - console.uselect(c, "New Value", vals[c], ""); - } - c=console.uselect(); - if(c>=0 && c<vals.length) - newval=vals[c]; - break; - case 'MultiEnum': - var vals=gnats.get_valid(fields[field]); - if(vals==undefined) - handle_error(); - oldval=oldval.replace(/[\r\n]/g,''); - var sep=','; - if(oldval.search(/:/)>-1) - sep=':'; - var cvals=oldval.split(/:,/); - var cv = new Object; - for(c=0; c<cvals.length; c++) - cv[cvals[c]]=true; - var doneenum=false; - while(!doneenum && bbs.online) { - for(c=0; c<vals.length; c++) { - if(cv[vals[c]] == undefined || cv[vals[c]]==false) - console.uselect(c, "New Values", vals[c], ""); - else - console.uselect(c, "New Values", vals[c]+ '(Selected)', ""); - } - console.uselect(c, "New Values", "Save Changes", ""); - c=console.uselect(); - if(c<0) - break; - else if(c>=0 && c<vals.length) { - if(cv[vals[c]] == undefined || cv[vals[c]]==false) - cv[vals[c]]=true; - else - cv[vals[c]]=false; - } - else if(c==vals.length) - doneenum=true; - } - if(doneenum) { - var newvals=new Array(); - for(c=0; c<vals.length; c++) { - if(cv[vals[c]] != undefined && cv[vals[c]]==true) - newvals.push(vals[c]); - } - newval=newvals.join(sep); - } - break; - case 'Integer': - oldval=oldval.replace(/[\r\n]/g,''); - var newval=console.getstr(oldval,78,K_EDIT|K_NUMBER); - if(console.aborted) - newval=undefined; - break; - } - if(!bbs.online) - newval=undefined; - if(newval != undefined) { - var reason=''; - if(!gnats.cmd("FIELDFLAGS",fields[field])) - handle_error(); - if(!gnats.expect("FIELDFLAGS",350)) - handle_error(); - if(gnats.response.message.search(/\brequireChangeReason\b/)>-1) { - console.print("\1y\1hFollowup message (Blank line ends):\r\n"); - do { - var line=console.getstr(); - if(console.aborted) - break; - reason += line + "\r\n"; - } while (line != '' && bbs.online); - } - if(!gnats.replace(m[1],fields[field],newval,reason)) - handle_error(); - } - } - else if(field==fields.length) { - if(console.yesno("Are you sure you wish to delete this PR?")) { - if(!gnats.cmd("DELETE",m[1])) - handle_error(); - if(!gnats.expect("DELETE",210)) - handle_error(); - continue; - } - } - } - var pr=gnats.get_fullpr(m[1]); - if(pr==undefined) - handle_error(); - writeln(pr); - writeln(); - writeln("--- End of PR ---"); - if(!console.noyes("Submit a followup")) { - console.print("\1y\1hFollowup message (Blank line ends):\r\n"); - var note = ''; - do { - var line=console.getstr(); - if(console.aborted) - break; - note += line + "\r\n"; - } while (line != '' && bbs.online); - if(line == '' && bbs.online) { - if(!gnats.send_followup(m[1],user.name,user.email,note)) - handle_error(); - } - } - } - else { - writeln("Error getting PR info"); - console.pause(); - clean_exit(); - } - } - else - donelist=true; - } - } - else { - writeln("No PRs!"); - console.pause(); - } -} -clean_exit(); - -function set_prlist() -{ - var i; - var j; - var f; - var done=false; - fields=new Array(); - for (field in query) { - fields.push(field); - } - while(!done && bbs.online) { - var text=''; - var expr=''; - console.uselect(0,"Field","Run Query",""); - for(i=0;i<fields.length;i++) { - console.uselect(i+1,"Field",query[fields[i]].desc+": "+query[fields[i]].text,""); - } - f=console.uselect(); - if(f==-1) - return(true); - if(f==0) - break; - f--; - if(f>=0 && f < fields.length) { - // Field selected to change... - console.uselect(0,query[fields[f]].desc,"Equals",""); - console.uselect(1,query[fields[f]].desc,"Does not equal",""); - console.uselect(2,query[fields[f]].desc,"Contains",""); - console.uselect(3,query[fields[f]].desc,"Is greater than",""); - console.uselect(4,query[fields[f]].desc,"Is less than",""); - console.uselect(5,query[fields[f]].desc,"Any",""); - var op=console.uselect(); - switch(op) { - case 0: - text += "Equals"; - expr += query[fields[f]].field+"=="; - break; - case 1: - text += "Doesn't equal"; - expr += query[fields[f]].field+"!="; - break; - case 2: - text += "Contains"; - expr += query[fields[f]].field+"~"; - break; - case 3: - text += "Is greater than"; - expr += query[fields[f]].field+">"; - break; - case 4: - text += "Is less than"; - expr += query[fields[f]].field+"<"; - break; - case 5: - text = "Any"; - expr=undefined; - query[fields[f]].text=text; - query[fields[f]].expr=expr; - continue; - break; - } - if(op>=0 && op <= 4) { - if(query[fields[f]].list != undefined) { - var vals=gnats.get_list(query[fields[f]].list); - if(vals==undefined) - handle_error(); - for(i=0; i<vals.length; i++) { - cols=vals[i].split(/:/); - console.uselect(i, query[fields[f]].desc, cols[0]+" ("+cols[query[fields[f]].listdesc]+")", ""); - } - var val=console.uselect(); - if(val>0 && val < vals.length) { - cols=vals[val].split(/:/); - text += ' "'+cols[0]+'"'; - expr += ' "'+cols[0].replace(/"/g,'\\"')+'"'; - query[fields[f]].text=text; - query[fields[f]].expr=expr; - } - } - else { - write(query[fields[f]].desc+" "+text+": "); - var val=console.getstr(); - text += ' "'+val+'"'; - val.replace(/"/g,'\\"'); - expr += ' "'+val.replace(/"/g,'\\"')+'"'; - query[fields[f]].text=text; - query[fields[f]].expr=expr; - } - } - } - } - if(!gnats.reset_expr()) - handle_error(); - for(field in fields) { - if(query[fields[field]].expr != undefined) { - if(!gnats.and_expr(query[fields[field]].expr)) - handle_error(); - } - } -} - -function clean_exit(s,code) -{ - gnats.close(); - exit(code); -} - -function handle_error() -{ - writeln(gnats.error); - console.pause(); - clean_exit(1); -} diff --git a/exec/send_pr.js b/exec/send_pr.js deleted file mode 100644 index 13d9b6bd5eb05f167ff583bc2b9d35b726cf6265..0000000000000000000000000000000000000000 --- a/exec/send_pr.js +++ /dev/null @@ -1,129 +0,0 @@ -// $Id: send_pr.js,v 1.24 2005/08/09 22:25:22 deuce Exp $ - -load("sbbsdefs.js"); -load("gnatslib.js"); - -const REVISION = "$Revision: 1.24 $".split(' ')[1]; - -const MAX_LINE_LEN = 78 - -console.clear(); -console.center(format("Synchronet Bug Submission Module %s\r\n", REVISION)); -console.crlf(); - -gnats=new GNATS("bugs.synchro.net","guest"); -if(!gnats.connect()) { - writeln(gnats.error); - exit(); -} - -pr = new Object; -var tmp; - -pr.Originator = user.name; -pr.Confidential = console.noyes("Confidential")?'no':'yes'; -if(console.aborted) - exit(); -console.print("\r\n\1y\1hOne-line synopsis of the problem:\r\n"); -pr.Synopsis = truncsp(console.getstr(MAX_LINE_LEN, K_LINE)); -if(console.aborted || !pr.Synopsis.length) - exit(); -severity = gnats.get_valid("Severity"); -for(i=0; i<severity.length; i++) { - console.uselect(i,"Severity",severity[i]); -} -tmp=console.uselect(); -if(tmp == -1) - exit(); -pr.Severity=severity[tmp]; -priority = gnats.get_valid("Priority"); -for(i=0; i<priority.length; i++) { - console.uselect(i,"Priority",priority[i]); -} -tmp=console.uselect(); -if(tmp == -1) - exit(); -pr.Priority=priority[tmp]; -allcats=gnats.get_list("Categories"); -cats=new Array(); -for(i=0; i<allcats.length; i++) { - var flds=allcats[i].split(/:/); - cats.push(flds[0]); - console.uselect(i, "Category", flds[1], ""); -} -tmp=console.uselect(); -if(tmp == -1) - exit(); -pr.Category=cats[tmp]; -cls = gnats.get_valid("Class"); -for(i=0; i<cls.length; i++) { - if(!gnats.cmd("ADMV","class",cls[i])) - continue; - if(!gnats.expect("ADMV",350)) - continue; - var flds=gnats.response.message.split(/:/); - console.uselect(i, "Class", flds[2], ""); -} -tmp=console.uselect(); -if(tmp == -1) - exit(); -pr.Class=cls[tmp]; -pr.Version=system.version_notice+system.revision+" Compiled: "+system.compiled_when+" with "+system.compiled_with; -pr.Environment=system.os_version+"\r\n"+system.js_version+"\r\n"+system.socket_lib+"\r\n"+system.msgbase_lib; -console.print("\r\n\1y\1hPrecise description of the problem (Blank line ends):\r\n"); -pr.Description = ''; -do { - var line=truncsp(console.getstr(MAX_LINE_LEN, K_WRAP | K_LINE)); - if(console.aborted) - exit(); - pr.Description += line + "\r\n"; -} while (line != '' && bbs.online); -console.print("\1y\1hSteps to reproduce the problem (Blank line ends):\r\n"); -pr.HowToRepeat = ''; -do { - var line=truncsp(console.getstr(MAX_LINE_LEN, K_WRAP | K_LINE)); - if(console.aborted) - exit(); - pr.HowToRepeat += line + "\r\n"; -} while (line != '' && bbs.online); -console.print("\1y\1hFix/Workaround if known (Blank line ends):\r\n"); -pr.Fix = ''; -do { - var line=truncsp(console.getstr(MAX_LINE_LEN, K_WRAP | K_LINE)); - if(console.aborted) - exit(); - pr.Fix += line + "\r\n"; -} while (line != '' && bbs.online); - -var body=''; -body += "To: bugs\r\n"; -body += "CC:\r\n"; -body += "Subject: "+pr.Synopsis+"\r\n"; -body += "From: "+user.name+" <"+user.email+">\r\n"; -body += "Reply-To: "+user.name+" <"+user.email+">\r\n"; -body += "X-Send-Pr-Version: Synchronet send_pr.js\r\n"; -body += "\r\n"; -body += ">Originator:\t" + pr.Originator + "\r\n"; -body += ">Confidential:\t" + pr.Confidential + "\r\n"; -body += ">Synopsis:\t" + pr.Synopsis + "\r\n"; -body += ">Severity:\t" + pr.Severity + "\r\n"; -body += ">Priority:\t" + pr.Priority + "\r\n"; -body += ">Category:\t" + pr.Category + "\r\n"; -body += ">Class:\t" + pr.Class + "\r\n"; -body += ">Version:\t" + pr.Version + "\r\n"; -body += ">Environment:\r\n" + pr.Environment + "\r\n"; -body += ">Description:\r\n" + pr.Description; -body += ">How-To-Repeat:\r\n" + pr.HowToRepeat; -body += ">Fix:\r\n" + pr.Fix; - -// Only submit if the user is still online... -if(bbs.online) { - if(!gnats.submit(body)) { - alert(gnats.error); - console.pause(); - } else { - console.print("\1y\1hProblem Report (PR) submitted successfully.\r\n"); - console.print(gnats.message); - } -} -gnats.close();