def _ensure_package_sets_dir(): sets_dir = SystemSettings.packages_sets_directory() if not os.path.isdir(sets_dir): if os.path.lexists(sets_dir): os.remove(sets_dir) os.makedirs(sets_dir, 0o775) const_setup_perms(sets_dir, etpConst['entropygid'], recursion = False)
def _ensure_package_sets_dir(): sets_dir = SystemSettings.packages_sets_directory() if not os.path.isdir(sets_dir): if os.path.lexists(sets_dir): os.remove(sets_dir) os.makedirs(sets_dir, 0o775) const_setup_perms(sets_dir, etpConst['entropygid'], recursion = False)
def add(self, set_name, set_atoms): """ Add a user-defined package set to Entropy Client (changes are permanent) @param set_name: package set name @type set_name: string @param set_atoms: list of package names in given set @type set_atoms: list (set) @raise entropy.exceptions.InvalidPackageSet: if package set data passed is invalid (non ASCII chars, invalid set_name). The encapsulated error string will contain a mnemonic reason. """ def _ensure_package_sets_dir(): sets_dir = SystemSettings.packages_sets_directory() if not os.path.isdir(sets_dir): if os.path.lexists(sets_dir): os.remove(sets_dir) os.makedirs(sets_dir, 0o775) const_setup_perms(sets_dir, etpConst['entropygid'], recursion = False) if not const_isunicode(set_name): raise InvalidPackageSet("%s %s" % ( set_name, "must be unicode",)) if set_name.startswith(etpConst['packagesetprefix']): raise InvalidPackageSet("%s %s '%s'" % ( set_name, "cannot start with", etpConst['packagesetprefix'],)) set_match = self.match(set_name) if set_match: raise InvalidPackageSet(_("Name already taken")) _ensure_package_sets_dir() set_file = os.path.join(SystemSettings.packages_sets_directory(), set_name) set_file_tmp = set_file + ".sets_add_tmp" enc = etpConst['conf_encoding'] try: with codecs.open(set_file_tmp, "w", encoding=enc) as f: for x in set_atoms: f.write(x) f.write("\n") os.rename(set_file_tmp, set_file) except (OSError, IOError) as err: raise InvalidPackageSet(_("Cannot create the element")) self._settings['system_package_sets'][set_name] = set(set_atoms)
def add(self, set_name, set_atoms): """ Add a user-defined package set to Entropy Client (changes are permanent) @param set_name: package set name @type set_name: string @param set_atoms: list of package names in given set @type set_atoms: list (set) @raise entropy.exceptions.InvalidPackageSet: if package set data passed is invalid (non ASCII chars, invalid set_name). The encapsulated error string will contain a mnemonic reason. """ def _ensure_package_sets_dir(): sets_dir = SystemSettings.packages_sets_directory() if not os.path.isdir(sets_dir): if os.path.lexists(sets_dir): os.remove(sets_dir) os.makedirs(sets_dir, 0o775) const_setup_perms(sets_dir, etpConst['entropygid'], recursion = False) if not const_isunicode(set_name): raise InvalidPackageSet("%s %s" % ( set_name, "must be unicode",)) if set_name.startswith(etpConst['packagesetprefix']): raise InvalidPackageSet("%s %s '%s'" % ( set_name, "cannot start with", etpConst['packagesetprefix'],)) set_match = self.match(set_name) if set_match: raise InvalidPackageSet(_("Name already taken")) _ensure_package_sets_dir() set_file = os.path.join(SystemSettings.packages_sets_directory(), set_name) set_file_tmp = set_file + ".sets_add_tmp" enc = etpConst['conf_encoding'] try: with codecs.open(set_file_tmp, "w", encoding=enc) as f: for x in set_atoms: f.write(x) f.write("\n") os.rename(set_file_tmp, set_file) except (OSError, IOError) as err: raise InvalidPackageSet(_("Cannot create the element")) self._settings['system_package_sets'][set_name] = set(set_atoms)
def remove(self, set_name): """ Remove a user-defined package set from Entropy Client (changes are permanent) @param set_name: package set name @type set_name: string @raise entropy.exceptions.InvalidPackageSet: if package set data passed is invalid (non ASCII chars, invalid set_name). The encapsulated error string will contain a mnemonic reason. """ if not const_isunicode(set_name): raise InvalidPackageSet("%s %s" % ( set_name, "must be unicode",)) if set_name.startswith(etpConst['packagesetprefix']): raise InvalidPackageSet("InvalidPackageSet: %s %s '%s'" % ( set_name, _("cannot start with"), etpConst['packagesetprefix'],)) set_match = self.match(set_name) if not set_match: raise InvalidPackageSet(_("Already removed")) set_id, set_x, set_y = set_match if set_id != etpConst['userpackagesetsid']: raise InvalidPackageSet(_("Not defined by user")) set_file = os.path.join(SystemSettings.packages_sets_directory(), set_name) try: os.remove(set_file) except OSError as err: if err.errno != errno.ENOENT: raise InvalidPackageSet(_("Set not found or unable to remove")) self._settings['system_package_sets'].pop(set_name, None)
def remove(self, set_name): """ Remove a user-defined package set from Entropy Client (changes are permanent) @param set_name: package set name @type set_name: string @raise entropy.exceptions.InvalidPackageSet: if package set data passed is invalid (non ASCII chars, invalid set_name). The encapsulated error string will contain a mnemonic reason. """ if not const_isunicode(set_name): raise InvalidPackageSet("%s %s" % ( set_name, "must be unicode",)) if set_name.startswith(etpConst['packagesetprefix']): raise InvalidPackageSet("InvalidPackageSet: %s %s '%s'" % ( set_name, _("cannot start with"), etpConst['packagesetprefix'],)) set_match = self.match(set_name) if not set_match: raise InvalidPackageSet(_("Already removed")) set_id, set_x, set_y = set_match if set_id != etpConst['userpackagesetsid']: raise InvalidPackageSet(_("Not defined by user")) set_file = os.path.join(SystemSettings.packages_sets_directory(), set_name) try: os.remove(set_file) except OSError as err: if err.errno != errno.ENOENT: raise InvalidPackageSet(_("Set not found or unable to remove")) self._settings['system_package_sets'].pop(set_name, None)