Files
zipline/setup.js
dicedtomatoreal 880dd6534d ccoeit
2020-10-14 17:08:26 -07:00

119 lines
2.5 KiB
JavaScript

/* eslint-disable @typescript-eslint/no-var-requires */
const inquirer = require('inquirer');
const { stringify } = require('toml-patch');
const { writeFileSync } = require('fs');
const base = {
database: {},
meta: {
title: 'Zipline',
description: 'My Zipline Server',
thumbnail:
'https://github.githubassets.com/images/modules/open_graph/github-mark.png',
color: '#128377',
},
core: { secret: 'my-secret', port: 3000 },
uploader: {
directory: './uploads',
route: '/u',
length: 6,
original: false,
blacklisted: [],
},
urls: { route: '/s', length: 4, vanity: false },
};
(async () => {
const database = await inquirer.prompt([
{
type: 'list',
name: 'database',
message: 'What database type?',
choices: [
{ name: 'postgres', extra: 'This is what we recomend using.' },
{ name: 'cockroachdb' },
{ name: 'mysql' },
{ name: 'mariadb' },
{ name: 'mssql' },
{ name: 'sqlite' },
{ name: 'sqlite3' },
{ name: 'mongodb', extra: 'No support yet' },
],
},
{
type: 'input',
name: 'host',
message: 'Database Host',
},
{
type: 'number',
name: 'port',
message: 'Database Port',
},
{
type: 'input',
name: 'username',
message: 'Database User',
},
{
type: 'password',
name: 'password',
message: 'Database Password',
},
{
type: 'input',
name: 'database',
message: 'Database',
},
]);
console.log('\nCore\n');
const core = await inquirer.prompt([
{
type: 'input',
name: 'secret',
message: 'Secret (this must be secure)',
},
{
type: 'number',
name: 'port',
message: 'Serve on Port',
},
]);
console.log('\nUploader\n');
const uploader = await inquirer.prompt([
{
type: 'input',
name: 'directory',
message: 'Uploads Directory',
},
{
type: 'confirm',
name: 'original',
message: 'Keep Original?',
},
]);
console.log('\nURLs\n');
const urls = await inquirer.prompt([
{
type: 'confirm',
name: 'vanity',
message: 'Allow vanity URLs',
},
]);
const config = {
database: { ...database },
meta: { ...base.meta },
core: { ...base.core, ...core },
uploader: { ...base.uploader, ...uploader },
urls: { ...base.urls, ...urls },
};
writeFileSync('Zipliner.toml', stringify(config));
})();