You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ass/setup.js

84 lines
2.1 KiB

const { path, log } = require('./utils');
const fs = require('fs-extra');
const prompt = require('prompt');
// Disabled the annoying "prompt: " prefix and removes colours
prompt.message = '';
prompt.colors = false;
prompt.start();
// Default configuration
const config = {
host: '0.0.0.0',
port: 40115,
domain: 'upload.example.com',
useSsl: true,
resourceIdSize: 12,
//resourceIdType: original/zws/random
};
// Schema for setup prompts
const setupSchema = {
properties: {
host: {
description: `Local IP to listen on`,
type: 'string',
default: config.host,
required: false
},
port: {
description: `Port number to listen on`,
type: 'integer',
default: config.port,
required: false
},
domain: {
description: `Domain name to send to ShareX clients (example: ${config.domain})`,
type: 'string',
required: true,
message: 'You must input a valid domain name or IP to continue'
},
useSsl: {
description: `Use SSL (requires reverse proxy!)`,
type: 'boolean',
default: config.useSsl,
required: false
},
resourceIdSize: {
description: `Resource ID size (by using a higher value, you will be able to upload more files)`,
type: 'integer',
default: config.resourceIdSize,
required: false
}
}
};
// Schema for confirm prompt. User must enter 'y' or 'n' (case-insensitive)
const confirmSchema = {
properties: {
confirm: {
description: '\nIs the above information correct? (y/n)',
type: 'string',
pattern: /^[y|n]/gim,
message: 'Must respond with either \'y\' or \'n\'',
default: 'y',
required: false,
before: (value) => value.toLowerCase().startsWith('y')
}
}
};
function setup() {
log('<<< anssxustawai setup >>>\n');
let results;
prompt.get(setupSchema)
.then((r) => results = r)
.then(() => log('\nPlease verify your information:\n\n' + Object.keys(results).map((result) => (` ${result}: ${results[result]}`)).join('\n') + '\n'))
.then(() => prompt.get(confirmSchema))
.then(({ confirm }) => confirm ? fs.writeJson(path('config.json'), results, { spaces: 4 }) : process.exit(1))
.then(() => log('\nConfig has been saved!'))
.catch((err) => console.error(err));
}
setup();