Beispiel #1
0
    def _install_deps(names):
        ''' Installs missing dependencies '''
        aurs, officials = [], names
        Msg.info(_('Need following packages as dependencies:'))
        if Config.get('check-deps-from-aur', True):
            aur_checks = Pacman.check_from_aur(names)
            aurs = list(filter(lambda k: aur_checks[k], aur_checks))
            officials = list(filter(lambda k: not aur_checks[k], aur_checks))
            for i in [("AUR", aurs), ("Official", officials)]:
                if i[1]:
                    Msg.info(
                        _('{0} repository: [{1}]'.format(
                            i[0], ', '.join(i[1]))))
        else:
            Msg.info(_('[{0}]'.format(', '.join(names))))

        if not Msg.ask(_('Install?')):
            if Msg.ask(_('Try without installing dependencies?')):
                return False

            Msg.info(_('Bye'))
            LocalRepo.shutdown(1)

        try:
            if aurs:
                LocalRepo.aur_add(aurs)
            Pacman.install(officials, as_deps=True)
            return True
        except LocalRepoError as e:
            LocalRepo.error(e)
Beispiel #2
0
	def list():
		''' Prints all repo packages '''
		if len(LocalRepo._repo) is 0:
			Msg.info(_('This repo has no packages'))
			return

		for name in sorted(LocalRepo._repo):
			Msg.info(name, LocalRepo._repo[name].version)
Beispiel #3
0
	def load_repo():
		''' Loads the repo '''
		Msg.process(_('Loading repo: {0}').format(LocalRepo._repo.path))

		try:
			LocalRepo._repo.load()
		except LocalRepoError as e:
			LocalRepo.error(e)
Beispiel #4
0
    def list():
        ''' Prints all repo packages '''
        if len(LocalRepo._repo) is 0:
            Msg.info(_('This repo has no packages'))
            return

        for name in sorted(LocalRepo._repo):
            Msg.info(name, LocalRepo._repo[name].version)
Beispiel #5
0
    def load_repo():
        ''' Loads the repo '''
        Msg.process(_('Loading repo: {0}').format(LocalRepo._repo.path))

        try:
            LocalRepo._repo.load()
        except LocalRepoError as e:
            LocalRepo.error(e)
Beispiel #6
0
	def list():
		''' Prints all repo packages '''
		if LocalRepo._repo.size is 0:
			Msg.info(_('This repo has no packages'))
			return

		for name in sorted(LocalRepo._repo.packages):
			Msg.info(name, LocalRepo._repo.package(name).version)
Beispiel #7
0
	def clear_cache():
		''' Clears the repo cache '''
		Msg.process(_('Clearing the cache'))

		try:
			LocalRepo._repo.clear_cache()
			Log.log(_('Cleared cache'))
		except LocalRepoError as e:
			LocalRepo.error(e)
Beispiel #8
0
    def restore_db():
        ''' Try to restore the database file '''
        Msg.process(_('Restoring database'))

        try:
            LocalRepo._repo.restore_db()
            Log.log(_('Restored Database'))
        except LocalRepoError as e:
            LocalRepo.error(e)
Beispiel #9
0
	def restore_db():
		''' Try to restore the database file '''
		Msg.process(_('Restoring database'))

		try:
			LocalRepo._repo.restore_db()
			Log.log(_('Restored Database'))
		except LocalRepoError as e:
			LocalRepo.error(e)
Beispiel #10
0
	def _uninstall_deps(names):
		''' Uninstalls previoulsy installed dependencies '''
		Msg.info(_('Installed following packages as dependencies:\n[{0}]').format(', '.join(names)))

		if Msg.ask(_('Uninstall?')):
			try:
				Pacman.uninstall(names)
			except LocalRepoError as e:
				LocalRepo.error(e)
Beispiel #11
0
    def clear_cache():
        ''' Clears the repo cache '''
        Msg.process(_('Clearing the cache'))

        try:
            LocalRepo._repo.clear_cache()
            Log.log(_('Cleared cache'))
        except LocalRepoError as e:
            LocalRepo.error(e)
