From d8d0cac9ca55fd5f3ffe816f8e814977add13dc8 Mon Sep 17 00:00:00 2001 From: sarisia Date: Wed, 2 Sep 2020 22:56:14 +0900 Subject: [PATCH] 1.2.0 --- lib/feed.js | 16 +++++++++++++++- lib/index.js | 10 ++++++++++ package-lock.json | 2 +- package.json | 2 +- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/feed.js b/lib/feed.js index f534863..6a2ce5f 100644 --- a/lib/feed.js +++ b/lib/feed.js @@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.getFeedItems = void 0; +exports.sortItems = exports.getFeedItems = void 0; const rss_parser_1 = __importDefault(require("rss-parser")); const parser = new rss_parser_1.default({ timeout: 5000 @@ -27,3 +27,17 @@ function getFeedItems(url) { }); } exports.getFeedItems = getFeedItems; +function sortItems(items) { + const mapped = items.map((v, i) => { + if (!v.isoDate) { + throw new Error('cannot perform sort without `date` in your feed'); + } + return { + index: i, + date: new Date(v.isoDate) + }; + }); + mapped.sort((a, b) => b.date.getTime() - a.date.getTime()); + return mapped.map((v) => items[v.index]); +} +exports.sortItems = sortItems; diff --git a/lib/index.js b/lib/index.js index 2ecd39d..707bae0 100644 --- a/lib/index.js +++ b/lib/index.js @@ -44,6 +44,7 @@ function run() { core.error('file is missing.'); return; } + const sort = core.getInput('sort').toLowerCase() === 'true'; const maxEntry = parseInt(core.getInput('max_entry')) || 5; const format = process.env['INPUT_FORMAT'] || '- ${monthshort} ${02day} - [${title}](${url})'; const startFlag = core.getInput('start_flag') || ''; @@ -72,6 +73,15 @@ function run() { core.error(`failed to get feed: ${e.message}`); return; } + if (sort) { + try { + allItems = feed_1.sortItems(allItems); + } + catch (e) { + core.error(`failed to sort feed items: ${e.message}`); + return; + } + } const items = allItems.slice(0, maxEntry); const newLines = format_1.formatFeeds(items, format, startFlag, endFlag); const fnewLines = newLines.join('\n'); diff --git a/package-lock.json b/package-lock.json index 61fe0c3..cc56d3b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "actions-readme-feed", - "version": "1.1.0", + "version": "1.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a0cabb1..a2f7c64 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "actions-readme-feed", - "version": "1.1.0", + "version": "1.2.0", "description": "", "main": "lib/index.js", "scripts": {