diff --git a/plugins/scaffolder-backend/.eslintrc.js b/plugins/scaffolder-backend/.eslintrc.js index 8475cfd0b8..19c9ad7395 100644 --- a/plugins/scaffolder-backend/.eslintrc.js +++ b/plugins/scaffolder-backend/.eslintrc.js @@ -4,6 +4,5 @@ module.exports = { rules: { 'no-console': 0, // Permitted in console programs 'new-cap': ['error', { capIsNew: false }], // Because Express constructs things e.g. like 'const r = express.Router()' - }, }; diff --git a/plugins/scaffolder-backend/src/scaffolder/storage/disk.test.ts b/plugins/scaffolder-backend/src/scaffolder/storage/disk.test.ts index a8120a1798..9cebb0d380 100644 --- a/plugins/scaffolder-backend/src/scaffolder/storage/disk.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/storage/disk.test.ts @@ -24,7 +24,7 @@ describe('Disk Storage', () => { ); const templateInfo = require(`${testTemplateDir}/mock-template/template-info.json`); - const repository = new DiskStorage({ directory: testTemplateDir}); + const repository = new DiskStorage({ directory: testTemplateDir }); await repository.reindex(); @@ -43,8 +43,7 @@ describe('Disk Storage', () => { '../../../test/mock-multiple-templates-dir', ); - const repository = new DiskStorage({ directory: testTemplateDir}); - + const repository = new DiskStorage({ directory: testTemplateDir }); await repository.reindex(); @@ -59,7 +58,7 @@ describe('Disk Storage', () => { '/some-folder-that-deffo-does-not-exist', ); - const repository = new DiskStorage({ directory: testTemplateDir}); + const repository = new DiskStorage({ directory: testTemplateDir }); await repository.reindex(); @@ -74,7 +73,7 @@ describe('Disk Storage', () => { '../../../test/mock-failing-template-dir', ); - const repository = new DiskStorage({ directory: testTemplateDir}); + const repository = new DiskStorage({ directory: testTemplateDir }); await repository.reindex(); diff --git a/plugins/scaffolder-backend/src/scaffolder/storage/disk.ts b/plugins/scaffolder-backend/src/scaffolder/storage/disk.ts index 860321d2e9..28236cb86f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/storage/disk.ts +++ b/plugins/scaffolder-backend/src/scaffolder/storage/disk.ts @@ -30,7 +30,13 @@ export class DiskStorage implements Base { private repoDir: string; private logger?: Logger; - constructor({ directory = `${__dirname}/../../../sample-templates`, logger }: { directory?: string, logger?: Logger }) { + constructor({ + directory = `${__dirname}/../../../sample-templates`, + logger, + }: { + directory?: string; + logger?: Logger; + }) { this.repoDir = directory; this.logger = logger; } @@ -75,26 +81,19 @@ export class DiskStorage implements Base { })), ); - const validFiles = fileContents.reduce( - (diskIndexEntries: DiskIndexEntry[], currentFile) => { - try { - const parsed: Template = JSON.parse(currentFile.contents); - return [ - ...diskIndexEntries, - { location: currentFile.location, contents: parsed }, - ]; - } catch (ex) { - this.logger?.error('Failure parsing JSON for template', { - path: currentFile.location, - }); - } + const validFiles: DiskIndexEntry[] = []; + + for (const file of fileContents) { + try { + const contents: Template = JSON.parse(file.contents); + validFiles.push({ location: file.location, contents }); + } catch (ex) { + this.logger?.error('Failure parsing JSON for template', { + path: file.location, + }); + } + } - return diskIndexEntries; - }, - [], - ); - return validFiles; - } } diff --git a/plugins/scaffolder-backend/src/scaffolder/storage/index.ts b/plugins/scaffolder-backend/src/scaffolder/storage/index.ts index 45e7c038d7..4d16224ef7 100644 --- a/plugins/scaffolder-backend/src/scaffolder/storage/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/storage/index.ts @@ -1,4 +1,4 @@ -import { Logger } from "winston"; +import { Logger } from 'winston'; /* * Copyright 2020 Spotify AB @@ -48,8 +48,6 @@ class Storage implements StorageBase { reindex = () => this.store!.reindex(); } -export const createStorage = ( - storageConfig: StorageConfig, -): StorageBase => { +export const createStorage = (storageConfig: StorageConfig): StorageBase => { return new Storage(storageConfig); }; diff --git a/plugins/scaffolder-backend/src/scaffolder/templater/index.ts b/plugins/scaffolder-backend/src/scaffolder/templater/index.ts index 21ea10db7e..6f728d4829 100644 --- a/plugins/scaffolder-backend/src/scaffolder/templater/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/templater/index.ts @@ -44,6 +44,8 @@ class Templater implements TemplaterBase { } } -export const createTemplater = (templaterConfig: TemplaterConfig): TemplaterBase => { +export const createTemplater = ( + templaterConfig: TemplaterConfig, +): TemplaterBase => { return new Templater(templaterConfig); }; diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index f1bc9c0d8f..97c177b915 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -14,7 +14,6 @@ * limitations under the License. */ - import { Logger } from 'winston'; import Router from 'express-promise-router'; import express from 'express'; @@ -22,7 +21,7 @@ import { StorageBase, TemplaterBase } from '../scaffolder'; export interface RouterOptions { storage: StorageBase; - templater: TemplaterBase, + templater: TemplaterBase; logger: Logger; } @@ -30,21 +29,22 @@ export async function createRouter( options: RouterOptions, ): Promise { const router = Router(); - const {storage, templater, logger: parentLogger} = options; + const { storage, templater, logger: parentLogger } = options; const logger = parentLogger.child({ plugin: 'scaffolder' }); router .get('/v1/templates', async (_, res) => { const templates = await storage.list(); res.status(200).json(templates); - }).post('/v1/job/create', async (_, res) => { + }) + .post('/v1/jobs', async (_, res) => { // TODO(blam): Actually make this function work const mock = 'templateid'; res.status(201).json({ accepted: true }); const path = await storage.prepare(mock); await templater.run({ directory: path, values: { componentId: 'test' } }); - }); + }); const app = express(); app.set('logger', logger); diff --git a/plugins/scaffolder-backend/src/service/standaloneApplication.ts b/plugins/scaffolder-backend/src/service/standaloneApplication.ts index 1b9f0f1e7b..3ff1de01eb 100644 --- a/plugins/scaffolder-backend/src/service/standaloneApplication.ts +++ b/plugins/scaffolder-backend/src/service/standaloneApplication.ts @@ -30,7 +30,7 @@ import { createRouter } from './router'; export interface ApplicationOptions { enableCors: boolean; storage: StorageBase; - templater: TemplaterBase; + templater: TemplaterBase; logger: Logger; } diff --git a/plugins/scaffolder-backend/src/service/standaloneServer.ts b/plugins/scaffolder-backend/src/service/standaloneServer.ts index fc980875bc..b89e806f72 100644 --- a/plugins/scaffolder-backend/src/service/standaloneServer.ts +++ b/plugins/scaffolder-backend/src/service/standaloneServer.ts @@ -37,7 +37,7 @@ export async function startStandaloneServer( const store = new DiskStorage({ logger }); const templater = new CookieCutter(); logger.debug('Creating application...'); - + const app = await createStandaloneApplication({ enableCors: options.enableCors, storage: createStorage({ store, logger }), diff --git a/prettier.config.js b/prettier.config.js index 93df970dd6..e12d35a880 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -1 +1,16 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = require('@spotify/web-scripts/config/prettier.config.js');