/* * Copyright (C) Sapphirecode - All Rights Reserved * This file is part of standard which is released under MIT. * See file 'LICENSE' for full license details. * Created by Timo Hocker , May 2020 */ /* eslint-disable */ 'use strict'; const authors = [ JSON.stringify ({ name: 'Timo Hocker', email: 'timo@scode.ovh' }) ]; const fs = require ('fs'); const child_process = require ('child_process'); const pkg = JSON.parse (fs.readFileSync ('package.json', 'utf-8')); child_process.execSync ('yarn lint', { stdio: 'inherit' }); child_process.execSync ('yarn test', { stdio: 'inherit' }); child_process.execSync ('yarn compile', { stdio: 'inherit' }); let ok = true; if (typeof pkg.description === 'undefined' || pkg.description === '') { console.log ('description undefined'); ok = false; } if (typeof pkg.repository === 'object') { if (pkg.repository.type !== 'git') { console.log ('repository is not of type git'); ok = false; } if (!(/^https:\/\/.+\.git/iu).test (pkg.repository.url)) console.log ('repo url is not https.git'); } else { console.log ('repository undefined'); ok = false; } if (!(/^https:\/\/.+/iu).test (pkg.bugs)) { console.log ('issue tracker url not defined'); ok = false; } if (typeof pkg.author === 'object') { if (!authors.includes (JSON.stringify (pkg.author))) { console.log ('author is none of the registered'); ok = false; } } else { console.log ('author not in object format'); ok = false; } if (!Array.isArray(pkg.keywords) || pkg.keywords.length < 1) { console.log ('keywords empty'); ok = false; } function major (version) { return version.replace (/\.[0-9x]+$/ui, ''); } if (fs.existsSync ('README.md')) { const readme = fs.readFileSync ('README.md', 'utf-8'); const version = (/version: ([0-9x.]+)/ui).exec (readme); if ( version === null || major (version[1]) !== major (pkg.version) ) { console.log ('readme version does not match package version'); ok = false; } } else { console.log ('readme does not exist'); ok = false; } if (fs.existsSync ('CHANGELOG.md')) { const changelog = fs.readFileSync ('CHANGELOG.md', 'utf-8'); const cl_version = (/^## ([0-9x.]+)/mu).exec (changelog); if ( cl_version === null || major (cl_version[1]) !== major (pkg.version) ) { console.log ('changelog is not up to date'); ok = false; } } else { console.log ('changelog does not exist'); ok = false; } if (ok) child_process.execSync ('yarn publish --access public'); else process.exit (1);