119 lines
4.1 KiB
JavaScript
119 lines
4.1 KiB
JavaScript
'use strict';
|
|
|
|
const config = require('config');
|
|
const yargs = require('yargs');
|
|
|
|
function getArgs() {
|
|
const args = yargs
|
|
.command('npm start -- --user <username>')
|
|
.option('users', {
|
|
alias: 'user',
|
|
describe: 'Reddit usernames to fetch posts from',
|
|
type: 'array',
|
|
})
|
|
.option('file-users', {
|
|
describe: 'Load reddit usernames from file',
|
|
type: 'string',
|
|
})
|
|
.option('posts', {
|
|
alias: 'post',
|
|
describe: 'Reddit post IDs to fetch',
|
|
type: 'array',
|
|
})
|
|
.option('file-posts', {
|
|
describe: 'Load reddit post IDs from file',
|
|
type: 'string',
|
|
})
|
|
.option('direct', {
|
|
describe: 'Get content directly from imgur and other hosts',
|
|
type: 'string',
|
|
alias: 'fetch',
|
|
})
|
|
.option('file-direct', {
|
|
describe: 'Load direct content URLs from file',
|
|
type: 'string',
|
|
alias: 'file-fetch',
|
|
})
|
|
.option('label', {
|
|
describe: 'Arbitrary variable made available in path patterns. Useful to organize files from a URL lists in directory.',
|
|
type: 'string',
|
|
})
|
|
.option('base', {
|
|
describe: 'Alternative base path, overriding both the default posts and direct base paths.',
|
|
type: 'string',
|
|
})
|
|
.option('limit', {
|
|
describe: 'Maximum amount of posts to fetch per supplied user (!), after filtering out ignored, cross- and reposts',
|
|
type: 'number',
|
|
default: config.fetch.limit,
|
|
})
|
|
.option('sort', {
|
|
describe: 'Property to sort posts by',
|
|
choices: ['new', 'top', 'hot', 'controversial'],
|
|
default: config.fetch.sort,
|
|
})
|
|
.option('ignore', {
|
|
describe: 'Ignore posts with any of these properties',
|
|
type: 'array',
|
|
choices: ['pinned', 'stickied', 'hidden', 'spoiler', 'over_18'],
|
|
})
|
|
.option('file-ignore', {
|
|
describe: 'Ignore the host IDs in this file',
|
|
type: 'string',
|
|
})
|
|
.option('include', {
|
|
describe: 'Include only these sources',
|
|
type: 'array',
|
|
})
|
|
.option('exclude', {
|
|
describe: 'Do not include these sources',
|
|
type: 'array',
|
|
})
|
|
.option('after', {
|
|
describe: 'Only include posts after this date (YYYY-MM-DD, optionally HH:mm)',
|
|
})
|
|
.option('before', {
|
|
describe: 'Only include posts before this date (YYYY-MM-DD, optionally HH:mm)',
|
|
})
|
|
.option('after-indexed', {
|
|
alias: 'after-index',
|
|
describe: 'Only include posts after the oldest or the latest entry in the index',
|
|
choices: ['oldest', 'latest'],
|
|
})
|
|
.option('before-indexed', {
|
|
alias: 'before-index',
|
|
describe: 'Only include posts before the oldest or the latest entry in the index',
|
|
choices: ['oldest', 'latest'],
|
|
})
|
|
.option('redownload', {
|
|
describe: 'Ignore index file and force a redownload of everything in the selection. Does not affect [before|after]-indexed',
|
|
type: 'boolean',
|
|
})
|
|
.option('redownload-profile', {
|
|
describe: 'Ignore index file and force a redownload of the profile image and description',
|
|
type: 'boolean',
|
|
})
|
|
.option('index-ignored', {
|
|
describe: 'Add posts specified to be ignored to the index file, but don\'t download them',
|
|
type: 'boolean',
|
|
})
|
|
.option('watch', {
|
|
describe: 'Keep the process running and periodically check for new posts',
|
|
type: 'boolean',
|
|
})
|
|
.option('archives', {
|
|
describe: 'Search archives for deleted posts',
|
|
type: 'boolean',
|
|
default: config.fetch.archives.search,
|
|
})
|
|
.argv;
|
|
|
|
return {
|
|
...args,
|
|
after: args.after ? new Date(args.after) : null,
|
|
before: args.before ? new Date(args.before) : null,
|
|
};
|
|
}
|
|
|
|
module.exports = getArgs;
|