Beispiel #12
0
    def find(q):
        ''' Searches the repo for packages '''
        res = sorted((name for name in LocalRepo._repo if q in name))

        if not res:
            Msg.error(_('No package found'))
            return

        for name in res:
            Msg.info(name, LocalRepo._repo[name].version)
Beispiel #13
0
	def find(q):
		''' Searches the repo for packages '''
		res = sorted((name for name in LocalRepo._repo if q in name))

		if not res:
			Msg.error(_('No package found'))
			return

		for name in res:
			Msg.info(name, LocalRepo._repo[name].version)
Beispiel #14
0
	def find(q):
		''' Searches the repo for packages '''
		res = LocalRepo._repo.find(q)

		if not res:
			Msg.error(_('No package found'))
			return

		for r in res:
			Msg.info(r, LocalRepo._repo.package(r).version)
Beispiel #15
0
    def _uninstall_deps(names):
        ''' Uninstalls previoulsy installed dependencies '''
        Msg.info(
            _('Installed following packages as dependencies:\n[{0}]').format(
                ', '.join(names)))

        if Msg.ask(_('Uninstall?')):
            try:
                Pacman.uninstall(names)
            except LocalRepoError as e:
                LocalRepo.error(e)
Beispiel #16
0
	def add(paths, force=False):
		''' Adds packages to the repo '''
		for path in paths:
			pkg = LocalRepo._make_package(path)

			try:
				Msg.process(_('Adding package to the repo: {0}').format(pkg.name))
				LocalRepo._repo.add(pkg, force=force)
				Log.log(_('Added Package: {0} {1}').format(pkg.name, pkg.version))
			except LocalRepoError as e:
				LocalRepo.error(e)
Beispiel #17
0
    def add(paths, force=False):
        ''' Adds packages to the repo '''
        for path in paths:
            pkg = LocalRepo._make_package(path, force=force)

            try:
                Msg.process(
                    _('Adding package to the repo: {0}').format(pkg.name))
                LocalRepo._repo.add(pkg, force=force)
                Log.log(
                    _('Added Package: {0} {1}').format(pkg.name, pkg.version))
            except LocalRepoError as e:
                LocalRepo.error(e)
Beispiel #18
0
	def aur_add(names, force=False):
		''' Downloads, makes and adds packages from the AUR '''
		Msg.process(_('Retrieving package info from the AUR'))

		try:
			pkgs = Aur.packages(names)
		except LocalRepoError as e:
			LocalRepo.error(e)

		for pkg in pkgs.values():
			if not force and LocalRepo._repo.has(pkg['name']):
				Msg.error(_('Package is already in the repo: {0}').format(pkg['name']))
				LocalRepo.shutdown(1)

			LocalRepo.add([pkg['uri']], force=force)
Beispiel #19
0
	def remove(names):
		''' Removes packages from the repo '''
		missing = [name for name in names if not LocalRepo._repo.has(name)]

		if missing:
			Msg.error(_('Packages do not exist: {0}').format(', '.join(missing)))
			LocalRepo.shutdown(1)

		Msg.process(_('Removing packages: {0}').format(', '.join(names)))

		try:
			LocalRepo._repo.remove(names)
			Log.log(_('Removed packages: {0}').format(', '.join(names)))
		except LocalRepoError as e:
			LocalRepo.error(e)
Beispiel #20
0
	def _make_package(path):
		''' Makes a new package '''
		Msg.process(_('Forging a new package: {0}').format(path))
		Log.log(_('Forging a new package: {0}').format(path))

		try:
			return Package.forge(path)
		except DependencyError as e:
			LocalRepo._install_deps(e.deps)

			try:
				return Package.from_pkgbuild(e.pkgbuild, ignore_deps=True)
			except LocalRepoError as e:
				LocalRepo.error(e)
		except LocalRepoError as e:
			LocalRepo.error(e)
