Skip to content

Commit a2931cf

Browse files
Merge pull request #311 from wttech/pkg-deploy-extract-only
Package install extract only when snapshot
2 parents 1955518 + 9a7c87f commit a2931cf

File tree

7 files changed

+28
-3
lines changed

7 files changed

+28
-3
lines changed

examples/docker/src/aem/default/etc/aem.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,8 @@ instance:
165165
install_dependency_handling: required
166166
# Controls how 'rep:policy' nodes are handled during import
167167
install_ac_handling: ''
168+
# Determines whether a copy of the package is created during installation (saves disk space but prevents uninstallation)
169+
install_extract_only: snapshot
168170

169171
# 'SSL By Default'
170172
ssl:

pkg/cfg/defaults.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/wttech/aemc/pkg/common"
77
"github.com/wttech/aemc/pkg/common/fmtx"
88
"github.com/wttech/aemc/pkg/instance"
9+
"github.com/wttech/aemc/pkg/pkg"
910
"time"
1011
)
1112

@@ -104,6 +105,7 @@ func (c *Config) setDefaults() {
104105
v.SetDefault("instance.package.install_save_threshold", 1024)
105106
v.SetDefault("instance.package.install_ac_handling", "")
106107
v.SetDefault("instance.package.install_dependency_handling", "required")
108+
v.SetDefault("instance.package.install_extract_only", pkg.InstallExtractOnlySnapshot)
107109

108110
v.SetDefault("instance.package.install_html.enabled", false)
109111
v.SetDefault("instance.package.install_html.strict", true)

pkg/package_manager.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ type PackageManager struct {
4040
InstallSaveThreshold int
4141
InstallACHandling string
4242
InstallDependencyHandling string
43+
InstallExtractOnly string
4344
InstallHTMLEnabled bool
4445
InstallHTMLConsole bool
4546
InstallHTMLStrict bool
@@ -60,6 +61,7 @@ func NewPackageManager(res *Instance) *PackageManager {
6061
InstallSaveThreshold: cv.GetInt("instance.package.install_save_threshold"),
6162
InstallACHandling: cv.GetString("instance.package.install_ac_handling"),
6263
InstallDependencyHandling: cv.GetString("instance.package.install_dependency_handling"),
64+
InstallExtractOnly: cv.GetString("instance.package.install_extract_only"),
6365
InstallHTMLEnabled: cv.GetBool("instance.package.install_html.enabled"),
6466
InstallHTMLConsole: cv.GetBool("instance.package.install_html.console"),
6567
InstallHTMLStrict: cv.GetBool("instance.package.install_html.strict"),
@@ -503,7 +505,7 @@ func (pm *PackageManager) Install(remotePath string) error {
503505

504506
func (pm *PackageManager) installJSON(remotePath string) error {
505507
log.Infof("%s > installing package '%s'", pm.instance.IDColor(), remotePath)
506-
response, err := pm.instance.http.Request().SetFormData(pm.installParams()).Post(ServiceJsonPath + remotePath)
508+
response, err := pm.instance.http.Request().SetFormData(pm.installParams(remotePath)).Post(ServiceJsonPath + remotePath)
507509
if err != nil {
508510
return fmt.Errorf("%s > cannot install package '%s': %w", pm.instance.IDColor(), remotePath, err)
509511
} else if response.IsError() {
@@ -523,7 +525,7 @@ func (pm *PackageManager) installJSON(remotePath string) error {
523525
func (pm *PackageManager) installHTML(remotePath string) error {
524526
log.Infof("%s > installing package '%s'", pm.instance.IDColor(), remotePath)
525527

526-
response, err := pm.instance.http.Request().SetFormData(pm.installParams()).Post(ServiceHtmlPath + remotePath)
528+
response, err := pm.instance.http.Request().SetFormData(pm.installParams(remotePath)).Post(ServiceHtmlPath + remotePath)
527529
if err != nil {
528530
return fmt.Errorf("%s > cannot install package '%s': %w", pm.instance.IDColor(), remotePath, err)
529531
} else if response.IsError() {
@@ -586,16 +588,27 @@ func (pm *PackageManager) installHTML(remotePath string) error {
586588
return nil
587589
}
588590

589-
func (pm *PackageManager) installParams() map[string]string {
591+
func (pm *PackageManager) installParams(remotePath string) map[string]string {
590592
return map[string]string{
591593
"cmd": "install",
592594
"recursive": fmt.Sprintf("%v", pm.InstallRecursive),
593595
"autosave": fmt.Sprintf("%d", pm.InstallSaveThreshold),
594596
"acHandling": pm.InstallACHandling,
595597
"dependencyHandling": pm.InstallDependencyHandling,
598+
"extractOnly": pm.determineInstallExtractOnly(remotePath),
596599
}
597600
}
598601

602+
func (pm *PackageManager) determineInstallExtractOnly(remotePath string) string {
603+
var extractOnly string
604+
if pm.InstallExtractOnly == pkg.InstallExtractOnlySnapshot {
605+
extractOnly = fmt.Sprintf("%v", pm.IsSnapshot(remotePath))
606+
} else {
607+
extractOnly = pm.InstallExtractOnly
608+
}
609+
return extractOnly
610+
}
611+
599612
func (pm *PackageManager) DeployWithChanged(localPath string) (bool, error) {
600613
if pm.IsSnapshot(localPath) {
601614
return pm.deploySnapshot(localPath)

pkg/pkg/constants.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@ package pkg
33
const (
44
InstallSuccess = "<span class=\"Package imported.\">"
55
InstallSuccessWithErrors = "<span class=\"Package imported (with errors"
6+
7+
InstallExtractOnlySnapshot = "snapshot"
68
)

pkg/project/app_classic/aem/default/etc/aem.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,8 @@ instance:
165165
install_dependency_handling: required
166166
# Controls how 'rep:policy' nodes are handled during import
167167
install_ac_handling: ''
168+
# Determines whether a copy of the package is created during installation (saves disk space but prevents uninstallation)
169+
install_extract_only: snapshot
168170

169171
# 'SSL By Default'
170172
ssl:

pkg/project/app_cloud/aem/default/etc/aem.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,8 @@ instance:
165165
install_dependency_handling: required
166166
# Controls how 'rep:policy' nodes are handled during import
167167
install_ac_handling: ''
168+
# Determines whether a copy of the package is created during installation (saves disk space but prevents uninstallation)
169+
install_extract_only: snapshot
168170

169171
# 'SSL By Default'
170172
ssl:

pkg/project/instance/aem/default/etc/aem.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,8 @@ instance:
165165
install_dependency_handling: required
166166
# Controls how 'rep:policy' nodes are handled during import
167167
install_ac_handling: ''
168+
# Determines whether a copy of the package is created during installation (saves disk space but prevents uninstallation)
169+
install_extract_only: snapshot
168170

169171
# 'SSL By Default'
170172
ssl:

0 commit comments

Comments
 (0)