You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.5 KiB
68 lines
2.5 KiB
const jsdom = require("jsdom");
|
|
const { JSDOM } = jsdom;
|
|
const fs = require('fs');
|
|
const { updateURLLink } = require('./common');
|
|
|
|
const target = "UBUNTU_SERVER_RPI_IMAGE_URL";
|
|
const url = "http://cdimage.ubuntu.com/ubuntu/releases/";
|
|
const reg = ".*(?<release>[0-9][02468])\.04\.?(?<minor>[0-9]{1})?.*";
|
|
|
|
// Read the input file, and parse the variable input
|
|
try {
|
|
const data = fs.readFileSync('../test/run-tests.sh', 'utf8')
|
|
.split('\n')
|
|
.filter(line => line.match(`${target}=.*`));
|
|
var line = data[0];
|
|
var m = line.match(`.*=\"${reg}\"`);
|
|
var imageName = m.groups.release;
|
|
var minor = m.groups.minor || 0;
|
|
} catch (err) {
|
|
console.error(err);
|
|
process.exit(1);
|
|
}
|
|
|
|
JSDOM.fromURL(url, {}).then(dom => {
|
|
var document = dom.window.document;
|
|
var refs = document.getElementsByTagName("a");
|
|
var matches = Array.from(refs)
|
|
.filter(ref => ref.textContent.match(reg))
|
|
.filter(ref => !ref.textContent.match(reg).groups.minor) // Ignore the minor number
|
|
.reduce((acc, ref) => {
|
|
acc.push(ref.textContent.match(reg));
|
|
return acc;
|
|
}, [])
|
|
.sort((a,b) => {
|
|
return parseInt(b.groups.release) - parseInt(a.groups.release);
|
|
});
|
|
var matchOn = matches[0].input;
|
|
|
|
return matchOn;
|
|
|
|
// Get the release image url from the releases (sub)-page
|
|
// const url = "http://cdimage.ubuntu.com/ubuntu/releases/"
|
|
}).then(releaseVersion => {
|
|
var releasedVersion = releaseVersion.replace(/\s/g, "").replace(/\//g, "");
|
|
JSDOM.fromURL(`${url}${releasedVersion}/release/`, {}).then(dom => {
|
|
var document = dom.window.document;
|
|
var refs = document.getElementsByTagName("a");
|
|
const match = Array.from(refs).find(ref => ref.href.match(`.*ubuntu-${releasedVersion}\.?[0-9]+-preinstalled-server-armhf.*\.img\.xz$`));
|
|
if (match) {
|
|
console.log(`Ubuntu server image has a new release: ${match}`);
|
|
updateURLLink(`${target}=\"${match}\"`, target);
|
|
}
|
|
})
|
|
.catch(err => {
|
|
console.log('Failed to get the update URL');
|
|
console.log(`${url}${releasedVersion}/release/`);
|
|
JSDOM.fromURL(`${url}${releasedVersion}/beta/`, {})
|
|
.then(dom => {
|
|
console.log('Only the beta is out still');
|
|
});
|
|
});
|
|
})
|
|
.catch(err => {
|
|
console.log('Failed to get the URL');
|
|
console.log(url);
|
|
console.log(err);
|
|
throw err;
|
|
});
|
|
|