Skip to content

Commit

Permalink
feat: allow defining rcfile.preloads as a string
Browse files Browse the repository at this point in the history
  • Loading branch information
thetutlage committed Nov 25, 2019
1 parent 36e010f commit 3c69713
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 6 deletions.
21 changes: 15 additions & 6 deletions src/rcParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
/// <reference path="../adonis-typings/application.ts" />

import { Exception } from '@poppinss/utils'
import { RcFile, MetaFileNode } from '@ioc:Adonis/Core/Application'
import { RcFile, MetaFileNode, PreloadNode } from '@ioc:Adonis/Core/Application'

/**
* Default set of directories for AdonisJs
Expand Down Expand Up @@ -65,14 +65,23 @@ export function parse (contents: any): RcFile {
typescript: contents.typescript,
directories: Object.assign({}, DEFAULT_DIRECTORIES, contents.directories),
exceptionHandlerNamespace: contents.exceptionHandlerNamespace,
preloads: contents.preloads.map(({ file, optional, environment }, index: number) => {
if (!file) {
preloads: contents.preloads.map((preload: PreloadNode | string, index: number) => {
if (typeof (preload) === 'string') {
return {
file: preload,
optional: false,
environment: ['web', 'console', 'test'],
}
}

if (!preload.file) {
throw new Exception(`Invalid value for preloads[${index}]`, 500, 'E_PRELOAD_MISSING_FILE_PROPERTY')
}

return {
file,
optional: optional === undefined ? false : optional,
environment: environment === undefined ? ['web', 'console', 'test'] : environment,
file: preload.file,
optional: preload.optional === undefined ? false : preload.optional,
environment: preload.environment === undefined ? ['web', 'console', 'test'] : preload.environment,
}
}),
namespaces: Object.assign({}, DEFAULT_NAMESPACES, contents.namespaces),
Expand Down
81 changes: 81 additions & 0 deletions test/rcfile-parser.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -412,4 +412,85 @@ test.group('Rc Parser', () => {
aceProviders: ['@adonisjs/commands'],
})
})

test('define preload file as a string', (assert) => {
assert.deepEqual(parse({
preloads: ['./start/routes'],
}), {
typescript: true,
exceptionHandlerNamespace: 'App/Exceptions/Handler',
directories: {
config: 'config',
contracts: 'contracts',
providers: 'providers',
database: 'database',
migrations: 'database/migrations',
public: 'public',
resources: 'resources',
seeds: 'database/seeds',
views: 'resources/views',
start: 'start',
tmp: 'tmp',
},
namespaces: {
httpControllers: 'App/Controllers/Http',
eventListeners: 'App/Listeners',
redisListeners: 'App/Listeners',
},
preloads: [{
file: './start/routes',
environment: ['web', 'console', 'test'],
optional: false,
}],
autoloads: {},
metaFiles: [],
commands: [],
providers: [],
aceProviders: [],
})
})

test('define preload files as string and object together', (assert) => {
assert.deepEqual(parse({
preloads: ['./start/routes', { file: './start/kernel', optional: true }],
}), {
typescript: true,
exceptionHandlerNamespace: 'App/Exceptions/Handler',
directories: {
config: 'config',
contracts: 'contracts',
providers: 'providers',
database: 'database',
migrations: 'database/migrations',
public: 'public',
resources: 'resources',
seeds: 'database/seeds',
views: 'resources/views',
start: 'start',
tmp: 'tmp',
},
namespaces: {
httpControllers: 'App/Controllers/Http',
eventListeners: 'App/Listeners',
redisListeners: 'App/Listeners',
},
preloads: [
{
file: './start/routes',
environment: ['web', 'console', 'test'],
optional: false,
},
{
file: './start/kernel',
environment: ['web', 'console', 'test'],
optional: true,
},
],
autoloads: {},
metaFiles: [],
commands: [],
providers: [],
aceProviders: [],
})
})
})

0 comments on commit 3c69713

Please sign in to comment.