in alzlib.go [402:455]
func (az *AlzLib) Init(ctx context.Context, libs ...LibraryReference) error {
az.mu.Lock()
defer az.mu.Unlock()
if az.Options == nil || az.Options.Parallelism == 0 {
return errors.New("Alzlib.Init: alzlib Options not set or parallelism is `0`")
}
// Process the libraries
for _, ref := range libs {
if ref == nil {
return errors.New("Alzlib.Init: library is nil")
}
if ref.FS() == nil {
if _, err := ref.Fetch(ctx, hash(ref)); err != nil {
return fmt.Errorf("Alzlib.Init: error fetching library %s: %w", ref, err)
}
}
res := processor.NewResult()
pc := processor.NewProcessorClient(ref.FS())
if err := pc.Process(res); err != nil {
return fmt.Errorf("Alzlib.Init: error processing library %v: %w", ref, err)
}
if res.Metadata != nil {
az.metadata = append(az.metadata, NewMetadata(res.Metadata, ref))
}
// Put results into the AlzLib.
if err := az.addPolicyAndRoleAssets(res); err != nil {
return fmt.Errorf("Alzlib.Init: error adding processed result to AlzLib: %w", err)
}
// Add default policy values
if err := az.addDefaultPolicyAssignmentValues(res); err != nil {
return fmt.Errorf("Alzlib.Init: error adding default policy assignment values to AlzLib: %w", err)
}
// Generate archetypes
if err := az.generateArchetypes(res); err != nil {
return fmt.Errorf("Alzlib.Init: error generating archetypes: %w", err)
}
// Generate override archetypes
if err := az.generateOverrideArchetypes(res); err != nil {
return fmt.Errorf("Alzlib.Init: error generating override archetypes: %w", err)
}
// Generate architectures
if err := az.generateArchitectures(res); err != nil {
return fmt.Errorf("Alzlib.Init: error generating architectures: %w", err)
}
}
return nil
}