@@ -357,23 +357,26 @@ const acceptParams = (params: DialogProps): void => {
357
357
title .value = i18n .global .t (' container.' + dialogData .value .title );
358
358
if (params .title === ' edit' ) {
359
359
dialogData .value .rowData .memory = Number (dialogData .value .rowData .memory .toFixed (2 ));
360
- dialogData . value . rowData . cmd = dialogData . value . rowData . cmd || [];
360
+
361
361
let itemCmd = ' ' ;
362
362
for (const item of dialogData .value .rowData .cmd ) {
363
- itemCmd += ` '${item }' ` ;
363
+ if (item .indexOf (' ' ) !== - 1 ) {
364
+ itemCmd += ` "${item .replaceAll (' "' , ' \\ "' )}" ` ;
365
+ } else {
366
+ itemCmd += item + ' ' ;
367
+ }
364
368
}
365
- dialogData .value .rowData .cmdStr = itemCmd ? itemCmd .substring (0 , itemCmd .length - 1 ) : ' ' ;
366
-
369
+ dialogData .value .rowData .cmdStr = itemCmd .trimEnd ();
367
370
let itemEntrypoint = ' ' ;
368
- if (dialogData .value .rowData ?.entrypoint ) {
369
- for (const item of dialogData .value .rowData .entrypoint ) {
370
- itemEntrypoint += ` '${item }' ` ;
371
+ for (const item of dialogData .value .rowData .entrypoint ) {
372
+ if (item .indexOf (' ' ) !== - 1 ) {
373
+ itemEntrypoint += ` "${item .replaceAll (' "' , ' \\ "' )}" ` ;
374
+ } else {
375
+ itemEntrypoint += item + ' ' ;
371
376
}
372
377
}
378
+ dialogData .value .rowData .entrypointStr = itemEntrypoint .trimEnd ();
373
379
374
- dialogData .value .rowData .entrypointStr = itemEntrypoint
375
- ? itemEntrypoint .substring (0 , itemEntrypoint .length - 1 )
376
- : ' ' ;
377
380
dialogData .value .rowData .labels = dialogData .value .rowData .labels || [];
378
381
dialogData .value .rowData .env = dialogData .value .rowData .env || [];
379
382
dialogData .value .rowData .labelsStr = dialogData .value .rowData .labels .join (' \n ' );
@@ -501,34 +504,16 @@ const submit = async () => {
501
504
}
502
505
dialogData .value .rowData ! .cmd = [];
503
506
if (dialogData .value .rowData ?.cmdStr ) {
504
- if (dialogData .value .rowData ?.cmdStr .indexOf (` ' ` ) !== - 1 ) {
505
- let itemCmd = dialogData .value .rowData ! .cmdStr .split (` ' ` );
506
- for (const cmd of itemCmd ) {
507
- if (cmd && cmd !== ' ' ) {
508
- dialogData .value .rowData ! .cmd .push (cmd );
509
- }
510
- }
511
- } else {
512
- let itemCmd = dialogData .value .rowData ! .cmdStr .split (` ` );
513
- for (const cmd of itemCmd ) {
514
- dialogData .value .rowData ! .cmd .push (cmd );
515
- }
507
+ let itemCmd = splitWithQuotes (dialogData .value .rowData ?.cmdStr );
508
+ for (const item of itemCmd ) {
509
+ dialogData .value .rowData ! .cmd .push (item .replace (/ (?<!\\ )"/ g , ' ' ).replaceAll (' \\ "' , ' "' ));
516
510
}
517
511
}
518
512
dialogData .value .rowData ! .entrypoint = [];
519
513
if (dialogData .value .rowData ?.entrypointStr ) {
520
- if (dialogData .value .rowData ?.entrypointStr .indexOf (` ' ` ) !== - 1 ) {
521
- let itemEntrypoint = dialogData .value .rowData ! .entrypointStr .split (` ' ` );
522
- for (const entry of itemEntrypoint ) {
523
- if (entry && entry !== ' ' ) {
524
- dialogData .value .rowData ! .entrypoint .push (entry );
525
- }
526
- }
527
- } else {
528
- let itemEntrypoint = dialogData .value .rowData ! .entrypointStr .split (` ` );
529
- for (const entry of itemEntrypoint ) {
530
- dialogData .value .rowData ! .entrypoint .push (entry );
531
- }
514
+ let itemEntrypoint = splitWithQuotes (dialogData .value .rowData ?.entrypointStr );
515
+ for (const item of itemEntrypoint ) {
516
+ dialogData .value .rowData ! .entrypoint .push (item .replace (/ (?<!\\ )"/ g , ' ' ).replaceAll (' \\ "' , ' "' ));
532
517
}
533
518
}
534
519
if (dialogData .value .rowData ! .publishAllPorts ) {
@@ -644,6 +629,17 @@ const isFromApp = (rowData: Container.ContainerHelper) => {
644
629
}
645
630
return false ;
646
631
};
632
+
633
+ const splitWithQuotes = (str ) => {
634
+ str = str .replace (/ \\ "/ g , ' <quota>' );
635
+ const regex = / (?=(?:[^ '"] | ['"][^ '"] * ['"] )* $ )\s + / g ;
636
+ let parts = str .split (regex ).filter (Boolean );
637
+ let returnList = [];
638
+ for (const item of parts ) {
639
+ returnList .push (item .replaceAll (' <quota>' , ' \\ "' ));
640
+ }
641
+ return returnList ;
642
+ };
647
643
defineExpose ({
648
644
acceptParams ,
649
645
});
0 commit comments