@docupace/pipeline 1.0.33 → 1.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docupace/pipeline",
3
- "version": "1.0.33",
3
+ "version": "1.0.34",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -1,4 +1,4 @@
1
- import fs from 'fs';
1
+ import fs from 'fs-extra';
2
2
  import path from 'path';
3
3
  import axios from 'axios';
4
4
  import crypto from 'crypto';
@@ -7,10 +7,15 @@ import {
7
7
  cloneEnvRepository,
8
8
  readDeployConfig,
9
9
  pushDeployConfig,
10
+ cloneRepository,
10
11
  } from '../next/deploy.js';
11
12
 
12
13
  import { getVaultSecrets, updateVaultSecrets } from './vault.js';
13
- import { getVaultSecretsConfigs, environmentConfig } from '../next/config.js';
14
+ import {
15
+ getVaultSecretsConfigs,
16
+ environmentConfig,
17
+ coreSiteEnvMap,
18
+ } from '../next/config.js';
14
19
 
15
20
  async function ensureDirectoryExists(dirPath) {
16
21
  try {
@@ -197,7 +202,6 @@ externalConnectService:
197
202
  domain: ${docupaceHost}
198
203
  `.trim();
199
204
 
200
- // Write configuration files
201
205
  console.log('Writing configuration files...');
202
206
  await ensureDirectoryExists(path.resolve(`${repoPath}/dp/${site}`));
203
207
 
@@ -225,11 +229,75 @@ externalConnectService:
225
229
  },
226
230
  );
227
231
  console.log('Done!');
232
+ console.log('Updating Core Site Config...');
233
+ await updateCoreSiteConfig(site, env, useS3);
228
234
  } catch (error) {
229
235
  console.error('Error configuring UI:', error);
230
236
  }
231
237
  }
232
238
 
239
+ export async function cleanAndWritePropertiesFile(configPath, content) {
240
+ try {
241
+ const cleanedContent = content
242
+ .split('\n')
243
+ .map((line) => line.trim())
244
+ .filter((line) => line !== '')
245
+ .join('\n');
246
+
247
+ await fs.writeFile(configPath, cleanedContent, 'utf8');
248
+ console.log(`Cleaned and written file to: ${configPath}`);
249
+ } catch (error) {
250
+ console.error('Error writing properties file:', error.message);
251
+ process.exit(1);
252
+ }
253
+ }
254
+
255
+ export async function updateCoreSiteConfig(site, env, useS3) {
256
+ try {
257
+ const coreSiteEnv = coreSiteEnvMap[env];
258
+
259
+ const coreSiteConfigRepoPath = await cloneRepository(
260
+ `${coreSiteEnv}-site-settings`,
261
+ );
262
+
263
+ const configPath = path.join(
264
+ `${coreSiteEnv}-site-settings`,
265
+ site.toUpperCase(),
266
+ 'docucore-nextUI.properties',
267
+ );
268
+
269
+ let siteAWSSecrets = null;
270
+
271
+ if (useS3 === true || useS3 === 'true') {
272
+ const siteAWSSecretsPath = getVaultSecretsConfigs(site).awsSecretsPath;
273
+ siteAWSSecrets = await getVaultSecrets(siteAWSSecretsPath);
274
+ console.log(`siteAWSSecretsPath => ${siteAWSSecretsPath}`);
275
+ }
276
+
277
+ const coreSiteConfig = `
278
+ ${
279
+ siteAWSSecrets
280
+ ? `
281
+ com.docupace.imports.files.FilesImportConfig.aws.accessKeyId=${siteAWSSecrets.AWS_ACCESS_KEY_ID}
282
+ com.docupace.imports.files.FilesImportConfig.aws.accessKeySecret=${siteAWSSecrets.AWS_SECRET_ACCESS_KEY}
283
+ com.docupace.imports.files.FilesImportConfig.aws.region=${siteAWSSecrets.AWS_REGION}
284
+ `.trim()
285
+ : ''
286
+ }
287
+ `;
288
+
289
+ await fs.ensureDir(path.join(coreSiteConfigRepoPath, site.toUpperCase()));
290
+ await cleanAndWritePropertiesFile(configPath, coreSiteConfig);
291
+ await pushDeployConfig(
292
+ coreSiteConfigRepoPath,
293
+ `Core config: docucore-nextUI.properties for site: (${site.toUpperCase()}) update in env: (${env})`,
294
+ );
295
+ } catch (error) {
296
+ console.error('Error:', error.message);
297
+ process.exit(1);
298
+ }
299
+ }
300
+
233
301
  async function configureGraphQLServer(
234
302
  siteHost,
235
303
  coreURL,
@@ -80,5 +80,14 @@ export const getVaultSecretsConfigs = (site) => {
80
80
  siteCommonSecretsPath: `secret/data/${site}/common/config`,
81
81
  graphqlServerSecretsPath: `secret/data/${site}/graphql-server/config`,
82
82
  uiSecretsPath: `secret/data/${site}/ui/config`,
83
+ awsSecretsPath: `secret/data/${site}/aws/config`,
83
84
  };
84
85
  };
86
+
87
+ export const coreSiteEnvMap = {
88
+ dev: 'dev',
89
+ qa: 'preprod',
90
+ stg: 'staging',
91
+ uat: 'uat',
92
+ prd: 'prod',
93
+ };