createAddonManifest creates a manifest file for tracking addon installation
(app *DdevApp, addonName, repository, version string, desc InstallDesc)
| 1423 | |
| 1424 | // createAddonManifest creates a manifest file for tracking addon installation |
| 1425 | func createAddonManifest(app *DdevApp, addonName, repository, version string, desc InstallDesc) error { |
| 1426 | manifest := AddonManifest{ |
| 1427 | Name: addonName, |
| 1428 | Repository: repository, |
| 1429 | Version: version, |
| 1430 | Dependencies: desc.Dependencies, |
| 1431 | InstallDate: time.Now().Format(time.RFC3339), |
| 1432 | ProjectFiles: desc.ProjectFiles, |
| 1433 | GlobalFiles: desc.GlobalFiles, |
| 1434 | RemovalActions: desc.RemovalActions, |
| 1435 | } |
| 1436 | |
| 1437 | manifestFile := app.GetConfigPath(fmt.Sprintf("%s/%s/manifest.yaml", AddonMetadataDir, addonName)) |
| 1438 | manifestData, err := yaml.Marshal(manifest) |
| 1439 | if err != nil { |
| 1440 | return fmt.Errorf("error marshaling manifest data: %v", err) |
| 1441 | } |
| 1442 | |
| 1443 | err = os.MkdirAll(filepath.Dir(manifestFile), 0755) |
| 1444 | if err != nil { |
| 1445 | return fmt.Errorf("error creating manifest directory: %v", err) |
| 1446 | } |
| 1447 | |
| 1448 | err = os.WriteFile(manifestFile, manifestData, 0644) |
| 1449 | if err != nil { |
| 1450 | return fmt.Errorf("error writing manifest file: %v", err) |
| 1451 | } |
| 1452 | |
| 1453 | return nil |
| 1454 | } |
| 1455 | |
| 1456 | // InstallAddonFromTarball handles complete installation process for tarball-based addons |
| 1457 | func InstallAddonFromTarball(app *DdevApp, tarballURL, downloadedRelease, repository string, verbose bool) error { |
no test coverage detected