diff --git a/src/app/common/app.values.ts b/src/app/common/app.values.ts index 2d0d5a693..a8ff50cec 100644 --- a/src/app/common/app.values.ts +++ b/src/app/common/app.values.ts @@ -10,6 +10,7 @@ export default class AppValues { public static readonly URL_PATTERN = /^(http:\/\/)|(https:\/\/)/i; public static readonly SCHEMA_NAME_PATTERN = /^[a-zA-Z0-9]+[a-zA-Z0-9\s(_)]*$/i; + public static readonly SPLIT_ARGUMENTS_PATTERN = /\w+|"[^"]+"/g; public static readonly DISPLAY_DATE_FORMAT = "DD MMM YYYY"; public static readonly DISPLAY_TOOLTIP_DATE_FORMAT = "MMM D, YYYY, HH:mm A"; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts index 5663a2422..4895ed2dd 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts @@ -72,6 +72,11 @@ export enum PrepareKind { DECOMPRESS = "decompress", } +export enum DecompressFormat { + ZIP = "zip", + GZIP = "gzip", +} + export enum PreprocessKind { SQL = "sql", } diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts index 1786d6f02..52895798d 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts @@ -13,6 +13,7 @@ import { FetchKind, PrepareKind, } from "./add-polling-source-form.types"; +import AppValues from "src/app/common/app.values"; @Injectable({ providedIn: "root", @@ -51,7 +52,9 @@ export class ProcessFormService { item.kind === PrepareKind.PIPE && typeof item.command === "string" ) { - item.command = item.command.trim().split(" "); + item.command = item.command + .trim() + .match(AppValues.SPLIT_ARGUMENTS_PATTERN) as string[]; } if (item.kind === PrepareKind.DECOMPRESS && !item.subPath) { delete item.subPath; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.spec.ts index d01d1f558..c8932fb09 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.spec.ts @@ -13,7 +13,10 @@ import { SetPollingSourceSection } from "src/app/shared/shared.types"; import { MatIconModule } from "@angular/material/icon"; import { mockSetPollingSourceEventYaml } from "../../../set-transform/mock.data"; import { emitClickOnElementByDataTestId } from "src/app/common/base-test.helpers.spec"; -import { PrepareKind } from "../../add-polling-source-form.types"; +import { + DecompressFormat, + PrepareKind, +} from "../../add-polling-source-form.types"; describe("PrepareStepComponent", () => { let component: PrepareStepComponent; @@ -55,7 +58,7 @@ describe("PrepareStepComponent", () => { it("should check add decompress", () => { const result = { kind: PrepareKind.DECOMPRESS, - format: "", + format: DecompressFormat.ZIP, subPath: "", }; component.sectionForm.clear(); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.ts index 6d54a22d7..6bed0e907 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.ts @@ -15,9 +15,12 @@ import { import { MaybeNull } from "src/app/common/app.types"; import { BaseComponent } from "src/app/common/base.component"; import { SetPollingSourceSection } from "src/app/shared/shared.types"; -import { EditFormType, PrepareKind } from "../../add-polling-source-form.types"; +import { + DecompressFormat, + EditFormType, + PrepareKind, +} from "../../add-polling-source-form.types"; import { EditPollingSourceService } from "../../edit-polling-source.service"; -import { RxwebValidators } from "@rxweb/reactive-form-validators"; @Component({ selector: "app-prepare-step", @@ -101,7 +104,7 @@ export class PrepareStepComponent extends BaseComponent implements OnInit { this.sectionForm.push( this.fb.group({ kind: this.fb.control(PrepareKind.DECOMPRESS), - format: this.fb.control("zip"), + format: this.fb.control(DecompressFormat.ZIP), subPath: this.fb.control(""), }), );