1
+ import path from 'path' ;
1
2
import * as _ from 'lodash-es' ;
2
3
import * as chassis from '@restorecommerce/chassis-srv' ;
3
4
import { Events , Topic , registerProtoMeta } from '@restorecommerce/kafka-client' ;
@@ -335,9 +336,10 @@ export class Worker {
335
336
} as BindConfig < HealthDefinition > ) ;
336
337
337
338
// Hook any external jobs
338
- let externalJobFiles ;
339
+ const externalJobDir = process . env . EXTERNAL_JOBS_DIR ?? cfg . get ( 'externalJobs:sourcePath' ) ?? './lib/external-jobs' ;
340
+ let externalJobFiles : Array < string > ;
339
341
try {
340
- externalJobFiles = fs . readdirSync ( process . env . EXTERNAL_JOBS_DIR || './lib/external-jobs' ) ;
342
+ externalJobFiles = fs . readdirSync ( process . env . EXTERNAL_JOBS_DIR ?? './lib/external-jobs' ) ;
341
343
} catch ( err : any ) {
342
344
if ( err . message . includes ( 'no such file or directory' ) ) {
343
345
this . logger . info ( 'No files for external job processors found' ) ;
@@ -348,17 +350,17 @@ export class Worker {
348
350
if ( externalJobFiles ?. length > 0 ) {
349
351
externalJobFiles . forEach ( async ( externalFile ) => {
350
352
if ( externalFile . endsWith ( '.js' ) || externalFile . endsWith ( '.cjs' ) ) {
351
- const require_dir = process . env . EXTERNAL_JOBS_REQUIRE_DIR ?? './ jobs/';
353
+ const import_dir = process . env . EXTERNAL_JOBS_REQUIRE_DIR ?? cfg . get ( 'externalJobs:importPath' ) ?? './external- jobs/';
352
354
353
355
try {
354
- const fileImport = await import ( require_dir + externalFile ) ;
356
+ const fileImport = await import ( path . join ( import_dir , externalFile ) ) ;
355
357
// check for double default
356
358
if ( fileImport ?. default ?. default ) {
357
- ( async ( ) => ( await import ( require_dir + externalFile ) ) . default . default ( cfg , logger , events , runWorker ) ) ( ) . catch ( err => {
359
+ ( async ( ) => ( await import ( import_dir + externalFile ) ) . default . default ( cfg , logger , events , runWorker ) ) ( ) . catch ( err => {
358
360
this . logger . error ( `Error scheduling external job ${ externalFile } ` , { err : err . message } ) ;
359
361
} ) ;
360
362
} else {
361
- ( async ( ) => ( await import ( require_dir + externalFile ) ) . default ( cfg , logger , events , runWorker ) ) ( ) . catch ( err => {
363
+ ( async ( ) => ( await import ( import_dir + externalFile ) ) . default ( cfg , logger , events , runWorker ) ) ( ) . catch ( err => {
362
364
this . logger . error ( `Error scheduling external job ${ externalFile } ` , { err : err . message } ) ;
363
365
} ) ;
364
366
}
0 commit comments