fix to docker build command parsing

This commit is contained in:
mbecker20
2023-01-08 08:25:05 +00:00
parent e1b1ee3f8d
commit 772aca95f9
3 changed files with 97 additions and 2 deletions

View File

@@ -0,0 +1,89 @@
import { Component, createEffect, createSignal, Show } from "solid-js";
import {
combineClasses,
parseDotEnvToEnvVars,
parseEnvVarseToDotEnv,
} from "../../../../util/helpers";
import { useToggle } from "../../../../util/hooks";
import Flex from "../../../shared/layout/Flex";
import Grid from "../../../shared/layout/Grid";
import CenterMenu from "../../../shared/menu/CenterMenu";
import TextArea from "../../../shared/TextArea";
import { useConfig } from "../Provider";
const BuildArgs: Component<{}> = (p) => {
const { build, userCanUpdate } = useConfig();
return (
<Grid class={combineClasses("config-item shadow")}>
<Flex alignItems="center" justifyContent="space-between">
<h1>build args</h1>
<Flex alignItems="center" gap="0.2rem">
<Show
when={
!build.docker_build_args?.build_args ||
build.docker_build_args.build_args.length === 0
}
>
<div>none</div>
</Show>
<Show when={userCanUpdate()}>
<EditBuildArgs />
</Show>
</Flex>
</Flex>
</Grid>
);
};
const EditBuildArgs: Component<{}> = (p) => {
const [show, toggle] = useToggle();
const [buildArgs, setBuildArgs] = createSignal("");
const { build, setBuild } = useConfig();
createEffect(() => {
setBuildArgs(
parseEnvVarseToDotEnv(
build.docker_build_args?.build_args
? build.docker_build_args.build_args
: []
)
);
});
const toggleShow = () => {
if (show()) {
setBuild("docker_build_args", {
build_args: parseDotEnvToEnvVars(buildArgs()),
});
}
toggle();
};
return (
<CenterMenu
show={show}
toggleShow={toggleShow}
title={`${build.name} build args`}
target="edit"
targetClass="blue"
leftOfX={() => (
<button class="green" onClick={toggleShow}>
confirm
</button>
)}
content={() => (
<TextArea
class="scroller"
value={buildArgs()}
onEdit={setBuildArgs}
style={{
width: "700px",
"max-width": "90vw",
height: "80vh",
padding: "1rem",
}}
spellcheck={false}
/>
)}
/>
);
};
export default BuildArgs;

View File

@@ -7,6 +7,7 @@ import CliBuild from "./CliBuild";
import Docker from "./Docker";
import { useConfig } from "../Provider";
import Loading from "../../../shared/loading/Loading";
import BuildArgs from "./BuildArgs";
const BuildConfig: Component<{}> = (p) => {
const { build, reset, save, userCanUpdate } = useConfig();
@@ -15,6 +16,7 @@ const BuildConfig: Component<{}> = (p) => {
<Grid class="config">
<Grid class="config-items scroller">
<Docker />
<BuildArgs />
<CliBuild />
</Grid>
<Show when={userCanUpdate() && build.updated}>

View File

@@ -103,9 +103,13 @@ fn image_tags(image_name: &str, version: &Version) -> String {
}
fn parse_build_args(build_args: &Vec<EnvironmentVar>) -> String {
build_args
let mut args = build_args
.iter()
.map(|p| format!(" --build-arg {}={}", p.variable, p.value))
.collect::<Vec<String>>()
.join("")
.join("");
if args.len() > 0 {
args.push(' ');
}
args
}