Skip to content

Commit 93798fc

Browse files
author
Dominik Przybyl
committed
refactor, move ContentManager from Instance object to AEM object
1 parent c4cc797 commit 93798fc

File tree

5 files changed

+69
-77
lines changed

5 files changed

+69
-77
lines changed

cmd/aem/content.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func (c *CLI) contentDownloadCmd() *cobra.Command {
8585
filterFile, _ := cmd.Flags().GetString("filter-file")
8686
clean, _ := cmd.Flags().GetBool("clean")
8787
vault, _ := cmd.Flags().GetBool("vault")
88-
if err = instance.ContentManager().Download(targetFile, clean, vault, pkg.PackageCreateOpts{
88+
if err = c.aem.ContentManager().Download(instance, targetFile, clean, vault, pkg.PackageCreateOpts{
8989
PID: pid,
9090
FilterRoots: filterRoots,
9191
FilterFile: filterFile,
@@ -136,7 +136,7 @@ func (c *CLI) contentPullCmd() *cobra.Command {
136136
vault, _ := cmd.Flags().GetBool("vault")
137137
replace, _ := cmd.Flags().GetBool("replace")
138138
if dir != "" {
139-
if err = instance.ContentManager().PullDir(dir, clean, vault, replace, pkg.PackageCreateOpts{
139+
if err = c.aem.ContentManager().PullDir(instance, dir, clean, vault, replace, pkg.PackageCreateOpts{
140140
PID: fmt.Sprintf("aemc:content-pull:%s-SNAPSHOT", timex.FileTimestampForNow()),
141141
FilterRoots: filterRoots,
142142
FilterFile: filterFile,
@@ -146,7 +146,7 @@ func (c *CLI) contentPullCmd() *cobra.Command {
146146
}
147147
c.SetOutput("dir", dir)
148148
} else if file != "" {
149-
if err = instance.ContentManager().PullFile(file, clean, vault, pkg.PackageCreateOpts{
149+
if err = c.aem.ContentManager().PullFile(instance, file, clean, vault, pkg.PackageCreateOpts{
150150
PID: fmt.Sprintf("aemc:content-pull:%s-SNAPSHOT", timex.FileTimestampForNow()),
151151
FilterRoots: filterRoots,
152152
ExcludePatterns: excludePatterns,
@@ -201,7 +201,7 @@ func (c *CLI) contentPushCmd() *cobra.Command {
201201
excludePatterns := determineExcludePatterns(cmd)
202202
clean, _ := cmd.Flags().GetBool("clean")
203203
vault, _ := cmd.Flags().GetBool("vault")
204-
if err = instance.ContentManager().Push(path, clean, vault, pkg.PackageCreateOpts{
204+
if err = c.aem.ContentManager().Push(instance, path, clean, vault, pkg.PackageCreateOpts{
205205
PID: fmt.Sprintf("aemc:content-push:%s-SNAPSHOT", timex.FileTimestampForNow()),
206206
FilterRoots: filterRoots,
207207
ExcludePatterns: excludePatterns,
@@ -248,7 +248,7 @@ func (c *CLI) contentCopyCmd() *cobra.Command {
248248
clean, _ := cmd.Flags().GetBool("clean")
249249
vault, _ := cmd.Flags().GetBool("vault")
250250
rcpArgs, _ := cmd.Flags().GetString("rcp-args")
251-
if err = instance.ContentManager().Copy(targetInstance, clean, vault, rcpArgs, pkg.PackageCreateOpts{
251+
if err = c.aem.ContentManager().Copy(instance, targetInstance, clean, vault, rcpArgs, pkg.PackageCreateOpts{
252252
PID: fmt.Sprintf("aemc:content-copy:%s-SNAPSHOT", timex.FileTimestampForNow()),
253253
FilterRoots: filterRoots,
254254
FilterFile: filterFile,

pkg/content_manager.go

+61-62
Original file line numberDiff line numberDiff line change
@@ -18,56 +18,55 @@ const (
1818
)
1919

2020
type ContentManager struct {
21-
instance *Instance
21+
aem *AEM
22+
contentManager *content.Manager
23+
vaultCli *VaultCli
2224
}
2325

24-
func NewContentManager(instance *Instance) *ContentManager {
25-
return &ContentManager{instance: instance}
26-
}
27-
28-
func (cm *ContentManager) pkgMgr() *PackageManager {
29-
return cm.instance.PackageManager()
30-
}
31-
32-
func (cm *ContentManager) contentManager() *content.Manager {
33-
return cm.instance.manager.aem.ContentManager()
26+
func NewContentManager(aem *AEM) *ContentManager {
27+
return &ContentManager{
28+
aem: aem,
29+
contentManager: content.NewManager(aem.baseOpts),
30+
vaultCli: NewVaultCli(aem),
31+
}
3432
}
3533

36-
func (cm *ContentManager) vaultCli() *VaultCli {
37-
return NewVaultCli(cm.instance.manager.aem)
38-
}
3934
func (cm *ContentManager) tmpDir() string {
40-
if cm.instance.manager.aem.Detached() {
35+
if cm.aem.Detached() {
4136
return os.TempDir()
4237
}
43-
return cm.instance.manager.aem.baseOpts.TmpDir
38+
return cm.aem.baseOpts.TmpDir
39+
}
40+
41+
func (cm *ContentManager) Clean(path string) error {
42+
return cm.contentManager.Clean(path)
4443
}
4544

46-
func (cm *ContentManager) pullContent(workDir string, vault bool, opts PackageCreateOpts) error {
45+
func (cm *ContentManager) pullContent(instance *Instance, workDir string, vault bool, opts PackageCreateOpts) error {
4746
if vault {
4847
if err := copyPackageAllFiles(workDir, opts); err != nil {
4948
return err
5049
}
5150
filterFile := filepath.Join(workDir, pkg.MetaPath, pkg.VltDir, FilterXML)
5251
vaultCliArgs := []string{
5352
"vlt",
54-
"--credentials", fmt.Sprintf("%s:%s", cm.instance.user, cm.instance.password),
53+
"--credentials", fmt.Sprintf("%s:%s", instance.user, instance.password),
5554
"checkout",
5655
"--force",
5756
"--filter", filterFile,
58-
fmt.Sprintf("%s/crx/server/crx.default", cm.instance.http.baseURL),
57+
fmt.Sprintf("%s/crx/server/crx.default", instance.http.baseURL),
5958
workDir,
6059
}
61-
if err := cm.vaultCli().CommandShell(vaultCliArgs); err != nil {
60+
if err := cm.vaultCli.CommandShell(vaultCliArgs); err != nil {
6261
return err
6362
}
64-
if err := cm.contentManager().DeleteFiles(filepath.Join(workDir, content.JCRRoot)); err != nil {
63+
if err := cm.contentManager.DeleteFiles(filepath.Join(workDir, content.JCRRoot)); err != nil {
6564
return err
6665
}
6766
} else {
6867
pkgFile := pathx.RandomFileName(cm.tmpDir(), "content_pull", ".zip")
6968
defer func() { _ = pathx.DeleteIfExists(pkgFile) }()
70-
if err := cm.downloadByPkgMgr(pkgFile, opts); err != nil {
69+
if err := cm.downloadByPkgMgr(instance, pkgFile, opts); err != nil {
7170
return err
7271
}
7372
if err := content.Unzip(pkgFile, workDir); err != nil {
@@ -77,32 +76,32 @@ func (cm *ContentManager) pullContent(workDir string, vault bool, opts PackageCr
7776
return nil
7877
}
7978

80-
func (cm *ContentManager) downloadByPkgMgr(localFile string, opts PackageCreateOpts) error {
81-
remotePath, err := cm.pkgMgr().Create(opts)
82-
defer func() { _ = cm.pkgMgr().Delete(remotePath) }()
79+
func (cm *ContentManager) downloadByPkgMgr(instance *Instance, localFile string, opts PackageCreateOpts) error {
80+
remotePath, err := instance.PackageManager().Create(opts)
81+
defer func() { _ = instance.PackageManager().Delete(remotePath) }()
8382
if err != nil {
8483
return err
8584
}
86-
if err = cm.pkgMgr().Build(remotePath); err != nil {
85+
if err = instance.PackageManager().Build(remotePath); err != nil {
8786
return err
8887
}
89-
if err = cm.pkgMgr().Download(remotePath, localFile); err != nil {
88+
if err = instance.PackageManager().Download(remotePath, localFile); err != nil {
9089
return err
9190
}
9291
return nil
9392
}
9493

95-
func (cm *ContentManager) Download(localFile string, clean bool, vault bool, opts PackageCreateOpts) error {
94+
func (cm *ContentManager) Download(instance *Instance, localFile string, clean bool, vault bool, opts PackageCreateOpts) error {
9695
workDir := pathx.RandomDir(cm.tmpDir(), "content_download")
9796
defer func() { _ = pathx.DeleteIfExists(workDir) }()
9897
if !clean && !vault {
99-
return cm.downloadByPkgMgr(localFile, opts)
98+
return cm.downloadByPkgMgr(instance, localFile, opts)
10099
}
101-
if err := cm.pullContent(workDir, vault, opts); err != nil {
100+
if err := cm.pullContent(instance, workDir, vault, opts); err != nil {
102101
return err
103102
}
104103
if clean {
105-
if err := cm.contentManager().Clean(filepath.Join(workDir, content.JCRRoot)); err != nil {
104+
if err := cm.contentManager.Clean(filepath.Join(workDir, content.JCRRoot)); err != nil {
106105
return err
107106
}
108107
}
@@ -112,14 +111,14 @@ func (cm *ContentManager) Download(localFile string, clean bool, vault bool, opt
112111
return nil
113112
}
114113

115-
func (cm *ContentManager) PullDir(dir string, clean bool, vault bool, replace bool, opts PackageCreateOpts) error {
114+
func (cm *ContentManager) PullDir(instance *Instance, dir string, clean bool, vault bool, replace bool, opts PackageCreateOpts) error {
116115
workDir := pathx.RandomDir(cm.tmpDir(), "content_pull")
117116
defer func() { _ = pathx.DeleteIfExists(workDir) }()
118-
if err := cm.pullContent(workDir, vault, opts); err != nil {
117+
if err := cm.pullContent(instance, workDir, vault, opts); err != nil {
119118
return err
120119
}
121120
if replace {
122-
if err := cm.contentManager().DeleteFiles(dir); err != nil {
121+
if err := cm.contentManager.DeleteFiles(dir); err != nil {
123122
return err
124123
}
125124
}
@@ -128,22 +127,22 @@ func (cm *ContentManager) PullDir(dir string, clean bool, vault bool, replace bo
128127
return err
129128
}
130129
if clean {
131-
if err := cm.contentManager().Clean(dir); err != nil {
130+
if err := cm.contentManager.Clean(dir); err != nil {
132131
return err
133132
}
134133
}
135134
return nil
136135
}
137136

138-
func (cm *ContentManager) PullFile(file string, clean bool, vault bool, opts PackageCreateOpts) error {
137+
func (cm *ContentManager) PullFile(instance *Instance, file string, clean bool, vault bool, opts PackageCreateOpts) error {
139138
workDir := pathx.RandomDir(cm.tmpDir(), "content_pull")
140139
defer func() { _ = pathx.DeleteIfExists(workDir) }()
141-
if err := cm.pullContent(workDir, vault, opts); err != nil {
140+
if err := cm.pullContent(instance, workDir, vault, opts); err != nil {
142141
return err
143142
}
144143
syncFile := DetermineSyncFile(file)
145144
if file != syncFile {
146-
if err := cm.contentManager().DeleteFile(file, nil); err != nil {
145+
if err := cm.contentManager.DeleteFile(file, nil); err != nil {
147146
return err
148147
}
149148
}
@@ -152,41 +151,41 @@ func (cm *ContentManager) PullFile(file string, clean bool, vault bool, opts Pac
152151
return err
153152
}
154153
if clean {
155-
if err := cm.contentManager().Clean(syncFile); err != nil {
154+
if err := cm.contentManager.Clean(syncFile); err != nil {
156155
return err
157156
}
158157
}
159158
return nil
160159
}
161160

162-
func (cm *ContentManager) pushContent(destInstance *Instance, vault bool, opts PackageCreateOpts) error {
161+
func (cm *ContentManager) pushContent(instance *Instance, vault bool, opts PackageCreateOpts) error {
163162
if vault {
164163
mainDir, _, _ := strings.Cut(opts.ContentPath, content.JCRRoot)
165164
jcrPath := DetermineFilterRoot(opts.ContentPath)
166165
vaultCliArgs := []string{
167166
"vlt",
168-
"--credentials", fmt.Sprintf("%s:%s", destInstance.user, destInstance.password),
167+
"--credentials", fmt.Sprintf("%s:%s", instance.user, instance.password),
169168
"import",
170-
fmt.Sprintf("%s/crx/-/jcr:root%s", destInstance.http.baseURL, jcrPath),
169+
fmt.Sprintf("%s/crx/-/jcr:root%s", instance.http.baseURL, jcrPath),
171170
mainDir,
172171
}
173-
if err := cm.vaultCli().CommandShell(vaultCliArgs); err != nil {
172+
if err := cm.vaultCli.CommandShell(vaultCliArgs); err != nil {
174173
return err
175174
}
176175
} else {
177-
remotePath, err := destInstance.PackageManager().Create(opts)
178-
defer func() { _ = destInstance.PackageManager().Delete(remotePath) }()
176+
remotePath, err := instance.PackageManager().Create(opts)
177+
defer func() { _ = instance.PackageManager().Delete(remotePath) }()
179178
if err != nil {
180179
return err
181180
}
182-
if err = destInstance.PackageManager().Install(remotePath); err != nil {
181+
if err = instance.PackageManager().Install(remotePath); err != nil {
183182
return err
184183
}
185184
}
186185
return nil
187186
}
188187

189-
func (cm *ContentManager) Push(path string, clean bool, vault bool, opts PackageCreateOpts) error {
188+
func (cm *ContentManager) Push(instance *Instance, path string, clean bool, vault bool, opts PackageCreateOpts) error {
190189
if !pathx.Exists(path) {
191190
return fmt.Errorf("cannot push content as it does not exist '%s'", path)
192191
}
@@ -197,37 +196,37 @@ func (cm *ContentManager) Push(path string, clean bool, vault bool, opts Package
197196
return err
198197
}
199198
if clean {
200-
if err := cm.contentManager().Clean(filepath.Join(workDir, content.JCRRoot)); err != nil {
199+
if err := cm.contentManager.Clean(filepath.Join(workDir, content.JCRRoot)); err != nil {
201200
return err
202201
}
203202
}
204203
opts.ContentPath = filepath.Join(workDir, content.JCRRoot)
205204
}
206-
if err := cm.pushContent(cm.instance, vault, opts); err != nil {
205+
if err := cm.pushContent(instance, vault, opts); err != nil {
207206
return err
208207
}
209208
return nil
210209
}
211210

212-
func (cm *ContentManager) copyByPkgMgr(destInstance *Instance, clean bool, opts PackageCreateOpts) error {
211+
func (cm *ContentManager) copyByPkgMgr(srcInstance *Instance, destInstance *Instance, clean bool, opts PackageCreateOpts) error {
213212
pkgFile := pathx.RandomFileName(cm.tmpDir(), "content_copy", ".zip")
214213
defer func() { _ = pathx.DeleteIfExists(pkgFile) }()
215214
if clean {
216215
workDir := pathx.RandomDir(cm.tmpDir(), "content_copy")
217216
defer func() { _ = pathx.DeleteIfExists(workDir) }()
218-
if err := cm.pullContent(workDir, false, opts); err != nil {
217+
if err := cm.pullContent(srcInstance, workDir, false, opts); err != nil {
219218
return err
220219
}
221220
if clean {
222-
if err := cm.contentManager().Clean(filepath.Join(workDir, content.JCRRoot)); err != nil {
221+
if err := cm.contentManager.Clean(filepath.Join(workDir, content.JCRRoot)); err != nil {
223222
return err
224223
}
225224
}
226225
if err := content.Zip(workDir, pkgFile); err != nil {
227226
return err
228227
}
229228
} else {
230-
if err := cm.downloadByPkgMgr(pkgFile, opts); err != nil {
229+
if err := cm.downloadByPkgMgr(srcInstance, pkgFile, opts); err != nil {
231230
return err
232231
}
233232
}
@@ -242,15 +241,15 @@ func (cm *ContentManager) copyByPkgMgr(destInstance *Instance, clean bool, opts
242241
return nil
243242
}
244243

245-
func (cm *ContentManager) copyByVaultCli(destInstance *Instance, clean bool, rcpArgs string, opts PackageCreateOpts) error {
244+
func (cm *ContentManager) copyByVaultCli(srcInstance *Instance, destInstance *Instance, clean bool, rcpArgs string, opts PackageCreateOpts) error {
246245
if clean || opts.FilterFile != "" {
247246
workDir := pathx.RandomDir(cm.tmpDir(), "content_copy")
248247
defer func() { _ = pathx.DeleteIfExists(workDir) }()
249-
if err := cm.pullContent(workDir, true, opts); err != nil {
248+
if err := cm.pullContent(srcInstance, workDir, true, opts); err != nil {
250249
return err
251250
}
252251
if clean {
253-
if err := cm.contentManager().Clean(filepath.Join(workDir, content.JCRRoot)); err != nil {
252+
if err := cm.contentManager.Clean(filepath.Join(workDir, content.JCRRoot)); err != nil {
254253
return err
255254
}
256255
}
@@ -259,7 +258,7 @@ func (cm *ContentManager) copyByVaultCli(destInstance *Instance, clean bool, rcp
259258
return err
260259
}
261260
} else {
262-
parsedURLSrc, err := url.Parse(cm.instance.http.baseURL)
261+
parsedURLSrc, err := url.Parse(srcInstance.http.baseURL)
263262
if err != nil {
264263
return err
265264
}
@@ -275,25 +274,25 @@ func (cm *ContentManager) copyByVaultCli(destInstance *Instance, clean bool, rcp
275274
vaultCliArgs = append(vaultCliArgs, strings.Fields(rcpArgs)...)
276275
vaultCliArgs = append(vaultCliArgs, []string{
277276
fmt.Sprintf("%s://%s:%s@%s/crx/-/jcr:root%s",
278-
parsedURLSrc.Scheme, cm.instance.user, cm.instance.password,
277+
parsedURLSrc.Scheme, srcInstance.user, srcInstance.password,
279278
parsedURLSrc.Host, filterRoot),
280279
fmt.Sprintf("%s://%s:%s@%s/crx/-/jcr:root%s",
281280
parsedURLDest.Scheme, destInstance.user, destInstance.password,
282281
parsedURLDest.Host, filterRoot),
283282
}...)
284-
if err = cm.vaultCli().CommandShell(vaultCliArgs); err != nil {
283+
if err = cm.vaultCli.CommandShell(vaultCliArgs); err != nil {
285284
return err
286285
}
287286
}
288287
}
289288
return nil
290289
}
291290

292-
func (cm *ContentManager) Copy(destInstance *Instance, clean bool, vault bool, rcpArgs string, opts PackageCreateOpts) error {
291+
func (cm *ContentManager) Copy(srcInstance *Instance, destInstance *Instance, clean bool, vault bool, rcpArgs string, opts PackageCreateOpts) error {
293292
if vault {
294-
return cm.copyByVaultCli(destInstance, clean, rcpArgs, opts)
293+
return cm.copyByVaultCli(srcInstance, destInstance, clean, rcpArgs, opts)
295294
}
296-
return cm.copyByPkgMgr(destInstance, clean, opts)
295+
return cm.copyByPkgMgr(srcInstance, destInstance, clean, opts)
297296
}
298297

299298
func DetermineSyncFile(file string) string {

pkg/facade.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ package pkg
44
import (
55
"github.com/wttech/aemc/pkg/base"
66
"github.com/wttech/aemc/pkg/cfg"
7-
"github.com/wttech/aemc/pkg/content"
87
"github.com/wttech/aemc/pkg/java"
98
"github.com/wttech/aemc/pkg/project"
109
"io"
@@ -19,7 +18,7 @@ type AEM struct {
1918
project *project.Project
2019
baseOpts *base.Opts
2120
javaOpts *java.Opts
22-
contentManager *content.Manager
21+
contentManager *ContentManager
2322
instanceManager *InstanceManager
2423
}
2524

@@ -34,7 +33,7 @@ func NewAEM(config *cfg.Config) *AEM {
3433
result.project = project.New(result.config)
3534
result.baseOpts = base.NewOpts(result.config)
3635
result.javaOpts = java.NewOpts(result.baseOpts)
37-
result.contentManager = content.NewManager(result.baseOpts)
36+
result.contentManager = NewContentManager(result)
3837
result.instanceManager = NewInstanceManager(result)
3938
return result
4039
}
@@ -72,7 +71,7 @@ func (a *AEM) Project() *project.Project {
7271
return a.project
7372
}
7473

75-
func (a *AEM) ContentManager() *content.Manager {
74+
func (a *AEM) ContentManager() *ContentManager {
7675
return a.contentManager
7776
}
7877

0 commit comments

Comments
 (0)