Created
May 19, 2024 15:08
-
-
Save pjmagee/8bbb579fdcb790ea26997494521f7871 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type DsgIcisOpenapiKiota struct{} | |
type Language string | |
const ( | |
CSharp Language = "CSharp" | |
Go Language = "Go" | |
Java Language = "Java" | |
Python Language = "Python" | |
) | |
type Settings struct { | |
Language Language | |
Namespace string | |
Output string | |
} | |
func NewSettings(language Language, namespace string, output string) Settings { | |
return Settings{ | |
Language: language, | |
Namespace: namespace, | |
Output: output, | |
} | |
} | |
type Spec struct { | |
URL string | |
Settings []Settings | |
} | |
func NewSpec(url string, settings []Settings) Spec { | |
return Spec{ | |
URL: url, | |
Settings: settings, | |
} | |
} | |
func (m *DsgIcisOpenapiKiota) GenerateKiotaClients(ctx context.Context, directory *dagger.Directory, languages []Language) (string, error) { | |
var output string = "" | |
specs := []Spec{ | |
NewSpec("https://developer.icis.com/portals/api/sites/icis-live-portal/liveportal/apis/energyapi/download_spec", []Settings{ | |
NewSettings(CSharp, "Icis.Api.Energy", "Energy"), | |
NewSettings(Go, "icis/api/energy", "energy"), | |
NewSettings(Java, "com.icis.api.energy", "src/main/java/com/icis/api/energy"), | |
NewSettings(Python, "icis_api_energy", "energy"), | |
}), | |
NewSpec("https://developer.icis.com/portals/api/sites/icis-live-portal/liveportal/apis/energyforesightapi/download_spec", []Settings{ | |
NewSettings(CSharp, "Icis.Api.EnergyForesight", "EnergyForesight"), | |
NewSettings(Go, "icis/api/energyforesight", "energyforesight"), | |
NewSettings(Java, "com.icis.api.energyforesight", "src/main/java/com/icis/api/energyforesight"), | |
NewSettings(Python, "icis_api_energyforesight", "energyforesight"), | |
}), | |
NewSpec("https://developer.icis.com/portals/api/sites/icis-live-portal/liveportal/apis/lnganalyticsapi/download_spec", []Settings{ | |
NewSettings(CSharp, "Icis.Api.LngAnalytics", "LngAnalytics"), | |
NewSettings(Go, "icis/api/lnganalytics", "lnganalytics"), | |
NewSettings(Java, "com.icis.api.lnganalytics", "src/main/java/com/icis/api/lnganalytics"), | |
NewSettings(Python, "icis_api_lnganalytics", "lnganalytics"), | |
}), | |
} | |
for _, spec := range specs { | |
for _, settings := range spec.Settings { | |
if slices.Contains(languages, settings.Language) { | |
ctr := dag. | |
Container(). | |
From("mcr.microsoft.com/openapi/kiota:1.14.0"). | |
WithDirectory("/app/output", directory). | |
WithExec([]string{ | |
"generate", | |
"--output", "/app/output", | |
// "--output", fmt.Sprintf("/app/output/%s/%s", settings.Language, settings.Output), | |
"--language", string(settings.Language), | |
"--openapi", spec.URL, | |
"--exclude-backward-compatible", "true", | |
"--log-level", "Debug", | |
"--clean-output", | |
"--additional-data", "true", | |
"--class-name", "ApiClient", | |
}, ContainerWithExecOpts{ | |
SkipEntrypoint: false, | |
Stdin: "", | |
RedirectStdout: "", | |
RedirectStderr: "", | |
ExperimentalPrivilegedNesting: true, | |
InsecureRootCapabilities: true, | |
}) | |
stdout, err := ctr.Stdout(ctx) | |
if err != nil { | |
return stdout, err | |
} | |
output += stdout | |
} | |
} | |
} | |
return output, nil | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment