const config = require('./config.json') const fs = require('fs') const Gitlab = require('gitlab/dist/es5').default const klaw = require('klaw-sync') const path = require('path') const api = new Gitlab({ token: config.token }) const months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ] const year = new Date().getFullYear().toString() const month = months[new Date().getMonth()] if (!fs.existsSync(path.join(__dirname, year))) fs.mkdirSync(path.join(__dirname, year)) if (!fs.existsSync(path.join(__dirname, year, month))) fs.mkdirSync(path.join(__dirname, year, month)) const openedPath = path.join(__dirname, year, month, 'Opened') const closedPath = path.join(__dirname, year, month, 'Closed') if (!fs.existsSync(openedPath)) fs.mkdirSync(openedPath) if (!fs.existsSync(closedPath)) fs.mkdirSync(closedPath) let args = '' for (const arg of process.argv) { args += arg + ' ' } if (!args.includes('--no-download')) download() else createList() function download() { api.Projects .show('tildes/tildes') .then((project) => { api.Issues .all({ projectId: project.id }) .then((issues) => { for (const issue of issues) { if (new Date(issue.created_at).getMonth() === new Date().getMonth()) { fs.writeFileSync(path.join(openedPath, issue.iid.toString()) + '.json', JSON.stringify(issue, null, 2)) } if (new Date(issue.closed_at).getMonth() === new Date().getMonth()) { fs.writeFileSync(path.join(closedPath, issue.iid.toString()) + '.json', JSON.stringify(issue, null, 2)) } } }) .then(createList) }) } function createList() { let opened = klaw(openedPath) let closed = klaw(closedPath) opened.sort(function(a,b) { const aFile = require(a.path) const bFile = require(b.path) return (aFile.iid > bFile.iid) ? 1 : ((bFile.iid > aFile.iid) ? -1 : 0) }) closed.sort(function(a,b) { const aFile = require(a.path) const bFile = require(b.path) return (aFile.iid > bFile.iid) ? 1 : ((bFile.iid > aFile.iid) ? -1 : 0) }) let list = '## List\n' list += '\n### Opened\n\n' for (const file of opened) { const issue = require(file.path) let title if (issue.title.length >= 50) { title = issue.title.substring(0, 47) + '...' } else { title = issue.title } list += `* [#${issue.iid}](${issue.web_url}) - ${title} by [${issue.author.name}](${issue.author.web_url})\n` } list += '\n### Closed\n\n' for (const file of closed) { const issue = require(file.path) let title if (issue.title.length >= 50) { title = issue.title.substring(0, 47) + '...' } else { title = issue.title } list += `* [#${issue.iid}](${issue.web_url}) - ${title} by [${issue.author.name}](${issue.author.web_url})\n` } fs.writeFileSync(path.join(__dirname, year, month, 'list.md'), list, {encoding: 'UTF-8'}) }