generateLPIStatic static method
void
generateLPIStatic(
- AFCommandContext context,
- String identifier,
- AFCommandArgumentsParsed args, {
- String? fullId,
- AFLibraryID? fromLib,
- String parentType = "AFLibraryProgrammingInterface",
Implementation
static void generateLPIStatic(AFCommandContext context, String identifier, AFCommandArgumentsParsed args, {
String? fullId,
AFLibraryID? fromLib,
String parentType = "AFLibraryProgrammingInterface"
}) {
final generator = context.generator;
if(!identifier.startsWith(generator.appNamespaceUpper)) {
throw AFCommandError(error: "$identifier must start with ${generator.appNamespaceUpper}");
}
// create the LPI file
final isOverride = fullId != null;
final lpiPath = generator.pathLPI(identifier, isOverride: isOverride);
final lpiFile = context.createFile(lpiPath, LPIT.core(), insertions: {
AFSourceTemplate.insertMainTypeInsertion: identifier,
AFSourceTemplate.insertMainParentTypeInsertion: parentType
});
if(fromLib != null) {
lpiFile.importFlutterFile(context, fromLib);
}
final idIdentifier = generator.removeSuffixAndCamel(generator.removePrefix(identifier, generator.appNamespaceUpper), "LPI");
// create an ID for the LPI
if(!isOverride) {
final declareId = context.createSnippet(SnippetDeclareLPIIDT(), insertions: {
SnippetCallDefineLPIT.insertLPIID: idIdentifier,
});
final idFile = generator.modifyFile(context, generator.pathIdFile);
const kind = "LibraryProgrammingInterface";
final after = AFCodeRegExp.startUIID(kind, kind);
idFile.addLinesAfter(context, after, declareId.lines);
}
// register the LPI
final definesFile = generator.modifyFile(context, generator.pathDefineCore);
final defineLPI = context.createSnippet(SnippetCallDefineLPIT(), insertions: {
SnippetCallDefineLPIT.insertLPIID: fullId ?? "${generator.appNamespaceUpper}LibraryProgrammingInterfaceID.$idIdentifier",
SnippetCallDefineLPIT.insertLPIType: identifier,
});
definesFile.addLinesAfter(context, AFCodeRegExp.startDefineLPI, defineLPI.lines);
definesFile.importFile(context, lpiFile);
if(isOverride && fromLib != null) {
definesFile.importIDFile(context, fromLib);
}
if(!isOverride) {
generator.addExportsForFiles(context, args, [lpiFile]);
}
}