From 200f6c596a6e732d799ed408f1f0fd92f216ba58 Mon Sep 17 00:00:00 2001 From: Sabir Hassan Date: Thu, 17 Nov 2022 17:03:23 +0500 Subject: [PATCH] feat: on startup add webout.sas file in sasautos folder --- api/public/swagger.yaml | 4 ---- api/src/app.ts | 18 +++++++++++++++--- api/src/utils/createWeboutSasFile.ts | 18 ++++++++++++++++++ api/src/utils/index.ts | 1 + api/src/utils/setupFolders.ts | 6 ++++-- 5 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 api/src/utils/createWeboutSasFile.ts diff --git a/api/public/swagger.yaml b/api/public/swagger.yaml index b2f481a..2935170 100644 --- a/api/public/swagger.yaml +++ b/api/public/swagger.yaml @@ -689,10 +689,6 @@ paths: $ref: '#/components/schemas/ClientPayload' examples: 'Example 1': - value: {clientId: someFormattedClientID1234, clientSecret: someRandomCryptoString} - 'Example 2': - value: {clientId: someFormattedClientID1234, clientSecret: someRandomCryptoString, accessTokenExpiration: 86400} - 'Example 3': value: {clientId: someFormattedClientID1234, clientSecret: someRandomCryptoString, accessTokenExpiration: 86400} summary: "Admin only task. Create client with the following attributes:\nClientId,\nClientSecret,\naccessTokenExpiration (optional),\nrefreshTokenExpiration (optional)" tags: diff --git a/api/src/app.ts b/api/src/app.ts index 0d2d908..655e1c9 100644 --- a/api/src/app.ts +++ b/api/src/app.ts @@ -5,12 +5,16 @@ import dotenv from 'dotenv' import { copySASjsCore, + createWeboutSasFile, + getFilesFolder, + getPackagesFolder, getWebBuildFolder, instantiateLogger, loadAppStreamConfig, ReturnCode, setProcessVariables, - setupFolders, + setupFilesFolder, + setupPackagesFolder, setupUserAutoExec, verifyEnvVariables } from './utils' @@ -20,6 +24,7 @@ import { configureLogger, configureSecurity } from './app-modules' +import {folderExists} from '@sasjs/utils' dotenv.config() @@ -65,9 +70,16 @@ export default setProcessVariables().then(async () => { await setupUserAutoExec() - if (process.driveLoc === path.join(process.sasjsRoot, 'drive')) { - await setupFolders() + if (!(await folderExists(getFilesFolder()))) await setupFilesFolder() + + if (!(await folderExists(getPackagesFolder()))) await setupPackagesFolder() + + const sasautosPath = path.join(process.driveLoc, 'sas', 'sasautos') + if (await folderExists(sasautosPath)) { + console.log(`SASAUTOS was not refreshed. To force a refresh, delete the ${sasautosPath} folder`) + } else { await copySASjsCore() + await createWeboutSasFile() } // loading these modules after setting up variables due to diff --git a/api/src/utils/createWeboutSasFile.ts b/api/src/utils/createWeboutSasFile.ts new file mode 100644 index 0000000..26f549f --- /dev/null +++ b/api/src/utils/createWeboutSasFile.ts @@ -0,0 +1,18 @@ +import path from 'path' +import { createFile } from '@sasjs/utils' +import { getMacrosFolder } from './file' + +const fileContent = `%macro webout(action,ds,dslabel=,fmt=,missing=NULL,showmeta=NO,maxobs=MAX); + %ms_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt + ,missing=&missing + ,showmeta=&showmeta + ,maxobs=&maxobs + ) +%mend;` + +export const createWeboutSasFile = async () => { + const macrosDrivePath = getMacrosFolder() + console.log(`Creating webout.sas at ${macrosDrivePath}`) + const filePath = path.join(macrosDrivePath, 'webout.sas') + await createFile(filePath, fileContent) +} diff --git a/api/src/utils/index.ts b/api/src/utils/index.ts index 7758dd9..1814297 100644 --- a/api/src/utils/index.ts +++ b/api/src/utils/index.ts @@ -1,6 +1,7 @@ export * from './appStreamConfig' export * from './connectDB' export * from './copySASjsCore' +export * from './createWeboutSasFile' export * from './desktopAutoExec' export * from './extractHeaders' export * from './extractName' diff --git a/api/src/utils/setupFolders.ts b/api/src/utils/setupFolders.ts index fd7977e..7e3ae56 100644 --- a/api/src/utils/setupFolders.ts +++ b/api/src/utils/setupFolders.ts @@ -1,7 +1,9 @@ import { createFolder } from '@sasjs/utils' import { getFilesFolder, getPackagesFolder } from './file' -export const setupFolders = async () => { +export const setupFilesFolder = async () => await createFolder(getFilesFolder()) + +export const setupPackagesFolder = async () => await createFolder(getPackagesFolder()) -} +