func prepare(sourceDir, targetDir, buildDir string) (snapName string, err error) { // ensure we have valid content yaml, err := ioutil.ReadFile(filepath.Join(sourceDir, "meta", "snap.yaml")) if err != nil { return "", err } info, err := snap.InfoFromSnapYaml(yaml) if err != nil { return "", err } err = snap.Validate(info) if err != nil { return "", err } if err := copyToBuildDir(sourceDir, buildDir); err != nil { return "", err } // build the package snapName = fmt.Sprintf("%s_%s_%v.snap", info.Name(), info.Version, debArchitecture(info)) if targetDir != "" { snapName = filepath.Join(targetDir, snapName) if _, err := os.Stat(targetDir); os.IsNotExist(err) { if err := os.MkdirAll(targetDir, 0755); err != nil { return "", err } } } return snapName, nil }
// MockInfo parses the given snap.yaml text and returns a validated snap.Info object including the optional SideInfo. // // The result is just kept in memory, there is nothing kept on disk. If that is // desired please use MockSnap instead. func MockInfo(c *check.C, yamlText string, sideInfo *snap.SideInfo) *snap.Info { if sideInfo == nil { sideInfo = &snap.SideInfo{} } snapInfo, err := snap.InfoFromSnapYaml([]byte(yamlText)) c.Assert(err, check.IsNil) snapInfo.SideInfo = *sideInfo err = snap.Validate(snapInfo) c.Assert(err, check.IsNil) return snapInfo }