From 57aecd596a3f8f9ddb7c49a89354c4d93de3de50 Mon Sep 17 00:00:00 2001 From: Marcelo Shima Date: Thu, 29 Jun 2023 09:23:34 -0300 Subject: [PATCH 1/2] edit properties file using dto-properties lib --- .../server/support/spring-factories.mts | 21 ++++++-------- .../server/support/spring-factories.spec.mts | 28 ++++++++----------- package-lock.json | 6 ++++ package.json | 1 + 4 files changed, 26 insertions(+), 30 deletions(-) diff --git a/generators/server/support/spring-factories.mts b/generators/server/support/spring-factories.mts index 2210c67e30dd..438d6df0ce94 100644 --- a/generators/server/support/spring-factories.mts +++ b/generators/server/support/spring-factories.mts @@ -1,20 +1,15 @@ -import _ from 'lodash'; - -const { escapeRegExp } = _; +import properties from 'dot-properties'; // eslint-disable-next-line import/prefer-default-export export const addSpringFactory = ({ key, value }) => content => { - const match = content?.match(`${escapeRegExp(key)}(\\w*)=`); - if (match) { - const matchEnd = match.index + match[0].length; - content = `${content.slice(0, matchEnd)}\\ -${value},${content.slice(matchEnd)}`; - } else { - content = `${content ? `${content.trimEnd()}\n\n` : ''}${key}=\\ -${value} -`; + const obj = properties.parse(content ?? ''); + const oldContent = obj[key] as string; + const factories = (oldContent?.split(',') ?? []).map(val => val.trim()); + if (factories.includes(value)) { + return content; } - return content; + obj[key] = [...factories, value].join(','); + return properties.stringify(obj); }; diff --git a/generators/server/support/spring-factories.spec.mts b/generators/server/support/spring-factories.spec.mts index 18b9d8dd8143..5d97b811f4ad 100644 --- a/generators/server/support/spring-factories.spec.mts +++ b/generators/server/support/spring-factories.spec.mts @@ -5,31 +5,25 @@ import { addSpringFactory } from './spring-factories.mjs'; describe('generator - server - support - spring-factories', () => { describe('addSpringFactory', () => { it('should add the first property', () => { - expect(addSpringFactory({ key: 'key.prop', value: 'value' })(null)).toBe(`key.prop=\\ -value -`); + expect(addSpringFactory({ key: 'key.prop', value: 'value' })(null)).toBe('key.prop = value'); + }); + it('should add wrap long value', () => { + expect(addSpringFactory({ key: 'key.prop', value: '12345678901234567890123456789012345678901234567890' })(null)).toBe( + 'key.prop = 12345678901234567890123456789012345678901234567890' + ); }); it('should add a new value to a property', () => { expect( addSpringFactory({ key: 'key.prop', value: 'new.value' })(`key.prop=\\ -value -`) - ).toBe(`key.prop=\\ -new.value,\\ -value -`); +value`) + ).toBe('key.prop = value,new.value'); }); it('should add a new property', () => { expect( - addSpringFactory({ key: 'key.prop2', value: 'new.value' })(`key.prop=\\ -value + addSpringFactory({ key: 'key.prop2', value: 'new.value' })(`key.prop = value `) - ).toBe(`key.prop=\\ -value - -key.prop2=\\ -new.value -`); + ).toBe(`key.prop = value +key.prop2 = new.value`); }); }); }); diff --git a/package-lock.json b/package-lock.json index 7855c79908df..b926d03cb2b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "debug": "4.3.4", "didyoumean": "1.2.2", "dockerfile-ast": "0.5.0", + "dot-properties": "^1.0.1", "ejs": "3.1.9", "escape-string-regexp": "5.0.0", "execa": "7.1.1", @@ -4918,6 +4919,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/dot-properties": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dot-properties/-/dot-properties-1.0.1.tgz", + "integrity": "sha512-cjIHHKlf2dPINJ5Io3lPocWvWmthXn3ztqyHVzUfufRiCiPECb0oiEqEGbEGaunFZtcMvwgUcxP9CTpLG4KCsA==" + }, "node_modules/drange": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", diff --git a/package.json b/package.json index e0f1d3db6033..af3a1643070c 100644 --- a/package.json +++ b/package.json @@ -104,6 +104,7 @@ "debug": "4.3.4", "didyoumean": "1.2.2", "dockerfile-ast": "0.5.0", + "dot-properties": "^1.0.1", "ejs": "3.1.9", "escape-string-regexp": "5.0.0", "execa": "7.1.1", From 13adcd4d46f5acc2267024e4a78384b4abcf9323 Mon Sep 17 00:00:00 2001 From: Marcelo Shima Date: Thu, 29 Jun 2023 10:10:14 -0300 Subject: [PATCH 2/2] use fixed dot-properties version --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b926d03cb2b8..f8d33ceeeec8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "debug": "4.3.4", "didyoumean": "1.2.2", "dockerfile-ast": "0.5.0", - "dot-properties": "^1.0.1", + "dot-properties": "1.0.1", "ejs": "3.1.9", "escape-string-regexp": "5.0.0", "execa": "7.1.1", diff --git a/package.json b/package.json index af3a1643070c..45a47a7da1ab 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "debug": "4.3.4", "didyoumean": "1.2.2", "dockerfile-ast": "0.5.0", - "dot-properties": "^1.0.1", + "dot-properties": "1.0.1", "ejs": "3.1.9", "escape-string-regexp": "5.0.0", "execa": "7.1.1",