redis-smq-rest-api
Version:
REST API for RedisSMQ: OpenAPI 3 schema and Swagger UI for managing queues, messages, and consumers.
49 lines • 2.4 kB
JavaScript
import { Command } from 'commander';
import { RedisSMQRestApi } from '../src/index.js';
import { EConsoleLoggerLevel } from 'redis-smq-common';
import { DEFAULT_BASE_PATH, DEFAULT_PORT, } from '../src/config/index.js';
import { defaultConfig as defaultRedisSMQConfig } from 'redis-smq';
const defaultLogLevel = typeof defaultRedisSMQConfig.logger.options.logLevel === 'number'
? defaultRedisSMQConfig.logger.options.logLevel
: EConsoleLoggerLevel[defaultRedisSMQConfig.logger.options.logLevel];
const program = new Command();
program.name('redis-smq-rest-api').description('RedisSMQ REST API server');
program
.option('-p, --port <number>', 'Port to run the REST API on', String(DEFAULT_PORT))
.option('-b, --base-path <string>', 'Base path to mount the REST API under', DEFAULT_BASE_PATH)
.option('-c, --redis-client <ioredis|redis>', 'Redis client. Valid options are: ioredis, redis.', defaultRedisSMQConfig.redis.client)
.option('-r, --redis-host <string>', 'Redis server host', defaultRedisSMQConfig.redis.options.host)
.option('-o, --redis-port <number>', 'Redis server port', String(defaultRedisSMQConfig.redis.options.port))
.option('-d, --redis-db <number>', 'Redis database number', String(defaultRedisSMQConfig.redis.options.db))
.option('-e, --enable-log <0|1>', 'Enable console logging: 0 (disabled), 1 (enabled)', String(Number(defaultRedisSMQConfig.logger.enabled)))
.option('-v, --log-level <0|1|2|3>', `Log level. Numbers: ${EConsoleLoggerLevel.DEBUG}=DEBUG, ${EConsoleLoggerLevel.INFO}=INFO, ${EConsoleLoggerLevel.WARN}=WARN, ${EConsoleLoggerLevel.ERROR}=ERROR`, String(defaultLogLevel))
.helpOption('-h, --help', 'Display help for command');
program.parse();
const options = program.opts();
const config = {
apiServer: {
port: Number(options.port),
basePath: options.basePath,
},
redis: {
client: options.redisClient,
options: {
host: options.redisHost,
port: Number(options.redisPort),
db: Number(options.redisDb),
},
},
logger: {
enabled: Boolean(Number(options.enableLog)),
options: {
logLevel: Number(options.logLevel),
},
},
};
const api = new RedisSMQRestApi(config);
api.run().catch((err) => {
console.error(err);
process.exit(1);
});
//# sourceMappingURL=cli.js.map