in src/archetype/ArchetypeModule.ts [111:138]
export async function listArchetypeFromXml(xmlString: string): Promise<Archetype[]> {
try {
const xmlObject: any = await Utils.parseXmlContent(xmlString);
const catalog: any = xmlObject && xmlObject["archetype-catalog"];
const dict: { [key: string]: Archetype } = {};
const archetypeList: any[] = catalog.archetypes[0].archetype;
archetypeList.forEach(archetype => {
const groupId: string = archetype.groupId && archetype.groupId[0];
const artifactId: string = archetype.artifactId && archetype.artifactId[0];
const description: string = archetype.description && archetype.description[0];
const version: string = archetype.version && archetype.version[0];
const repository: string = archetype.repository && archetype.repository[0];
const identifier: string = `${groupId}:${artifactId}`;
if (dict[identifier] === undefined) {
dict[identifier] = new Archetype(artifactId, groupId, repository, description);
}
if (dict[identifier].versions.indexOf(version) < 0) {
dict[identifier].versions.push(version);
}
});
return Object.keys(dict).map((k: string) => dict[k]);
} catch (err) {
console.error(err);
}
return [];
}