1
0
term/pkg/axios/gulpfile.js

94 lines
2.5 KiB
JavaScript
Raw Normal View History

2024-03-23 11:25:41 +00:00
import gulp from 'gulp';
import fs from 'fs-extra';
import axios from './bin/githubAxios.js';
import minimist from 'minimist'
const argv = minimist(process.argv.slice(2));
gulp.task('default', async function(){
console.log('hello!');
});
const clear = gulp.task('clear', async function() {
await fs.emptyDir('./dist/')
});
const bower = gulp.task('bower', async function () {
const npm = JSON.parse(await fs.readFile('package.json'));
const bower = JSON.parse(await fs.readFile('bower.json'));
const fields = [
'name',
'description',
'version',
'homepage',
'license',
'keywords'
];
for (let i = 0, l = fields.length; i < l; i++) {
const field = fields[i];
bower[field] = npm[field];
}
await fs.writeFile('bower.json', JSON.stringify(bower, null, 2));
});
async function getContributors(user, repo, maxCount = 1) {
const contributors = (await axios.get(
`https://api.github.com/repos/${encodeURIComponent(user)}/${encodeURIComponent(repo)}/contributors`,
{ params: { per_page: maxCount } }
)).data;
return Promise.all(contributors.map(async (contributor)=> {
return {...contributor, ...(await axios.get(
`https://api.github.com/users/${encodeURIComponent(contributor.login)}`
)).data};
}))
}
const packageJSON = gulp.task('package', async function () {
const CONTRIBUTION_THRESHOLD = 3;
const npm = JSON.parse(await fs.readFile('package.json'));
try {
const contributors = await getContributors('axios', 'axios', 15);
npm.contributors = contributors
.filter(
({type, contributions}) => type.toLowerCase() === 'user' && contributions >= CONTRIBUTION_THRESHOLD
)
.map(({login, name, url}) => `${name || login} (https://github.com/${login})`);
await fs.writeFile('package.json', JSON.stringify(npm, null, 2));
} catch (err) {
if (axios.isAxiosError(err) && err.response && err.response.status === 403) {
throw Error(`GitHub API Error: ${err.response.data && err.response.data.message}`);
}
throw err;
}
});
const env = gulp.task('env', async function () {
var npm = JSON.parse(await fs.readFile('package.json'));
const envFilePath = './lib/env/data.js';
await fs.writeFile(envFilePath, Object.entries({
VERSION: (argv.bump || npm.version).replace(/^v/, '')
}).map(([key, value]) => {
return `export const ${key} = ${JSON.stringify(value)};`
}).join('\n'));
});
const version = gulp.series('bower', 'env', 'package');
export {
bower,
env,
clear,
version,
packageJSON
}