in codegen/smithy-ruby-codegen/src/main/java/software/amazon/smithy/ruby/codegen/generators/ClientGenerator.java [98:143]
public void render() {
FileManifest fileManifest = context.getFileManifest();
writer.writePreamble();
List<String> additionalFiles =
middlewareBuilder.writeAdditionalFiles(context);
for (String require : additionalFiles) {
writer.write("require_relative '$L'", removeRbExtension(require));
LOGGER.finer("Adding client require: " + require);
}
if (additionalFiles.size() > 0) {
writer.write("");
}
writer
.openBlock("module $L", settings.getModule())
.write("# An API client for $L",
settings.getService().getName())
.write("# See {#initialize} for a full list of supported configuration options");
String documentation = new ShapeDocumentationGenerator(model, symbolProvider, context.getService()).render();
writer
.writeInline("$L", documentation)
.openBlock("class Client")
.write("include Seahorse::ClientStubs")
.write("\n@middleware = Seahorse::MiddlewareBuilder.new")
.openBlock("\ndef self.middleware")
.write("@middleware")
.closeBlock("end")
.call(() -> renderInitializeMethod())
.call(() -> renderOperations())
.write("\nprivate")
.call(() -> renderApplyMiddlewareMethod())
.call(() -> renderOutputStreamMethod())
.closeBlock("end")
.closeBlock("end");
String fileName =
settings.getGemName() + "/lib/" + settings.getGemName()
+ "/client.rb";
fileManifest.writeFile(fileName, writer.toString());
LOGGER.fine("Wrote client to " + fileName);
}