Skip to content

Instantly share code, notes, and snippets.

@halkeye
Created September 28, 2011 23:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save halkeye/1249540 to your computer and use it in GitHub Desktop.
Save halkeye/1249540 to your computer and use it in GitHub Desktop.
Perl backend grabber for jenkins
#!/usr/bin/env groovy
// Generates server-side metadata for Perl auto-installation
@GrabResolver(name="m.g.o-public",root='http://maven.glassfish.org/content/group/public/')
@Grab(group='net.sourceforge.htmlunit', module='htmlunit', version='[2.4,)')
import com.gargoylesoftware.htmlunit.html.*;
@Grab(group="org.kohsuke.stapler",module="json-lib",version="2.1",classifier="jdk15")
import net.sf.json.*
import com.gargoylesoftware.htmlunit.WebClient
//@Grab("org.jenkins-ci:version-number:1.0")
@Grab(group="org.jenkins-ci", module="version-number", version="1.0")
import hudson.util.VersionNumber;
def wc = new WebClient()
//def baseUrl = 'http://search.cpan.org/dist/perl/'
def baseUrl = 'http://www.cpan.org/src/5.0/'
HtmlPage p = wc.getPage('file:///home/gavinm/workspace/backend-crawler/index.html');
def json = [];
//p.getElementsByName("url").reverse().collect { HtmlOption e ->
def select = p.getElementsByName("url").get(0);
select.getChildElements().each { e ->
def ver = (e.getText() =~ /^perl-([^ ]+).*--/)
if (ver) {
def url = baseUrl + "perl-" + ver[0][1] + ".tar.gz";
// println url
json << ["id":ver[0][1], "name": "Perl ${ver[0][1]}".toString(), "url":url];
}
}
json = json.sort{a,b -> new VersionNumber(a.id).compareTo(new VersionNumber(b.id)) }
JSONObject envelope = JSONObject.fromObject([list:json]);
println envelope.toString(2)
key = "hudson.plugins.gradle.PerlInstaller";
File d = new File("target")
d.mkdirs()
new File(d,"${key}.json").write("downloadService.post('${key}',${envelope.toString(2)})");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment