knex/bin/utils/cli-config-utils.js

62 lines
1.5 KiB
JavaScript

const { DEFAULT_EXT, DEFAULT_TABLE_NAME } = require('./constants');
const { resolveClientNameWithAliases } = require('../../src/helpers');
const fs = require('fs');
function mkConfigObj(opts) {
if (!opts.client) {
const path = resolveDefaultKnexfilePath();
throw new Error(
`No default configuration file '${path}' found and no commandline connection parameters passed`
);
}
const envName = opts.env || process.env.NODE_ENV || 'development';
const resolvedClientName = resolveClientNameWithAliases(opts.client);
const useNullAsDefault = resolvedClientName === 'sqlite3';
return {
ext: DEFAULT_EXT,
[envName]: {
useNullAsDefault,
client: opts.client,
connection: opts.connection,
migrations: {
directory: opts.migrationsDirectory,
tableName: opts.migrationsTableName || DEFAULT_TABLE_NAME,
},
},
};
}
function resolveKnexFilePath() {
const jsPath = resolveDefaultKnexfilePath('js');
if (fs.existsSync(jsPath)) {
return {
path: jsPath,
extension: 'js',
};
}
const tsPath = resolveDefaultKnexfilePath('ts');
if (fs.existsSync(tsPath)) {
return {
path: tsPath,
extension: 'ts',
};
}
console.warn(
`Failed to find configuration at default location of ${resolveDefaultKnexfilePath(
'js'
)}`
);
}
function resolveDefaultKnexfilePath(extension) {
return process.cwd() + `/knexfile.${extension}`;
}
module.exports = {
mkConfigObj,
resolveKnexFilePath,
};