3 $baseurl = "http://nodejs.org/dist";
5 // we scrape nodejs.org/dist site looking for versions that exist so we can construct a meta data database
6 // so our lxc will be able to find versions in a more appropriate way
8 // first, get the main site
12 global $fver, $baseurl, $fvern;
15 echo "Getting base list from $baseurl\n";
16 $distbase = file_get_contents($baseurl);
18 // get all links that are directories
19 preg_match_all('/<a [^>]*href="(.+)"/', $distbase, $firstlist);
23 foreach($firstlist[1] as $chk) {
25 if(preg_match('/v[0-9]+.[0-9]+.[0-9]+\//', $chk)) {
26 if(preg_match('/v([0-9]+.[0-9]+.[0-9]+)\//', $chk, $vlist)) {
27 $versions[$vlist[1]] = $chk;
32 foreach($versions as $key => $val) {
33 // now we get each version and parse whats in its directory
34 echo "Checking $key => $baseurl/$val\n";
36 //if(preg_match("/0\.8\.[1].*/", $key)) {
37 $urlnow = "$baseurl/$val";
38 $vers_dir = file_get_contents($urlnow);
40 preg_match_all('/<a [^>]*href="(.+)"/', $vers_dir, $fileslist);
42 checkFilesList(rtrim($val, "/"), $key, $fileslist);
48 //echo "and fver is now\n";
51 echo "finding max versions\n";
58 foreach($versions as $key => $val) {
59 $vspl = explode(".", $key);
60 if(($vspl[1]%2) == 1) {
62 if($vspl[0] >= $maxdev[0]) {
63 if($vspl[1] >= $maxdev[1]) {
64 if($vspl[2] >= $maxdev[2]) {
65 $maxdev[0] = $vspl[0];
66 $maxdev[1] = $vspl[1];
67 $maxdev[2] = $vspl[2];
73 if($vspl[0] >= $maxstable[0]) {
74 if($vspl[1] >= $maxstable[1]) {
75 if($vspl[2] >= $maxstable[2]) {
76 $maxstable[0] = $vspl[0];
77 $maxstable[1] = $vspl[1];
78 $maxstable[2] = $vspl[2];
85 echo "getting init version\n";
86 $initvers_l = explode("\n", file_get_contents("../lxc/init.js"));
87 $initvers_t = preg_grep("/.*VERSION_FOR_PARSER.*/", $initvers_l);
88 foreach($initvers_t as $val) {
89 $cpl = explode(":", $val);
90 $initvers = trim($cpl[1]);
93 echo "dumping to versions file\n";
94 $versdate = date("Ymd");
95 $versfilename = "./versions/versions_file.$versdate";
96 $versfile = fopen("$versfilename", "w");
97 if($versfile !== false) {
98 fwrite($versfile, "baseurl:$baseurl\n");
99 foreach($fver as $line) {
100 fwrite($versfile, "$line\n");
105 system("gzip -c versions/$versfilename > versions/$versfilename.gz");
107 // create a current versions file
108 $cv = fopen("versions/current_version", "w");
110 fwrite($cv, "version:$versdate\n");
111 fwrite($cv, "stable:".$maxstable[0].".".$maxstable[1].".".$maxstable[2]."\n");
112 fwrite($cv, "dev:".$maxdev[0].".".$maxdev[1].".".$maxdev[2]."\n");
113 fwrite($cv, "nodejs:$initvers\n");
117 echo "Failed to open vers file!\n";
121 function checkFilesList($url, $vers, $fileslist) {
122 global $fver, $baseurl, $fvern;
124 echo "Checking $url, $vers\n";
128 foreach($fileslist[1] as $fname) {
135 if($fname == "SHASUMS.txt") {
137 $shas_r = file_get_contents("$baseurl/$url/SHASUMS.txt");
138 $shalist = explode("\n", $shas_r);
139 foreach($shalist as $ssha) {
140 $fsha = preg_split("/[ \t]+/", $ssha);
141 if(isset($fsha[1])) $shalist[$fsha[1]] = $fsha[0];
143 //echo "Shasums file: $fname\n";
144 //var_dump($shalist);
145 } else if($fname == "MD5SUMS.txt") {
147 } else if(preg_match("/.*linux.*64\.tar\.gz/", $fname)) {
148 //echo "64 bit version for linux: $fname\n";
150 if(isset($shalist[$fname])) $thissha = $shalist[$fname];
154 } else if(preg_match("/.*linux.*86\.tar\.gz/", $fname)) {
155 //echo "32 bit version for linux: $fname\n";
157 if(isset($shalist[$fname])) $thissha = $shalist[$fname];
158 //echo "$vers:$url/$fname:linux:i686:$thissha\n";
162 } else if(preg_match("/.*darwin.*86\.tar\.gz/", $fname)) {
163 //echo "32 bit version for darwin: $fname\n";
165 if(isset($shalist[$fname])) $thissha = $shalist[$fname];
166 //echo "$vers:$url/$fname:darwin:i686:$thissha\n";
170 } else if(preg_match("/.*darwin.*64\.tar\.gz/", $fname)) {
171 //echo "64 bit version for darwin: $fname\n";
173 if(isset($shalist[$fname])) $thissha = $shalist[$fname];
174 //echo "$vers:$url/$fname:darwin:x86_64:$thissha\n";
178 } else if(preg_match("/.*sunos.*64\.tar\.gz/", $fname)) {
179 // echo "64 bit version for sunos: $fname\n";
181 if(isset($shalist[$fname])) $thissha = $shalist[$fname];
182 //echo "$vers:$url/$fname:sunos:x86_64:$thissha\n";
186 } else if(preg_match("/.*sunos.*86\.tar\.gz/", $fname)) {
187 //echo "32 bit version for sunos: $fname\n";
189 if(isset($shalist[$fname])) $thissha = $shalist[$fname];
190 //echo "$vers:$url/$fname:sunos:i686:$thissha\n";
194 } else if(preg_match("/.*linux-arm.*\.tar\.gz/", $fname)) {
195 // echo "arm for linux: $fname\n";
197 if(isset($shalist[$fname])) $thissha = $shalist[$fname];
198 //echo "$vers:$url/$fname:linux:armhf:$thissha\n";
202 } else if(preg_match("/node-v[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz/", $fname)) {
204 if(isset($shalist[$fname])) $thissha = $shalist[$fname];
205 //echo "$vers:$url/$fname:linux:armhf:$thissha\n";
212 $fver[$fvern++] = "$vers:$plat:$arch:$url/$fname:$thissha";