Beispiel #21
0
    def remove(names):
        ''' Removes packages from the repo '''
        missing = [name for name in names if name not in LocalRepo._repo]

        if missing:
            Msg.error(
                _('Packages do not exist: {0}').format(', '.join(missing)))
            LocalRepo.shutdown(1)

        Msg.process(_('Removing packages: {0}').format(', '.join(names)))

        try:
            LocalRepo._repo.remove(names)
            Log.log(_('Removed packages: {0}').format(', '.join(names)))
        except LocalRepoError as e:
            LocalRepo.error(e)
Beispiel #22
0
	def _make_package(path, force=False):
		''' Makes a new package '''
		Msg.process(_('Forging a new package: {0}').format(path))
		Log.log(_('Forging a new package: {0}').format(path))

		try:
			return Package.forge(path, force=force)
		except DependencyError as e:
			installed_deps = LocalRepo._install_deps(e.deps)

			try:
				pkg = Package.from_pkgbuild(e.pkgbuild, ignore_deps=True, force=force)
			except LocalRepoError as e:
				LocalRepo.error(e)

			if Config.get('uninstall-deps', True) and installed_deps:
				LocalRepo._uninstall_deps(e.deps)

			return pkg

		except LocalRepoError as e:
			LocalRepo.error(e)
Beispiel #23
0
	def check():
		''' Run an integrity check '''
		Msg.info(_('{0} packages found').format(LocalRepo._repo.size))
		Msg.process(_('Running integrity check'))
		errors = LocalRepo._repo.check()

		if not errors:
			Msg.info(_('No errors found'))
			Log.log(_('Finished integrity check without any errors'))
			return

		Log.log(_('Finished integrity check with errors:'))

		for e in errors:
			Msg.result(e)
			Log.error(e)
Beispiel #24
0
    def check():
        ''' Run an integrity check '''
        Msg.info(_('{0} packages found').format(len(LocalRepo._repo)))
        Msg.process(_('Running integrity check'))
        errors = LocalRepo._repo.check()

        if not errors:
            Msg.info(_('No errors found'))
            Log.log(_('Finished integrity check without any errors'))
            return

        Log.log(_('Finished integrity check with errors:'))

        for e in errors:
            Msg.result(e)
            Log.error(e)
Beispiel #25
0
	def info(names):
		''' Prints all available info of specified packages '''
		for name in names:
			if not LocalRepo._repo.has(name):
				Msg.error(_('Package does not exist: {0}').format(name))
				LocalRepo.shutdown(1)

			Msg.process(_('Package information: {0}').format(name))
			Msg.info(LocalRepo._repo.package(name))
Beispiel #26
0
    def info(names):
        ''' Prints all available info of specified packages '''
        for name in names:
            if name not in LocalRepo._repo:
                Msg.error(_('Package does not exist: {0}').format(name))
                LocalRepo.shutdown(1)

            Msg.process(_('Package information: {0}').format(name))
            Msg.info(LocalRepo._repo[name])
Beispiel #27
0
    def _make_package(path, force=False):
        ''' Makes a new package '''
        Msg.process(_('Forging a new package: {0}').format(path))
        Log.log(_('Forging a new package: {0}').format(path))

        try:
            return Package.forge(path, force=force)
        except DependencyError as e:
            installed_deps = LocalRepo._install_deps(e.deps)

            try:
                pkg = Package.from_pkgbuild(e.pkgbuild,
                                            ignore_deps=True,
                                            force=force)
            except LocalRepoError as e:
                LocalRepo.error(e)

            if Config.get('uninstall-deps', True) and installed_deps:
                LocalRepo._uninstall_deps(e.deps)

            return pkg

        except LocalRepoError as e:
            LocalRepo.error(e)
Beispiel #28
0
	def _install_deps(names):
		''' Installs missing dependencies '''
		Msg.info(_('Need following packages as dependencies:\n[{0}]').format(', '.join(names)))

		if not Msg.ask(_('Install?')):
			if Msg.ask(_('Try without installing dependencies?')):
				return

			Msg.info(_('Bye'))
			LocalRepo.shutdown(1)

		try:
			Pacman.install(names, as_deps=True)
		except LocalRepoError as e:
			LocalRepo.error(e)
