ExtractMetaFromTarball extract metadata from given tarball and return the metadata json string. This function do not unzip the whole model tarball
(tarballName, cwd string)
| 293 | // and return the metadata json string. This function do not |
| 294 | // unzip the whole model tarball |
| 295 | func ExtractMetaFromTarball(tarballName, cwd string) (*Model, error) { |
| 296 | if !strings.HasSuffix(tarballName, ".tar.gz") { |
| 297 | return nil, fmt.Errorf("given file should be a .tar.gz file") |
| 298 | } |
| 299 | cmd := exec.Command("tar", "xpf", tarballName, "-C", cwd, "./"+modelMetaFileName) |
| 300 | out, err := cmd.CombinedOutput() |
| 301 | if err != nil { |
| 302 | return nil, fmt.Errorf("can't unzip model tarball %s: %s, %v", tarballName, out, err) |
| 303 | } |
| 304 | metaPath := path.Join(cwd, modelMetaFileName) |
| 305 | defer os.Remove(metaPath) |
| 306 | return loadMeta(metaPath) |
| 307 | } |
| 308 | |
| 309 | func loadMeta(metaFileName string) (*Model, error) { |
| 310 | data, err := ioutil.ReadFile(metaFileName) |
no test coverage detected