mirror of
https://github.com/diced/zipline.git
synced 2025-05-11 10:26:05 +02:00
118 lines
2.4 KiB
JavaScript
118 lines
2.4 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: 'type',
|
|
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: 'database',
|
|
message: 'Database Name'
|
|
},
|
|
{
|
|
type: 'input',
|
|
name: 'username',
|
|
message: 'Database User'
|
|
},
|
|
{
|
|
type: 'password',
|
|
name: 'password',
|
|
message: 'Database Password'
|
|
}
|
|
]);
|
|
|
|
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('Zipline.toml', stringify(config));
|
|
})();
|