
farm.nurture.laminar.generator.ast.golang.AstMain Maven / Gradle / Ivy
The newest version!
/*
* Copyright 2022 Nurture.Farm
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package farm.nurture.laminar.generator.ast.golang;
import static farm.nurture.laminar.generator.Constants.CODE_URL;
import static farm.nurture.laminar.generator.Constants.FORWARD_SLASH;
import static farm.nurture.laminar.generator.Constants.GO_PROTO_PATH;
import static farm.nurture.laminar.generator.Constants.NAME_SPACE;
import static farm.nurture.laminar.generator.Constants.PROMETHUES_PORT;
import static farm.nurture.laminar.generator.Constants.SERVER_PORT;
import static farm.nurture.laminar.generator.Constants.SERVICE_NAME;
import farm.nurture.infra.util.StringUtils;
import farm.nurture.laminar.generator.AppConfigVO;
import farm.nurture.laminar.generator.Configuration;
import farm.nurture.laminar.generator.FieldDetail;
import farm.nurture.laminar.generator.TemplatesVO;
import farm.nurture.laminar.generator.ast.AstBase;
import java.util.ArrayList;
import java.util.List;
public class AstMain extends AstBase {
List parts = new ArrayList<>();
String temporalStartUpContent;
String temporalSetupContent;
AstBase.Flags flags;
public AstMain() {
temporalStartUpContent = readTemplateFile(TemplatesVO.getTEMPLATE_DIR() + "/golang/temporal.startup.go.template");
temporalSetupContent = readTemplateFile(TemplatesVO.getTEMPLATE_DIR() + "/golang/temporal.config.go.template");
}
@Override
public void onStart(Configuration conf, AstBase.Flags flags) {
super.onStart(conf, flags);
this.flags = flags;
for (AstBase b : parts) b.onStart(conf, flags);
}
@Override
public void onEntry(AppConfigVO entry, List requestFields, List responseFields){
for ( AstBase b: parts) b.onEntry(entry, requestFields, responseFields);
//if ( entry.implGrpc ) {
//}
}
@Override
public void onEnd(){
super.onEnd();
for ( AstBase b: parts) b.onEnd();
String mainContent = readTemplateFile(TemplatesVO.getTEMPLATE_DIR() + "/golang/main.go.template");
String namespace = super.getNamespace();
if(StringUtils.isNonEmpty(namespace)) {
namespace = FORWARD_SLASH+namespace;
}
//@code_url@/@service_name@/@go_package
if(flags.isContracts()) {
mainContent = mainContent.replace(GO_PROTO_PATH,"\"code.nurture.farm/Core/Contracts/"+ super.getServiceName()
+"/Gen/Go"+ super.getServiceName() +"\"");
} else {
mainContent = mainContent.replace(GO_PROTO_PATH,"\""+ super.getCodeUrl() +namespace+FORWARD_SLASH+ super.getServiceName()
+"/zerotouch/golang/proto/"+ super.getGoPackage() +FORWARD_SLASH+ super.getServiceName() +"\"");
}
mainContent = mainContent.replace(CODE_URL, super.getCodeUrl());
mainContent = mainContent.replace(NAME_SPACE,namespace);
mainContent = mainContent.replace(SERVICE_NAME, super.getServiceName());
mainContent = mainContent.replace(SERVER_PORT,Integer.toString(super.getConf().getServer().getPort()));
mainContent = mainContent.replace(PROMETHUES_PORT,Integer.toString(super.getConf().getPrometheus().getPort()));
if(Boolean.TRUE.equals(getTemporalWorkerEnabled())){
String temporalmainSetupContent = temporalSetupContent.replace("@service_workername@",
getTemporalWorkerTaskQueue());
temporalmainSetupContent = temporalmainSetupContent.replace(SERVICE_NAME,
getServiceName());
mainContent = mainContent.replace("@temporal_import@", "\"go.temporal.io/sdk/client\"\n\t\"go.temporal.io/sdk/worker\"");
mainContent = mainContent.replace("@temporal_setup@", temporalmainSetupContent);
mainContent = mainContent.replace("@temporal_startup@", temporalStartUpContent);
} else {
mainContent = mainContent.replace("@temporal_import@", "");
mainContent = mainContent.replace("@temporal_setup@", "");
mainContent = mainContent.replace("@temporal_startup@", "");
}
writeToFile( super.getGoGeneratePath() + "/main.go", mainContent);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy