func alzlibReadmeMdArchetypes()

in internal/doc/doc.go [91:128]


func alzlibReadmeMdArchetypes(md *markdown.Markdown, az *alzlib.AlzLib) *markdown.Markdown {
	archetypes := az.Archetypes()
	if len(archetypes) == 0 {
		return md
	}
	md = md.H2("Archetypes").LF()
	for _, a := range archetypes {
		archetype := az.Archetype(a)
		pds := archetype.PolicyDefinitions.ToSlice()
		slices.Sort(pds)
		psds := archetype.PolicySetDefinitions.ToSlice()
		slices.Sort(psds)
		rds := archetype.RoleDefinitions.ToSlice()
		slices.Sort(rds)
		pas := archetype.PolicyAssignments.ToSlice()
		slices.Sort(pas)
		if len(pds) > 0 || len(psds) > 0 || len(pas) > 0 || len(rds) > 0 {
			md = md.H3("archetype `" + archetype.Name() + "`").LF()
			if len(pds) > 0 {
				md.H4(a+" policy definitions").LF().
					Details(fmt.Sprintf("%d policy definitions", archetype.PolicyDefinitions.Cardinality()), "\n- "+strings.Join(pds, "\n- ")).LF()
			}
			if len(psds) > 0 {
				md = md.H4(a+" policy set definitions").LF().
					Details(fmt.Sprintf("%d policy set definitions", archetype.PolicySetDefinitions.Cardinality()), "\n- "+strings.Join(psds, "\n- ")).LF()
			}
			if len(pas) > 0 {
				md = md.H4(a+" policy assignments").LF().
					Details(fmt.Sprintf("%d policy assignments", archetype.PolicyAssignments.Cardinality()), "\n- "+strings.Join(pas, "\n- ")).LF()
			}
			if len(rds) > 0 {
				md = md.H4(a+" role definitions").LF().
					Details(fmt.Sprintf("%d role definitions", archetype.RoleDefinitions.Cardinality()), "\n- "+strings.Join(rds, "\n- ")).LF()
			}
		}
	}
	return md
}