Beispiel #29
0
    def aur_add(names, force=False):
        ''' Downloads, makes and adds packages from the AUR '''
        Msg.process(_('Retrieving package info from the AUR'))
        pkgs, errors = Aur.packages(names)

        for e in errors:
            Msg.error(e)

        pkgs_uri = []
        for pkg in pkgs.values():
            if not force and pkg['name'] in LocalRepo._repo:
                Msg.error(
                    _('Package is already in the repo: {0}').format(
                        pkg['name']))
            else:
                pkgs_uri.append(pkg['uri'])

        if pkgs_uri:
            LocalRepo.add(pkgs_uri, force=force)
Beispiel #30
0
	def aur_upgrade():
		''' Upgrades all packages from the AUR '''
		pkgs = [pkg for pkg in LocalRepo._repo if pkg not in Config.get('no-aur-upgrade', [])]
		Msg.info(_('{0} packages found').format(len(pkgs)))
		Log.log(_('Starting an AUR upgrade'))

		if len(pkgs) is 0:
			Msg.info(_('Nothing to do'))
			return

		Msg.process(_('Retrieving package info from the AUR'))
		pkgs, errors = Aur.packages(pkgs)

		for e in errors:
			Msg.error(e)

		Msg.info(_('{0} packages found').format(len(pkgs)))
		Msg.process(_('Checking for updates'))
		updates = []

		for name, pkg in ((name, pkg) for name, pkg in pkgs.items() if name in LocalRepo._repo):
			oldpkg = LocalRepo._repo[name]

			if oldpkg.has_smaller_version_than(pkg['version']):
				updates.append(pkg)
				Msg.result('{0} ({1} -> {2})'.format(name, oldpkg.version, pkg['version']))

		if not updates:
			Msg.info(_('All packages are up to date'))
			return

		if not Msg.ask(_('Upgrade?')):
			Msg.info(_('Bye'))
			LocalRepo.shutdown(1)

		LocalRepo.add([pkg['uri'] for pkg in updates], force=True)
Beispiel #31
0
 def error(error):
     ''' Prints the error message and shuts down '''
     Msg.error(error.message)
     Log.error(error.message)
     LocalRepo.shutdown(1)
Beispiel #32
0
    def aur_upgrade():
        ''' Upgrades all packages from the AUR '''
        pkgs = [
            pkg for pkg in LocalRepo._repo
            if pkg not in Config.get('no-aur-upgrade', [])
        ]
        Msg.info(_('{0} packages found').format(len(pkgs)))
        Log.log(_('Starting an AUR upgrade'))

        if len(pkgs) is 0:
            Msg.info(_('Nothing to do'))
            return

        Msg.process(_('Retrieving package info from the AUR'))
        pkgs, errors = Aur.packages(pkgs)

        for e in errors:
            Msg.error(e)

        Msg.info(_('{0} packages found').format(len(pkgs)))
        Msg.process(_('Checking for updates'))
        updates = []

        for name, pkg in ((name, pkg) for name, pkg in pkgs.items()
                          if name in LocalRepo._repo):
            oldpkg = LocalRepo._repo[name]

            if oldpkg.has_smaller_version_than(pkg['version']):
                updates.append(pkg)
                Msg.result('{0} ({1} -> {2})'.format(name, oldpkg.version,
                                                     pkg['version']))

        if not updates:
            Msg.info(_('All packages are up to date'))
            return

        if not Msg.ask(_('Upgrade?')):
            Msg.info(_('Bye'))
            LocalRepo.shutdown(1)

        LocalRepo.add([pkg['uri'] for pkg in updates], force=True)
Beispiel #33
0
    def vcs_upgrade():
        ''' Upgrades all VCS packages from the AUR '''
        Msg.process(_('Updating all VCS packages'))
        Log.log(_('Starting a VCS upgrade'))
        vcs = [pkg for pkg in LocalRepo._repo if LocalRepo._repo[pkg].is_vcs]

        if not vcs:
            Msg.info(_('No VCS packages found'))
            return

        Msg.process(_('Retrieving package info from the AUR'))
        updates, errors = Aur.packages(vcs)

        for e in errors:
            Msg.error(e)

        if not updates:
            Msg.info(_('No updates found'))
            return

        Msg.result('\n'.join(updates))

        if not Msg.ask(_('Upgrade?')):
            Msg.info(_('Bye'))
            return

        LocalRepo.add([pkg['uri'] for pkg in updates.values()], force=True)
