ripunzel/src/app.js

42 lines
1.3 KiB
JavaScript
Raw Normal View History

2018-04-09 22:26:30 +00:00
'use strict';
const config = require('config');
const util = require('util');
const fs = require('fs-extra');
2018-04-09 22:26:30 +00:00
const snoowrap = require('snoowrap');
require('promise.prototype.finally').shim();
require('array.prototype.flatten').shim();
const reddit = new snoowrap(config.reddit.api);
2018-05-05 00:27:15 +00:00
const args = require('./cli.js');
const curatePosts = require('./curate/posts.js');
const interpolate = require('./interpolate.js');
const attachContentInfo = require('./fetch/info.js');
const fetchContent = require('./fetch/content.js');
2018-05-05 00:27:15 +00:00
const getPosts = require('./sources/getPosts.js')(reddit, args);
const getUserPosts = require('./sources/getUserPosts.js')(reddit, args);
2018-04-18 02:04:39 +00:00
if(!(args.users && args.users.length) && !(args.posts && args.posts.length)) {
return console.log('\x1b[31m%s\x1b[0m', 'Please supply at least one user with --user <user> or one post with --post <post-id>. See --help for more options.');
}
Promise.resolve().then(async () => {
let userPosts = args.users ? await getUserPosts(args.users) : {};
if(args.posts) {
userPosts = await getPosts(args.posts, userPosts);
}
const curatedPosts = curatePosts(userPosts, args);
const posts = await attachContentInfo(curatedPosts);
return fetchContent(posts);
}).catch(error => {
return console.error(error);
});