@gameroom/cli
Version:
A command line tool for Gameroom
405 lines (400 loc) • 14.8 kB
JavaScript
const cosmetic = require('cosmetic'),
{ dollarString, getAll, grGreen, nearestDime, percentageDifference, timeout, writeCSVFile } = require('../helpers'),
{ Price_Charting } = require('../models'),
{ models: { Price, Product } } = require('@gameroom/kit'),
{ spinner } = require('../refs')
module.exports = async (options) => {
const all = !options.ps5 &&
!options['xbox-series-x'] &&
!options.ps4 &&
!options['xbox-one'] &&
!options.switch &&
!options['wii-u'] &&
!options.ps3 &&
!options['xbox-360'] &&
!options.wii &&
!options.ps2 &&
!options.xbox &&
!options.gamecube &&
!options.ps1 &&
!options.dreamcast &&
!options['sega-cd'] &&
!options.saturn &&
!options['3ds'] &&
!options.ds &&
!options.gba &&
!options.gbc &&
!options.gb &&
!options['cd-i'] &&
!options['3do'] &&
!options.nes &&
!options.snes &&
!options.n64 &&
!options.genesis &&
!options['32x'] &&
!options['master-system'] &&
!options.atari &&
!options.intellivision &&
!options.colecovision &&
!options.psp &&
!options.vita &&
!options['game-gear'] &&
!options.none
spinner.info(`getting ${all ? 'all ' : ''}console ${grGreen('products')}`)
const sort = [{ name: 1 }],
total = [],
video_game = { key: 'tags', comparison: 'contains', value: 'Video Games' }
if (all || options.ps5) {
// ps5
spinner.text = `getting ps5 ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'PS5' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} ps5 ${grGreen('products')}`)
}
if (all || options['xbox-series-x']) {
// xbox series x
spinner.text = `getting xbox series x ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Xbox Series X' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} xbox series x ${grGreen('products')}`)
}
if (all || options.ps4) {
// ps4
spinner.text = `getting ps4 ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'PS4' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} ps4 ${grGreen('products')}`)
}
if (all || options['xbox-one']) {
// xbox one
spinner.text = `getting xbox one ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: {
and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Xbox One' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} xbox one ${grGreen('products')}`)
}
// switch
if (all || options.switch) {
spinner.text = `getting switch ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Switch' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} switch ${grGreen('products')}`)
}
// wii u
if (all || options['wii-u']) {
spinner.text = `getting wii u ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Wii U' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} wii u ${grGreen('products')}`)
}
// ps3
if (all || options.ps3) {
spinner.text = `getting ps3 ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'PS3' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} ps3 ${grGreen('products')}`)
}
// xbox 360
if (all || options['xbox-360']) {
spinner.text = `getting xbox 360 ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Xbox 360' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} xbox 360 ${grGreen('products')}`)
}
// wii
if (all || options.wii) {
spinner.text = `getting wii ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Wii' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} wii ${grGreen('products')}`)
}
// ps2
if (all || options.ps2) {
spinner.text = `getting ps2 ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'PS2' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} ps2 ${grGreen('products')}`)
}
// xbox
if (all || options.xbox) {
spinner.text = `getting xbox ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Xbox' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} xbox ${grGreen('products')}`)
}
// gamecube
if (all || options.gamecube) {
spinner.text = `getting gamecube ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Gamecube' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} gamecube ${grGreen('products')}`)
}
// ps1
if (all || options.ps1) {
spinner.text = `getting ps1 ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'PS1' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} ps1 ${grGreen('products')}`)
}
// dreamcast
if (all || options.dreamcast) {
spinner.text = `getting dreamcast ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Dreamcast' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} dreamcast ${grGreen('products')}`)
}
// sega_cd
if (all || options['sega-cd']) {
spinner.text = `getting sega cd ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Sega CD' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} sega cd ${grGreen('products')}`)
}
// saturn
if (all || options.saturn) {
spinner.text = `getting saturn ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Saturn' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} saturn ${grGreen('products')}`)
}
// 3DS
if (all || options['3ds']) {
spinner.text = `getting 3ds ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: '3DS' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} 3ds ${grGreen('products')}`)
}
// DS
if (all || options.ds) {
spinner.text = `getting ds ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'DS' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} ds ${grGreen('products')}`)
}
// Gameboy Advance
if (all || options.gba) {
spinner.text = `getting gameboy advance ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Gameboy Advance' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} gameboy advance ${grGreen('products')}`)
}
// Gameboy Color
if (all || options.gbc) {
spinner.text = `getting gameboy color ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Gameboy Color' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} gameboy color ${grGreen('products')}`)
}
// Gameboy
if (all || options.gb) {
spinner.text = `getting gameboy ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Gameboy' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} gameboy ${grGreen('products')}`)
}
// CD-i
if (all || options['cd-i']) {
spinner.text = `getting cd-i ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'CD-i' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} cd-i ${grGreen('products')}`)
}
// 3DO
if (all || options['3do']) {
spinner.text = `getting 3do ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: '3DO' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} 3do ${grGreen('products')}`)
}
// NES
if (all || options.nes) {
spinner.text = `getting nes ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'NES' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} nes ${grGreen('products')}`)
}
// SNES
if (all || options.snes) {
spinner.text = `getting snes ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'SNES' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} snes ${grGreen('products')}`)
}
// N64
if (all || options.n64) {
spinner.text = `getting n64 ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'N64' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} n64 ${grGreen('products')}`)
}
// Genesis
if (all || options.genesis) {
spinner.text = `getting genesis ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Genesis' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} genesis ${grGreen('products')}`)
}
// 32X
if (all || options['32x']) {
spinner.text = `getting 32x ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: '32X' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} 32x ${grGreen('products')}`)
}
// Master System
if (all || options['master-system']) {
spinner.text = `getting master system ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Master System' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} master system ${grGreen('products')}`)
}
// Atari
if (all || options.atari) {
spinner.text = `getting atari ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Atari' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} atari ${grGreen('products')}`)
}
// Intellivision
if (all || options.intellivision) {
spinner.text = `getting intellivision ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Intellivision' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} intellivision ${grGreen('products')}`)
}
// Colecovision
if (all || options.colecovision) {
spinner.text = `getting colecovision ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Colecovision' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} colecovision ${grGreen('products')}`)
}
// PSP
if (all || options.psp) {
spinner.text = `getting psp ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'PSP' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} psp ${grGreen('products')}`)
}
// Vita
if (all || options.vita) {
spinner.text = `getting vita ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Vita' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} vita ${grGreen('products')}`)
}
// Game Gear
if (all || options['game-gear']) {
spinner.text = `getting game gear ${grGreen('products')}`
const products = await getAll(Product, {
sort,
filter: { and: [ video_game, { key: 'tags', comparison: 'contains', value: 'Game Gear' } ] }
}, spinner)
total.push(...products)
spinner.succeed(`got ${products.length} game gear ${grGreen('products')}`)
}
options.products = total
spinner.succeed(`got ${total.length} total ${grGreen('products')}`)
}