Skip to content

Commit f91af1e

Browse files
committed
apply yaml model interface
1 parent b083e4f commit f91af1e

File tree

18 files changed

+128
-52
lines changed

18 files changed

+128
-52
lines changed

src/main/java/com/flowci/build/business/impl/CreateBuildImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import com.flowci.flow.business.FetchFlow;
1111
import com.flowci.flow.business.FetchFlowYamlContent;
1212
import com.flowci.flow.model.Flow;
13-
import com.flowci.yaml.business.ParseYamlV2;
13+
import com.flowci.yaml.business.ParseYaml;
1414
import jakarta.annotation.Nullable;
1515
import jakarta.transaction.Transactional;
1616
import lombok.AllArgsConstructor;
@@ -27,7 +27,7 @@ public class CreateBuildImpl implements CreateBuild {
2727

2828
private final FetchFlow fetchFlow;
2929
private final FetchFlowYamlContent fetchFlowYamlContent;
30-
private final ParseYamlV2 parseYamlV2;
30+
private final ParseYaml parseYamlV2;
3131
private final BuildRepo buildRepo;
3232
private final BuildYamlRepo buildYamlRepo;
3333
private final RequestContextHolder requestContextHolder;

src/main/java/com/flowci/flow/business/impl/UpdateFlowYamlContentImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import com.flowci.common.exception.NotAvailableException;
55
import com.flowci.flow.business.UpdateFlowYamlContent;
66
import com.flowci.flow.repo.FlowYamlRepo;
7-
import com.flowci.yaml.business.ParseYamlV2;
7+
import com.flowci.yaml.business.ParseYaml;
88
import lombok.AllArgsConstructor;
99
import lombok.extern.slf4j.Slf4j;
1010
import org.springframework.stereotype.Component;
@@ -18,7 +18,7 @@
1818
@AllArgsConstructor
1919
public class UpdateFlowYamlContentImpl implements UpdateFlowYamlContent {
2020

21-
private final ParseYamlV2 parseYamlV2;
21+
private final ParseYaml parseYamlV2;
2222
private final FlowYamlRepo flowYamlRepo;
2323
private final RequestContextHolder requestContextHolder;
2424

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.flowci.yaml.business;
2+
3+
import com.flowci.yaml.model.Flow;
4+
5+
public interface ParseYaml {
6+
Flow invoke(String yaml);
7+
}

src/main/java/com/flowci/yaml/business/ParseYamlV2.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/main/java/com/flowci/yaml/business/impl/ParseYamlV2Impl.java

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,24 @@
44
import com.fasterxml.jackson.databind.ObjectMapper;
55
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
66
import com.flowci.common.validator.ValidName;
7-
import com.flowci.yaml.business.ParseYamlV2;
7+
import com.flowci.yaml.business.ParseYaml;
88
import com.flowci.yaml.exception.InvalidYamlException;
9-
import com.flowci.yaml.model.FlowV2;
10-
import com.flowci.yaml.model.StepV2;
9+
import com.flowci.yaml.model.v2.FlowV2;
10+
import com.flowci.yaml.model.v2.StepV2;
1111
import lombok.extern.slf4j.Slf4j;
1212
import org.springframework.stereotype.Component;
13-
import org.springframework.util.CollectionUtils;
1413

15-
import java.util.*;
14+
import java.util.HashMap;
15+
import java.util.HashSet;
16+
import java.util.List;
1617

1718
import static java.lang.String.format;
1819
import static org.springframework.util.CollectionUtils.isEmpty;
1920
import static org.springframework.util.StringUtils.hasText;
2021

2122
@Slf4j
2223
@Component
23-
public class ParseYamlV2Impl implements ParseYamlV2 {
24+
public class ParseYamlV2Impl implements ParseYaml {
2425

2526
private static final ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
2627
private static final ValidName.NameValidator nameValidator = new ValidName.NameValidator();
@@ -48,7 +49,7 @@ public FlowV2 invoke(String yaml) {
4849

4950
private void validateSteps(FlowV2 flow) {
5051
var steps = flow.getSteps();
51-
if (CollectionUtils.isEmpty(steps)) {
52+
if (isEmpty(steps)) {
5253
throw new InvalidYamlException("at least one step is required");
5354
}
5455

@@ -78,7 +79,7 @@ private void validateSteps(FlowV2 flow) {
7879

7980
private void validateCommands(StepV2 step) {
8081
var commands = step.getCommands();
81-
if (CollectionUtils.isEmpty(commands)) {
82+
if (isEmpty(commands)) {
8283
throw new InvalidYamlException(format("at least one command under step '%s' is required", step.getName()));
8384
}
8485

@@ -101,7 +102,7 @@ private void buildGraph(FlowV2 flow) {
101102
}
102103

103104
for (var step : steps) {
104-
if (CollectionUtils.isEmpty(step.getDependsOn())) {
105+
if (isEmpty(step.getDependsOn())) {
105106
continue;
106107
}
107108

@@ -137,13 +138,4 @@ private void checkCircularDependencies(List<StepV2> steps, HashMap<StepV2, Integ
137138
checkCircularDependencies(step.getNext(), traversed);
138139
}
139140
}
140-
141-
/**
142-
* Ex:
143-
* A <-- B <-- C
144-
* A <-- C
145-
*/
146-
private void checkDuplicatedDependsOn(List<StepV2> steps) {
147-
148-
}
149141
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.flowci.yaml.model;
2+
3+
import com.flowci.yaml.model.v2.DockerV2;
4+
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Set;
8+
9+
public interface Base {
10+
11+
Map<String, String> getVariables();
12+
13+
// condition script , todo: python or groovy?
14+
String getCondition();
15+
16+
Integer getTimeout();
17+
18+
Set<String> getAgents();
19+
20+
Docker getDocker();
21+
22+
List<DockerV2> getDockers();
23+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.flowci.yaml.model;
2+
3+
public interface Command {
4+
5+
String getBash();
6+
7+
String getPwsh();
8+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.flowci.yaml.model;
2+
3+
import java.util.List;
4+
import java.util.Map;
5+
6+
public interface Docker {
7+
8+
String getImage();
9+
10+
String getNetwork();
11+
12+
List<String> getPorts();
13+
14+
List<String> getEntrypoint();
15+
16+
List<String> getCommand();
17+
18+
Map<String, String> getEnvironment();
19+
20+
Boolean getIsRuntime();
21+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.flowci.yaml.model;
2+
3+
import java.util.List;
4+
5+
public interface Flow<S extends Step<?>> extends Base {
6+
7+
List<S> getSteps();
8+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.flowci.yaml.model;
2+
3+
import java.util.List;
4+
5+
public interface Step<C extends Command> extends Base {
6+
7+
String getName();
8+
9+
Boolean getAllowFailure();
10+
11+
Integer getRetry();
12+
13+
List<String> getDependsOn();
14+
15+
List<C> getCommands();
16+
}

0 commit comments

Comments
 (0)