diff --git a/_templates/service/new/service.ejs.t b/_templates/service/new/service.ejs.t new file mode 100644 index 00000000..8ec0f8c9 --- /dev/null +++ b/_templates/service/new/service.ejs.t @@ -0,0 +1,33 @@ +--- +to: packages/daemon/src/services/<%= name %>.ts +--- +<% +const { changeCase, inflection } = h +const { dasherize } = inflection +const { upper, camel, pascal, snake, lower } = changeCase +const nameName = camel(name) +const NameName = pascal(name) +const NAME_NAME = upper(snake(NameName)) +const name_name = lower(NAME_NAME) +const dashName = dasherize(name_name) +h.replace('./packages/daemon/src/server.ts', /\/\/ gen:import/, `import { ${nameName}Service } from './services/${NameName}'\n // gen:import`); +h.replace('./packages/daemon/src/server.ts', /\/\/ gen:service/, `await ${nameName}Service({ logger })\n // gen:service`); + +%> +import { mkSingleton, SingletonBaseConfig } from '@pockethost/common' + +export type <%=NameName%>ServiceConfig = SingletonBaseConfig & {} + +export const <%=nameName%>Service = mkSingleton( + async (config: <%=NameName%>ServiceConfig) => { + const { logger } = config + const _serviceLogger = logger.create('<%=NameName%>Service') + const { dbg, error, warn, abort } = _serviceLogger + + dbg(`Initializing <%=NameName%>Service`) + + return { + shutdown: async () => {}, + } + } +) diff --git a/packages/daemon/src/server.ts b/packages/daemon/src/server.ts index 47af1340..8357e249 100644 --- a/packages/daemon/src/server.ts +++ b/packages/daemon/src/server.ts @@ -20,6 +20,7 @@ import { logger as loggerService } from '@pockethost/common' import { exec } from 'child_process' import { centralDbService } from './services/CentralDbService' import { instanceLoggerService } from './services/InstanceLoggerService' +// gen:import loggerService({ debug: DEBUG, trace: TRACE, errorTrace: !DEBUG }) @@ -92,6 +93,7 @@ global.EventSource = require('eventsource') instanceApiTimeoutMs: 1000, }) await centralDbService({ logger }) + // gen:service info(`Hooking into process exit event`)