1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-20 22:09:41 +02:00

refactor(ui): migrate env var field to react [EE-4853] (#8451)

This commit is contained in:
Chaim Lev-Ari 2023-05-31 10:08:41 +07:00 committed by GitHub
parent 6b5940e00e
commit 2d05103fed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
40 changed files with 721 additions and 442 deletions

View file

@ -0,0 +1,53 @@
import _ from 'lodash';
import { EnvVar } from './types';
export const KEY_REGEX = /(.+?)/.source;
export const VALUE_REGEX = /(.*)?/.source;
const KEY_VALUE_REGEX = new RegExp(`^(${KEY_REGEX})\\s*=(${VALUE_REGEX})$`);
const NEWLINES_REGEX = /\n|\r|\r\n/;
export function parseDotEnvFile(src: string) {
return parseArrayOfStrings(
_.compact(src.split(NEWLINES_REGEX))
.map((v) => v.trim())
.filter((v) => !v.startsWith('#') && v !== '')
);
}
export function parseArrayOfStrings(array: Array<string> = []): Array<EnvVar> {
if (!array) {
return [];
}
return _.compact(
array.map((variableString) => {
if (!variableString.includes('=')) {
return { name: variableString };
}
const parsedKeyValArr = variableString.trim().match(KEY_VALUE_REGEX);
if (parsedKeyValArr == null || parsedKeyValArr.length < 4) {
return null;
}
return {
name: parsedKeyValArr[1].trim(),
value: parsedKeyValArr[3].trim() || '',
};
})
);
}
export function convertToArrayOfStrings(array: Array<EnvVar>) {
if (!array) {
return [];
}
return array
.filter((variable) => variable.name)
.map(({ name, value }) =>
value || value === '' ? `${name}=${value}` : name
);
}