2018-04-09 22:26:30 +00:00
'use strict' ;
const config = require ( 'config' ) ;
2018-04-15 01:55:10 +00:00
const util = require ( 'util' ) ;
2018-04-22 21:46:14 +00:00
const fs = require ( 'fs-extra' ) ;
2018-04-09 22:26:30 +00:00
const snoowrap = require ( 'snoowrap' ) ;
2018-05-04 22:51:58 +00:00
require ( 'promise.prototype.finally' ) . shim ( ) ;
require ( 'array.prototype.flatten' ) . shim ( ) ;
2018-04-22 21:46:14 +00:00
2018-04-22 23:50:07 +00:00
const reddit = new snoowrap ( config . reddit . api ) ;
2018-05-05 00:27:15 +00:00
const args = require ( './cli.js' ) ;
2018-04-22 23:50:07 +00:00
2018-04-29 00:02:34 +00:00
const curatePosts = require ( './curate/posts.js' ) ;
2018-04-22 23:50:07 +00:00
2018-04-22 21:46:14 +00:00
const interpolate = require ( './interpolate.js' ) ;
2018-04-29 00:02:34 +00:00
const attachContentInfo = require ( './fetch/info.js' ) ;
2018-04-22 23:50:07 +00:00
const fetchContent = require ( './fetch/content.js' ) ;
2018-04-22 21:46:14 +00:00
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
2018-04-29 00:02:34 +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.' ) ;
2018-04-22 21:46:14 +00:00
}
2018-05-27 23:42:46 +00:00
Promise . resolve ( ) . then ( async ( ) => {
let userPosts = args . users ? await getUserPosts ( args . users ) : { } ;
2018-05-04 22:51:58 +00:00
2018-04-29 00:02:34 +00:00
if ( args . posts ) {
2018-05-27 23:42:46 +00:00
userPosts = await getPosts ( args . posts , userPosts ) ;
2018-04-29 00:02:34 +00:00
}
2018-05-27 23:42:46 +00:00
const curatedPosts = curatePosts ( userPosts , args ) ;
const posts = await attachContentInfo ( curatedPosts ) ;
2018-05-04 22:51:58 +00:00
return fetchContent ( posts ) ;
2018-04-29 00:02:34 +00:00
} ) . catch ( error => {
return console . error ( error ) ;
2018-04-22 21:46:14 +00:00
} ) ;