in scrooge-generator/src/main/scala/com/twitter/scrooge/swift_generator/SwiftGenerator.scala [169:245]
override def apply(
serviceOptions: Set[ServiceOption],
outputPath: File,
dryRun: Boolean = false,
genAdapt: Boolean = false
): Iterable[File] = {
val generatedFiles = new mutable.ListBuffer[File]
val packageDir = namespacedFolder(outputPath, namespace.fullName, dryRun)
val sourceDir = namespacedFolder(packageDir, "Sources/" + namespace.fullName, dryRun)
def renderFile(
templateName: String,
controller: TypeController,
fileName: Option[String] = None
) = {
val dir = if (templateName == "package_file.mustache") packageDir else sourceDir
val fileContent = renderMustache(templateName, controller)
val name = fileName.getOrElse(controller.name)
val file = new File(dir, name + ".swift")
if (!dryRun) {
val writer = new FileWriter(file)
try {
writer.write(fileContent)
} finally {
writer.close()
}
}
file
}
if (doc.consts.nonEmpty) {
generatedFiles += renderFile(
"consts.mustache",
new ConstController(
doc.consts,
this,
Some(namespace),
public_interface = publicInterface
)
)
}
generatedFiles += renderFile(
"package_file.mustache",
new PackageFileController(doc.consts, this, Some(namespace))
)
doc.enums.foreach { enum =>
generatedFiles += renderFile(
"enum.mustache",
new EnumController(
enum,
this,
Some(namespace),
objcPrefix = objcPrefix,
public_interface = publicInterface),
enum.annotations.get("alternative.type")
)
}
doc.structs.foreach { struct =>
generatedFiles += renderFile(
"struct.mustache",
new StructController(
struct,
false,
this,
Some(namespace),
objcPrefix = objcPrefix,
use_classes = generateClasses,
public_interface = publicInterface),
struct.annotations.get("alternative.type")
)
}
generatedFiles
}