1
|
|
|
import path from 'path' |
2
|
|
|
import { |
3
|
|
|
Hooks, |
4
|
|
|
fileUtils, |
|
|
|
|
5
|
|
|
FileParser, |
6
|
|
|
fileAttr, |
|
|
|
|
7
|
|
|
Util, |
|
|
|
|
8
|
|
|
Manager, |
9
|
|
|
cleanSlug, |
|
|
|
|
10
|
|
|
getTemplate, |
|
|
|
|
11
|
|
|
config, |
12
|
|
|
save, |
|
|
|
|
13
|
|
|
abeCreate |
14
|
|
|
} from '../../' |
15
|
|
|
|
16
|
|
|
var duplicate = function(oldFilePath, template, newPath, name, req, isUpdate = false) { |
17
|
|
|
var p = new Promise((resolve, reject) => { |
18
|
|
|
Hooks.instance.trigger('beforeDuplicate', oldFilePath, template, newPath, name, req, isUpdate) |
19
|
|
|
|
20
|
|
|
var json = {} |
21
|
|
|
var revisions = [] |
22
|
|
|
if(typeof oldFilePath !== 'undefined' && oldFilePath !== null) { |
23
|
|
|
var files = Manager.instance.getList() |
24
|
|
|
var fileWithoutExtension = oldFilePath.replace('.' + config.files.templates.extension, '') |
25
|
|
|
|
26
|
|
|
var doc = null |
27
|
|
|
Array.prototype.forEach.call(files, (file) => { |
28
|
|
|
if (file.path.indexOf(fileWithoutExtension) > -1) { |
29
|
|
|
doc = file |
30
|
|
|
} |
31
|
|
|
}) |
32
|
|
|
|
33
|
|
|
if(typeof doc.revisions !== 'undefined' && doc.revisions !== null) { |
34
|
|
|
revisions = doc.revisions |
35
|
|
|
|
36
|
|
|
if(typeof revisions !== 'undefined' && revisions !== null |
37
|
|
|
&& typeof revisions[0] !== 'undefined' && revisions[0] !== null) { |
38
|
|
|
json = FileParser.getJson(revisions[0].path) |
39
|
|
|
} |
40
|
|
|
} |
41
|
|
|
|
42
|
|
|
delete json.abe_meta |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
if (isUpdate) { |
46
|
|
|
Hooks.instance.trigger('beforeUpdate', json, oldFilePath, template, newPath, name, req, isUpdate) |
47
|
|
|
FileParser.deleteFile(oldFilePath) |
48
|
|
|
} |
49
|
|
|
Hooks.instance.trigger('afterDuplicate', json, oldFilePath, template, newPath, name, req, isUpdate) |
50
|
|
|
|
51
|
|
|
var pCreate = abeCreate(template, newPath, name, req, json, (isUpdate) ? false : true) |
52
|
|
|
pCreate.then((resSave) => { |
53
|
|
|
resolve(resSave) |
54
|
|
|
}, |
55
|
|
|
() => { |
56
|
|
|
reject() |
57
|
|
|
}).catch(function(e) { |
58
|
|
|
console.error('[ERROR] abe-duplicate.js', e) |
59
|
|
|
reject() |
60
|
|
|
}) |
61
|
|
|
}) |
62
|
|
|
|
63
|
|
|
return p |
64
|
|
|
} |
65
|
|
|
|
66
|
|
|
export default duplicate |