in wstl1/mapping_engine/main/main.go [146:211]
func main() {
flag.Parse()
dhConfig := &dhpb.DataHarmonizationConfig{}
if *dhConfigFile != "" {
if *mappingFile != "" || *harmonizeCodeDir != "" || *harmonizeUnitFile != "" || *libDir != "" {
log.Fatal("data_harmonization_config_file_spec flag should not be set along with other configuration flags " +
"(mapping_file_spec, harmonize_code_dir_spec, harmonize_unit_spec, lib_dir_spec).")
}
n := fileutil.MustRead(*dhConfigFile, "data harmonization config")
if err := prototext.Unmarshal(n, dhConfig); err != nil {
log.Fatalf("Failed to parse data harmonization config")
}
} else {
dhConfig = &dhpb.DataHarmonizationConfig{
StructureMappingConfig: &hpb.StructureMappingConfig{
Mapping: &hpb.StructureMappingConfig_MappingLanguageString{
MappingLanguageString: string(fileutil.MustRead(*mappingFile, "mapping")),
},
},
HarmonizationConfig: codeHarmonizationConfig(*harmonizeCodeDir),
UnitHarmonizationConfig: unitHarmonizationConfig(*harmonizeUnitFile),
LibraryConfig: libConfigs(*libDir),
}
}
tconfig := transform.TransformationConfig{
LogTrace: *verbose,
}
var tr transform.Transformer
var err error
if tr, err = transform.NewTransformer(context.Background(), dhConfig, tconfig); err != nil {
log.Fatalf("Failed to load mapping config: %v", err)
}
for _, f := range readInputs(*inputFile) {
i := fileutil.MustRead(f, "input")
ji, err := tr.ParseJSON(i)
if err != nil {
log.Fatalf("Failed to parse inputJSON in file %v: %v", f, err)
}
res, err := tr.Transform(ji)
if err != nil {
log.Fatalf("Mapping failed for input file %v: %v", f, err)
}
bres, err := json.MarshalIndent(res, "", " ")
if err != nil {
log.Fatalf("Failed to serialize output: %v", err)
}
op := outputFileName(*outputDir, f)
if *outputDir == "" {
log.Printf("File %q\n\n%s\n", op, string(bres))
} else {
if err := ioutil.WriteFile(op, bres, fileWritePerm); err != nil {
log.Fatalf("Could not write output file %q: %v", op, err)
}
}
}
}