// checkLicenseAgreement returns nil if it's ok to proceed with installing the // package, as deduced from the license agreement (which might involve asking // the user), or an error that explains the reason why installation should not // proceed. func (m *packageYaml) checkLicenseAgreement(ag agreer, d snap.File, currentActiveDir string) error { if !m.ExplicitLicenseAgreement { return nil } if ag == nil { return ErrLicenseNotAccepted } license, err := d.MetaMember("license.txt") if err != nil || len(license) == 0 { return ErrLicenseNotProvided } oldM, err := parsePackageYamlFile(filepath.Join(currentActiveDir, "meta", "package.yaml")) if err != nil && !os.IsNotExist(err) { return err } // don't ask for the license if // * the previous version also asked for license confirmation, and // * the license version is the same if err == nil && oldM.ExplicitLicenseAgreement && oldM.LicenseVersion == m.LicenseVersion { return nil } msg := fmt.Sprintf("%s requires that you accept the following license before continuing", m.Name) if !ag.Agreed(msg, string(license)) { return ErrLicenseNotAccepted } return nil }
// checkLicenseAgreement returns nil if it's ok to proceed with installing the // package, as deduced from the license agreement (which might involve asking // the user), or an error that explains the reason why installation should not // proceed. func checkLicenseAgreement(s *snap.Info, snapf snap.File, cur *snap.Info, ag agreer) error { if s.LicenseAgreement != "explicit" { return nil } if ag == nil { return ErrLicenseNotAccepted } license, err := snapf.MetaMember("license.txt") if err != nil || len(license) == 0 { return ErrLicenseNotProvided } // don't ask for the license if // * the previous version also asked for license confirmation, and // * the license version is the same if cur != nil && (cur.LicenseAgreement == "explicit") && cur.LicenseVersion == s.LicenseVersion { return nil } msg := fmt.Sprintf("%s requires that you accept the following license before continuing", s.Name()) if !ag.Agreed(msg, string(license)) { return ErrLicenseNotAccepted } return nil }