in codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/GoWriter.java [854:895]
public String toString() {
String contents = super.toString();
if (innerWriter) {
return contents;
}
var tags = buildTags.isEmpty()
? ""
: "//go:build " + String.join(",", buildTags) + "\n";
String[] packageParts = fullPackageName.split("/");
String header = String.format("// Code generated by smithy-go-codegen DO NOT EDIT.%n%n");
String packageName = packageParts[packageParts.length - 1];
if (packageName.startsWith("v") && packageParts.length >= 2) {
String remaining = packageName.substring(1);
try {
int value = Integer.parseInt(remaining);
packageName = packageParts[packageParts.length - 2];
if (value == 0 || value == 1) {
throw new CodegenException("module paths vN version component must only be N >= 2");
}
} catch (NumberFormatException ne) {
// Do nothing
}
}
String packageDocs = this.packageDocs.toString();
String packageStatement = String.format("package %s%n%n", packageName);
String importString = getImportContainer().toString();
String strippedContents = StringUtils.stripStart(contents, null);
String strippedImportString = StringUtils.strip(importString, null);
// Don't add an additional new line between explicit imports and managed imports.
if (!strippedImportString.isEmpty() && strippedContents.startsWith("import ")) {
return header + strippedImportString + "\n" + strippedContents;
}
return header + packageDocs + tags + packageStatement + importString + contents;
}