Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def read_bytes_from_url(url: str) -> bytes:
req = request.Request(url)
try:
response = request.urlopen(req)
except URLError as exc:
print_error('urllib: ' + str(exc.reason))
if ask_to_continue(_('Do you want to retry?')):
return read_bytes_from_url(url)
raise SysExit(102)
result_bytes = response.read()
return result_bytes
print_warning(_skip_diff_label.format(
pkg=_pkg_label,
reason=_("already reviewed")
))
continue
if (
repo_status.last_installed_hash != repo_status.current_hash
) and (
repo_status.last_installed_hash
) and (
repo_status.current_hash
) and (
not self.args.noconfirm
):
if not self.args.nodiff and ask_to_continue(
_("Do you want to see build files {diff} for {name} package?").format(
diff=bold_line(_("diff")),
name=_pkg_label
)
):
git_args = [
'git',
'-C',
repo_status.repo_path,
'diff',
] + PikaurConfig().build.GitDiffArgs.get_str().split(',') + [
repo_status.last_installed_hash,
repo_status.current_hash,
]
diff_pager = PikaurConfig().ui.DiffPager
if diff_pager == 'always':
bold_line(', '.join(self.package_names))
)
))
pkgver_result = joined_spawn(
isolate_root_cmd(
MakePkgCommand.get() + [
'--nobuild', '--noprepare', '--nocheck', '--nodeps'
],
cwd=self.build_dir
),
cwd=self.build_dir,
)
if pkgver_result.returncode != 0:
print_error(_("failed to retrieve latest dev sources:"))
print_stderr(pkgver_result.stdout_text)
if not ask_to_continue(default_yes=False):
raise SysExit(125)
SrcInfo(self.build_dir).regenerate()
self._source_repo_updated = True
if not retry_interactive_command(
sudo(
get_pacman_command() + [
'--upgrade',
] + reconstruct_args(self.args, ignore_args=[
'upgrade',
'sync',
'sysupgrade',
'refresh',
'ignore',
]) + list(aur_packages_to_install.values())
),
pikspect=True,
conflicts=self.resolved_conflicts,
):
if not ask_to_continue(default_yes=False): # pragma: no cover
self._revert_transaction(PackageSource.AUR)
raise SysExit(125)
PackageDB.discard_local_cache()
self._save_transaction(
PackageSource.AUR, installed=list(aur_packages_to_install.keys())
)
)
)
if not self.found_conflicts:
return
all_new_packages_names = list(self.repo_packages_by_name.keys()) + self.aur_packages_names
for new_pkg_name, new_pkg_conflicts in self.found_conflicts.items():
for pkg_conflict in new_pkg_conflicts:
if pkg_conflict in all_new_packages_names:
print_stderr(color_line(
_("New packages '{new}' and '{other}' are in conflict.").format(
new=new_pkg_name, other=pkg_conflict),
9))
raise SysExit(131)
for new_pkg_name, new_pkg_conflicts in self.found_conflicts.items():
for pkg_conflict in new_pkg_conflicts:
answer = ask_to_continue('{} {}'.format(
color_line('::', 11),
bold_line(_(
"{new} and {installed} are in conflict. Remove {installed}?"
).format(
new=new_pkg_name, installed=pkg_conflict
))
), default_yes=False)
if not answer:
raise SysExit(131)
self.resolved_conflicts.append([new_pkg_name, pkg_conflict])
src_info = SrcInfo(pkgbuild_path=self.pkgbuild_path)
arch = MakepkgConfig.get('CARCH')
supported_archs = src_info.get_values('arch')
if supported_archs and (
'any' not in supported_archs
) and (
arch not in supported_archs
):
print_error(
_("{name} can't be built on the current arch ({arch}). "
"Supported: {suparch}").format(
name=bold_line(', '.join(self.package_names)),
arch=arch,
suparch=', '.join(supported_archs))
)
if not ask_to_continue():
raise SysExit(95)
self.skip_carch_check = True
def cli_clean_packages_cache() -> None:
args = parse_args()
if not args.repo:
for directory, message, minimal_clean_level in (
(BUILD_CACHE_PATH, _("Build directory"), 1, ),
(PACKAGE_CACHE_PATH, _("Packages directory"), 2, ),
):
if minimal_clean_level <= args.clean and os.path.exists(directory):
print_stdout('\n' + "{}: {}".format(message, directory))
if ask_to_continue(text='{} {}'.format(
color_line('::', 12),
_("Do you want to remove all files?")
)):
remove_dir(directory)
if not args.aur:
raise SysExit(
interactive_spawn(sudo(
[PikaurConfig().misc.PacmanPath.get_str(), ] + reconstruct_args(args)
)).returncode
def install_new_aur_deps(self) -> None:
new_aur_deps_to_install = {
pkg_name: self.package_builds_by_name[pkg_name].built_packages_paths[pkg_name]
for pkg_name in self.aur_deps_names
}
try:
install_built_deps(
deps_names_and_paths=new_aur_deps_to_install,
resolved_conflicts=self.resolved_conflicts
)
except DependencyError:
if not ask_to_continue(default_yes=False):
self._revert_transaction(PackageSource.AUR)
raise SysExit(125)
else:
self._save_transaction(
PackageSource.AUR, installed=list(new_aur_deps_to_install.keys())
)
return False
noedit = not self.args.edit and (
self.args.noedit
)
if noedit or self.args.noconfirm:
print_stderr('{} {}'.format(
color_line('::', 11),
_("Skipping review of {file} for {name} package ({flag})").format(
file=filename,
name=', '.join(package_build.package_names),
flag=(noedit and '--noedit') or
(self.args.noconfirm and '--noconfirm')),
))
return False
if ask_to_continue(
_("Do you want to {edit} {file} for {name} package?").format(
edit=bold_line(_("edit")),
file=filename,
name=bold_line(', '.join(package_build.package_names)),
),
default_yes=not (package_build.last_installed_hash or
PikaurConfig().build.DontEditByDefault.get_bool())
):
full_filename = os.path.join(
package_build.repo_path,
filename
)
old_hash = hash_file(full_filename)
interactive_spawn(
editor_cmd + [full_filename]
)