1
1
package pkg
2
2
3
3
import (
4
- "fmt"
5
4
"github.com/wttech/aemc/pkg/common/filex"
6
5
"github.com/wttech/aemc/pkg/common/pathx"
7
6
"github.com/wttech/aemc/pkg/content"
8
- "github.com/wttech/aemc/pkg/pkg"
9
7
"os"
10
8
"path/filepath"
11
9
"regexp"
@@ -19,14 +17,12 @@ const (
19
17
type ContentManager struct {
20
18
aem * AEM
21
19
contentManager * content.Manager
22
- vaultCli * VaultCli
23
20
}
24
21
25
22
func NewContentManager (aem * AEM ) * ContentManager {
26
23
return & ContentManager {
27
24
aem : aem ,
28
25
contentManager : content .NewManager (aem .baseOpts ),
29
- vaultCli : NewVaultCli (aem ),
30
26
}
31
27
}
32
28
@@ -41,27 +37,14 @@ func (cm *ContentManager) Clean(path string) error {
41
37
return cm .contentManager .Clean (path )
42
38
}
43
39
44
- func (cm * ContentManager ) pullContent (instance * Instance , workDir string , vault bool , opts PackageCreateOpts ) error {
45
- if vault {
46
- if err := copyPackageAllFiles (workDir , opts ); err != nil {
47
- return err
48
- }
49
- filterFile := filepath .Join (workDir , pkg .MetaPath , pkg .VltDir , FilterXML )
50
- if err := cm .vaultCli .PullContent (instance , workDir , filterFile ); err != nil {
51
- return err
52
- }
53
- if err := cm .contentManager .DeleteFiles (filepath .Join (workDir , content .JCRRoot )); err != nil {
54
- return err
55
- }
56
- } else {
57
- pkgFile := pathx .RandomFileName (cm .tmpDir (), "content_pull" , ".zip" )
58
- defer func () { _ = pathx .DeleteIfExists (pkgFile ) }()
59
- if err := cm .downloadByPkgMgr (instance , pkgFile , opts ); err != nil {
60
- return err
61
- }
62
- if err := content .Unzip (pkgFile , workDir ); err != nil {
63
- return err
64
- }
40
+ func (cm * ContentManager ) pullContent (instance * Instance , workDir string , opts PackageCreateOpts ) error {
41
+ pkgFile := pathx .RandomFileName (cm .tmpDir (), "content_pull" , ".zip" )
42
+ defer func () { _ = pathx .DeleteIfExists (pkgFile ) }()
43
+ if err := cm .downloadByPkgMgr (instance , pkgFile , opts ); err != nil {
44
+ return err
45
+ }
46
+ if err := content .Unzip (pkgFile , workDir ); err != nil {
47
+ return err
65
48
}
66
49
return nil
67
50
}
@@ -81,30 +64,31 @@ func (cm *ContentManager) downloadByPkgMgr(instance *Instance, localFile string,
81
64
return nil
82
65
}
83
66
84
- func (cm * ContentManager ) Download (instance * Instance , localFile string , clean bool , vault bool , opts PackageCreateOpts ) error {
67
+ func (cm * ContentManager ) Download (instance * Instance , localFile string , clean bool , opts PackageCreateOpts ) error {
85
68
workDir := pathx .RandomDir (cm .tmpDir (), "content_download" )
86
69
defer func () { _ = pathx .DeleteIfExists (workDir ) }()
87
- if ! clean && ! vault {
88
- return cm .downloadByPkgMgr (instance , localFile , opts )
89
- }
90
- if err := cm .pullContent (instance , workDir , vault , opts ); err != nil {
91
- return err
92
- }
93
70
if clean {
71
+ if err := cm .pullContent (instance , workDir , opts ); err != nil {
72
+ return err
73
+ }
94
74
if err := cm .contentManager .Clean (filepath .Join (workDir , content .JCRRoot )); err != nil {
95
75
return err
96
76
}
97
- }
98
- if err := content .Zip (workDir , localFile ); err != nil {
99
- return err
77
+ if err := content .Zip (workDir , localFile ); err != nil {
78
+ return err
79
+ }
80
+ } else {
81
+ if err := cm .downloadByPkgMgr (instance , localFile , opts ); err != nil {
82
+ return err
83
+ }
100
84
}
101
85
return nil
102
86
}
103
87
104
- func (cm * ContentManager ) PullDir (instance * Instance , dir string , clean bool , vault bool , replace bool , opts PackageCreateOpts ) error {
88
+ func (cm * ContentManager ) PullDir (instance * Instance , dir string , clean bool , replace bool , opts PackageCreateOpts ) error {
105
89
workDir := pathx .RandomDir (cm .tmpDir (), "content_pull" )
106
90
defer func () { _ = pathx .DeleteIfExists (workDir ) }()
107
- if err := cm .pullContent (instance , workDir , vault , opts ); err != nil {
91
+ if err := cm .pullContent (instance , workDir , opts ); err != nil {
108
92
return err
109
93
}
110
94
if replace {
@@ -124,10 +108,10 @@ func (cm *ContentManager) PullDir(instance *Instance, dir string, clean bool, va
124
108
return nil
125
109
}
126
110
127
- func (cm * ContentManager ) PullFile (instance * Instance , file string , clean bool , vault bool , opts PackageCreateOpts ) error {
111
+ func (cm * ContentManager ) PullFile (instance * Instance , file string , clean bool , opts PackageCreateOpts ) error {
128
112
workDir := pathx .RandomDir (cm .tmpDir (), "content_pull" )
129
113
defer func () { _ = pathx .DeleteIfExists (workDir ) }()
130
- if err := cm .pullContent (instance , workDir , vault , opts ); err != nil {
114
+ if err := cm .pullContent (instance , workDir , opts ); err != nil {
131
115
return err
132
116
}
133
117
syncFile := DetermineSyncFile (file )
@@ -148,23 +132,15 @@ func (cm *ContentManager) PullFile(instance *Instance, file string, clean bool,
148
132
return nil
149
133
}
150
134
151
- func (cm * ContentManager ) pushContent (instances []Instance , vault bool , opts PackageCreateOpts ) error {
135
+ func (cm * ContentManager ) pushContent (instances []Instance , pkgFile string ) error {
152
136
_ , err := InstanceProcess (cm .aem , instances , func (instance Instance ) (any , error ) {
153
- if vault {
154
- mainDir , _ , _ := strings .Cut (opts .ContentPath , content .JCRRoot )
155
- jcrPath := DetermineFilterRoot (opts .ContentPath )
156
- if err := cm .vaultCli .PushContent (& instance , mainDir , jcrPath ); err != nil {
157
- return nil , err
158
- }
159
- } else {
160
- remotePath , err := instance .PackageManager ().Create (opts )
161
- defer func () { _ = instance .PackageManager ().Delete (remotePath ) }()
162
- if err != nil {
163
- return nil , err
164
- }
165
- if err = instance .PackageManager ().Install (remotePath ); err != nil {
166
- return nil , err
167
- }
137
+ remotePath , err := instance .PackageManager ().Upload (pkgFile )
138
+ defer func () { _ = instance .PackageManager ().Delete (remotePath ) }()
139
+ if err != nil {
140
+ return nil , err
141
+ }
142
+ if err = instance .PackageManager ().Install (remotePath ); err != nil {
143
+ return nil , err
168
144
}
169
145
return nil , nil
170
146
})
@@ -174,94 +150,42 @@ func (cm *ContentManager) pushContent(instances []Instance, vault bool, opts Pac
174
150
return nil
175
151
}
176
152
177
- func (cm * ContentManager ) Push (instances []Instance , path string , clean bool , vault bool , opts PackageCreateOpts ) error {
178
- if ! pathx .Exists (path ) {
179
- return fmt .Errorf ("cannot push content as it does not exist '%s'" , path )
180
- }
153
+ func (cm * ContentManager ) Push (instances []Instance , clean bool , opts PackageCreateOpts ) error {
181
154
workDir := pathx .RandomDir (cm .tmpDir (), "content_push" )
182
- defer func () { _ = pathx .DeleteIfExists (workDir ) }()
183
- if clean || vault && pathx .IsFile (path ) {
184
- if err := copyPackageAllFiles (workDir , opts ); err != nil {
155
+ pkgFile := pathx .RandomFileName (cm .tmpDir (), "content_push" , ".zip" )
156
+ defer func () {
157
+ _ = pathx .DeleteIfExists (workDir )
158
+ _ = pathx .DeleteIfExists (pkgFile )
159
+ }()
160
+ if err := copyPackageAllFiles (workDir , opts ); err != nil {
161
+ return err
162
+ }
163
+ if clean {
164
+ if err := cm .contentManager .Clean (filepath .Join (workDir , content .JCRRoot )); err != nil {
185
165
return err
186
166
}
187
- if clean {
188
- if err := cm .contentManager .Clean (filepath .Join (workDir , content .JCRRoot )); err != nil {
189
- return err
190
- }
191
- }
192
- opts .ContentPath = filepath .Join (workDir , content .JCRRoot )
193
167
}
194
- if err := cm .pushContent (instances , vault , opts ); err != nil {
168
+ if err := content .Zip (workDir , pkgFile ); err != nil {
169
+ return err
170
+ }
171
+ if err := cm .pushContent (instances , pkgFile ); err != nil {
195
172
return err
196
173
}
197
174
return nil
198
175
}
199
176
200
- func (cm * ContentManager ) copyByPkgMgr (srcInstance * Instance , destInstances []Instance , clean bool , opts PackageCreateOpts ) error {
177
+ func (cm * ContentManager ) Copy (srcInstance * Instance , destInstances []Instance , clean bool , opts PackageCreateOpts ) error {
201
178
pkgFile := pathx .RandomFileName (cm .tmpDir (), "content_copy" , ".zip" )
202
179
defer func () { _ = pathx .DeleteIfExists (pkgFile ) }()
203
- if err := cm .Download (srcInstance , pkgFile , clean , false , opts ); err != nil {
180
+ if err := cm .Download (srcInstance , pkgFile , clean , opts ); err != nil {
204
181
return err
205
182
}
206
- _ , err := InstanceProcess (cm .aem , destInstances , func (destInstance Instance ) (any , error ) {
207
- remotePath , err := destInstance .PackageManager ().Upload (pkgFile )
208
- defer func () { _ = destInstance .PackageManager ().Delete (remotePath ) }()
209
- if err != nil {
210
- return nil , err
211
- }
212
- if err = destInstance .PackageManager ().Install (remotePath ); err != nil {
213
- return nil , err
214
- }
215
- return nil , err
216
- })
217
- if err != nil {
183
+ if err := cm .pushContent (destInstances , pkgFile ); err != nil {
218
184
return err
219
185
}
220
186
return nil
221
187
}
222
188
223
- func (cm * ContentManager ) copyByVaultCli (srcInstance * Instance , destInstances []Instance , clean bool , rcpArgs string , opts PackageCreateOpts ) error {
224
- if clean || opts .FilterFile != "" {
225
- workDir := pathx .RandomDir (cm .tmpDir (), "content_copy" )
226
- defer func () { _ = pathx .DeleteIfExists (workDir ) }()
227
- if err := cm .pullContent (srcInstance , workDir , true , opts ); err != nil {
228
- return err
229
- }
230
- if clean {
231
- if err := cm .contentManager .Clean (filepath .Join (workDir , content .JCRRoot )); err != nil {
232
- return err
233
- }
234
- }
235
- opts .ContentPath = filepath .Join (workDir , content .JCRRoot )
236
- if err := cm .pushContent (destInstances , true , opts ); err != nil {
237
- return err
238
- }
239
- } else {
240
- if rcpArgs == "" {
241
- rcpArgs = "-b 100 -r -u"
242
- }
243
- _ , err := InstanceProcess (cm .aem , destInstances , func (destInstance Instance ) (any , error ) {
244
- for _ , filterRoot := range opts .FilterRoots {
245
- if err := cm .vaultCli .CopyContent (srcInstance , & destInstance , strings .Fields (rcpArgs ), filterRoot ); err != nil {
246
- return nil , err
247
- }
248
- }
249
- return nil , nil
250
- })
251
- if err != nil {
252
- return err
253
- }
254
- }
255
- return nil
256
- }
257
-
258
- func (cm * ContentManager ) Copy (srcInstance * Instance , destInstances []Instance , clean bool , vault bool , rcpArgs string , opts PackageCreateOpts ) error {
259
- if vault {
260
- return cm .copyByVaultCli (srcInstance , destInstances , clean , rcpArgs , opts )
261
- }
262
- return cm .copyByPkgMgr (srcInstance , destInstances , clean , opts )
263
- }
264
-
265
189
func DetermineSyncFile (file string ) string {
266
190
if regexp .MustCompile (FlattenFilePattern ).MatchString (file ) {
267
191
return filepath .Join (strings .ReplaceAll (file , content .XmlFileSuffix , "" ), content .JCRContentFile )
0 commit comments