func()

in newt/pkg/localpackage.go [284:373]


func (pkg *LocalPackage) Load() error {
	var err error

	pkg.PkgY, err = config.ReadFile(pkg.PkgYamlPath())
	if err != nil {
		return err
	}
	pkg.AddCfgFilename(pkg.PkgYamlPath())

	// Set package name from the package
	pkg.name, err = pkg.PkgY.GetValString("pkg.name", nil)
	util.OneTimeWarningError(err)
	if pkg.name == "" {
		return util.FmtNewtError(
			"Package \"%s\" missing \"pkg.name\" field in its `pkg.yml` file",
			pkg.basePath)
	}

	if !matchNamePath(pkg.name, pkg.basePath) {
		return util.FmtNewtError(
			"Package \"%s\" has incorrect \"pkg.name\" field in its "+
				"`pkg.yml` file (pkg.name=%s)", pkg.basePath, pkg.name)
	}

	typeString, err := pkg.PkgY.GetValString("pkg.type", nil)
	util.OneTimeWarningError(err)
	pkg.packageType = PACKAGE_TYPE_LIB
	if len(typeString) > 0 {
		found := false
		for t, n := range PackageTypeNames {
			if typeString == n {
				pkg.packageType = t
				found = true
				break
			}
		}

		if !found {
			return util.FmtNewtError(
				"Package \"%s\" has incorrect \"pkg.type\" field in its "+
					"`pkg.yml` file (pkg.type=%s)", pkg.basePath, typeString)
		}
	}

	if pkg.packageType == PACKAGE_TYPE_TRANSIENT {
		n, err := pkg.PkgY.GetValString("pkg.link", nil)
		util.OneTimeWarningError(err)
		if len(n) == 0 {
			return util.FmtNewtError(
				"Transient package \"%s\" does not specify target "+
					"package in its `pkg.yml` file (pkg.name=%s)",
				pkg.basePath, pkg.name)
		}

		pkg.linkedName = n

		// We don't really want anything else for this package
		return nil
	}

	subPriority, err := pkg.PkgY.GetValInt("pkg.subpriority", nil)
	util.OneTimeWarningError(err)
	if subPriority >= PACKAGE_SUBPRIO_NUM {
		return util.FmtNewtError(
			"Package \"%s\" subpriority value \"%d\" is out of range (0 - \"%d\")",
			pkg.basePath, subPriority, PACKAGE_SUBPRIO_NUM-1)
	}
	if subPriority > 0 && pkg.packageType >= PACKAGE_TYPE_BSP {
		return util.FmtNewtError(
			"Package \"%s\" of type \"%s\" does not support subpriorities",
			pkg.basePath, typeString)
	}
	pkg.subPriority = subPriority

	// Read the package description from the file
	pkg.desc, err = pkg.readDesc(pkg.PkgY)
	if err != nil {
		return err
	}

	// Load syscfg settings.
	pkg.SyscfgY, err = config.ReadFile(pkg.SyscfgYamlPath())
	if err != nil && !util.IsNotExist(err) {
		return err
	}

	pkg.AddCfgFilename(pkg.SyscfgYamlPath())

	return nil
}