Beispiel #34
0
	def repo_info():
		''' Prints some repo info '''
		Msg.info(LocalRepo._repo)
Beispiel #35
0
 def abort():
     ''' This called by KeyboardInterrupt '''
     Msg.error(_('Execution cancelled by user'))
     LocalRepo.shutdown(1)
Beispiel #36
0
	def abort():
		''' This called by KeyboardInterrupt '''
		Msg.error(_('Execution cancelled by user'))
		LocalRepo.shutdown(1)
Beispiel #37
0
 def repo_info():
     ''' Prints some repo info '''
     Msg.info(LocalRepo._repo)
Beispiel #38
0
	def vcs_upgrade():
		''' Upgrades all VCS packages from the AUR '''
		Msg.process(_('Updating all VCS packages'))
		Log.log(_('Starting a VCS upgrade'))
		vcs = [pkg for pkg in LocalRepo._repo if LocalRepo._repo[pkg].is_vcs]

		if not vcs:
			Msg.info(_('No VCS packages found'))
			return

		Msg.process(_('Retrieving package info from the AUR'))
		updates, errors = Aur.packages(vcs)

		for e in errors:
			Msg.error(e)

		if not updates:
			Msg.info(_('No updates found'))
			return

		Msg.result('\n'.join(updates))

		if not Msg.ask(_('Upgrade?')):
			Msg.info(_('Bye'))
			return

		LocalRepo.add([pkg['uri'] for pkg in updates.values()], force=True)
Beispiel #39
0
	def error(error):
		''' Prints the error message and shuts down '''
		Msg.error(error.message)
		Log.error(error.message)
		LocalRepo.shutdown(1)
Beispiel #40
0
	def vcs_upgrade():
		''' Upgrades all VCS packages from the AUR '''
		Msg.process(_('Updating all VCS packages'))
		Log.log(_('Starting a VCS upgrade'))
		vcs = LocalRepo._repo.vcs_packages

		if not vcs:
			Msg.info(_('No VCS packages found'))
			return

		Msg.process(_('Retrieving package info from the AUR'))

		try:
			updates = Aur.packages(vcs)
		except LocalRepoError as e:
			LocalRepo.error(e)

		Msg.result('\n'.join(updates))

		if not Msg.ask(_('Upgrade?')):
			Msg.info(_('Bye'))
			return

		LocalRepo.add([pkg['uri'] for pkg in updates.values()], force=True)
Beispiel #41
0
	def aur_upgrade():
		''' Upgrades all packages from the AUR '''
		Msg.info(_('{0} packages found').format(LocalRepo._repo.size))
		Log.log(_('Starting an AUR upgrade'))

		if LocalRepo._repo.size is 0:
			Msg.info(_('Nothing to do'))
			return

		Msg.process(_('Retrieving package info from the AUR'))

		try:
			pkgs = Aur.packages(LocalRepo._repo.packages)
		except LocalRepoError as e:
			LocalRepo.error(e)

		Msg.info(_('{0} packages found').format(len(pkgs)))
		Msg.process(_('Checking for updates'))
		updates = []

		for name, pkg in ((name, pkg) for name, pkg in pkgs.items() if LocalRepo._repo.has(name)):
			oldpkg = LocalRepo._repo.package(name)

			if oldpkg.has_smaller_version_than(pkg['version']):
				updates.append(pkg)
				Msg.result('{0} ({1} -> {2})'.format(name, oldpkg.version, pkg['version']))

		if not updates:
			Msg.info(_('All packages are up to date'))
			return

		if not Msg.ask(_('Upgrade?')):
			Msg.info(_('Bye'))
			LocalRepo.shutdown(1)

		LocalRepo.add([pkg['uri'] for pkg in updates], force=True)