'use strict'; const config = require('config'); const util = require('util'); const fs = require('fs-extra'); const yargs = require('yargs').argv; const snoowrap = require('snoowrap'); const reddit = new snoowrap(config.reddit.api); const curateSubmissions = require('./curate/submissions.js'); const curateUser = require('./curate/user.js'); const methods = require('./methods/methods.js'); const interpolate = require('./interpolate.js'); const fetchInfo = require('./fetch/info.js'); const fetchContent = require('./fetch/content.js'); const save = require('./save/save.js'); const saveProfileDetails = require('./save/profileDetails.js'); const limit = yargs.limit || config.fetch.limit; if(!yargs.user && typeof yargs.users !== 'string') { return console.log('\x1b[31m%s\x1b[0m', 'Please supply at least one user with --user=[user], or multiple users with --users=[user1,user2] or --user=[user1] --user=[user2]'); } const users = yargs.users ? yargs.users.split(',') : [].concat(yargs.user); users.forEach(username => { return Promise.resolve().then(() => { return reddit.getUser(username).fetch().then(curateUser); }).then(user => { return saveProfileDetails(user); }).then(user => { return reddit.getUser(username).getSubmissions({ sort: yargs.sort || config.fetch.sort, limit: Infinity }).then(submissions => ({ user, submissions })); }).then(({user, submissions}) => { const posts = curateSubmissions(submissions).slice(0, limit); return fetchInfo(posts).then(info => ({ user, posts })); }).then(({user, posts}) => { return fetchContent(posts, user); }).catch(error => { return console.log(error); }); });