GetMtaDescriptorFromArchive retrieves MTA ID from MTA archive
(mtaArchiveFilePath string)
| 23 | |
| 24 | // GetMtaDescriptorFromArchive retrieves MTA ID from MTA archive |
| 25 | func GetMtaDescriptorFromArchive(mtaArchiveFilePath string) (MtaDescriptor, error) { |
| 26 | mtaArchiveReader, err := zip.OpenReader(mtaArchiveFilePath) |
| 27 | if err != nil { |
| 28 | return MtaDescriptor{}, err |
| 29 | } |
| 30 | defer mtaArchiveReader.Close() |
| 31 | |
| 32 | descriptorFile := findMtaDescriptorFile(mtaArchiveReader.File) |
| 33 | if descriptorFile == nil { |
| 34 | return MtaDescriptor{}, errors.New("Could not get a valid MTA descriptor from archive") |
| 35 | } |
| 36 | |
| 37 | descriptorBytes, err := readZipFile(descriptorFile) |
| 38 | if err != nil { |
| 39 | return MtaDescriptor{}, err |
| 40 | } |
| 41 | |
| 42 | var descriptor MtaDescriptor |
| 43 | if err = yaml.Unmarshal(descriptorBytes, &descriptor); err != nil { |
| 44 | return MtaDescriptor{}, err |
| 45 | } |
| 46 | |
| 47 | if descriptor.ID != "" { |
| 48 | return descriptor, nil |
| 49 | } |
| 50 | return MtaDescriptor{}, errors.New("Could not get a valid MTA descriptor from archive") |
| 51 | } |
| 52 | |
| 53 | func findMtaDescriptorFile(files []*zip.File) *zip.File { |
| 54 | for _, file := range files { |
no test coverage detected