-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexport.go
105 lines (88 loc) · 2.35 KB
/
export.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package emdb
import (
"io"
"io/fs"
"os"
"path"
)
type ExportSpeaker struct {
Name string
Img string
Desc []string
}
type ExportPartner struct {
Name string
Img string
Url string
}
// Expect array of partners data to extract, path where to copy all expected images and prefix for images path
func GetSpeakers(imSp []ImportSpeaker, dest string, prefix string) (expSp []ExportSpeaker, err error) {
var proceedSpeaker speaker
var proceedDesc []string
var outSpeaker ExportSpeaker
var img string
var imgToCopy []string
for _, sp := range imSp {
proceedSpeaker = speakers[sp.Id]
proceedDesc = []string{}
for _, i := range sp.Desc {
proceedDesc = append(proceedDesc, proceedSpeaker.Desc[i])
}
img = proceedSpeaker.Img[sp.Img]
imgToCopy = append(imgToCopy, img)
outSpeaker = ExportSpeaker{
Name: proceedSpeaker.Name[sp.Name],
Img: path.Join(prefix, img),
Desc: proceedDesc,
}
expSp = append(expSp, outSpeaker)
}
if err = os.MkdirAll(dest, os.ModePerm); err == nil {
err = copyImg(dest, imgs, "img/speakers", imgToCopy)
}
return
}
// Expect array of speakers data to extract, path where to copy all expected images and prefix for images path
func GetPartners(imPa []ImportPartner, dest string, prefix string) (expPa []ExportPartner, err error) {
var proceedPartner partner
var outPartner ExportPartner
var img string
var imgToCopy []string
for _, pa := range imPa {
proceedPartner = partners[pa.Id]
img = proceedPartner.Img[pa.Img]
imgToCopy = append(imgToCopy, img)
outPartner = ExportPartner{
Name: proceedPartner.Name[pa.Name],
Img: path.Join(prefix, img),
Url: proceedPartner.Url[pa.Url],
}
expPa = append(expPa, outPartner)
}
if err = os.MkdirAll(dest, os.ModePerm); err == nil {
err = copyImg(dest, imgs, "img/partners", imgToCopy)
}
return
}
func copyImg(dst string, src fs.FS, prefix string, imgToCopy []string) (err error) {
for _, i := range imgToCopy {
if err = copy(i, dst, src, prefix); err != nil {
break
}
}
return
}
func copy(name, dst string, src fs.FS, prefix string) (err error) {
var source fs.File
var destination *os.File
if source, err = src.Open(path.Join(prefix, name)); err != nil {
return
}
defer source.Close()
if destination, err = os.Create(path.Join(dst, name)); err != nil {
return
}
defer destination.Close()
_, err = io.Copy(destination, source)
return
}