Optimized verification logic
This commit is contained in:
@@ -97,3 +97,8 @@ repos:
|
|||||||
repository: luks-key-management
|
repository: luks-key-management
|
||||||
description: Manages LUKS keys for encrypted disks.
|
description: Manages LUKS keys for encrypted disks.
|
||||||
homepage: https://github.com/kevinveenbirkenbach/luks-key-management
|
homepage: https://github.com/kevinveenbirkenbach/luks-key-management
|
||||||
|
- account: kevinveenbirkenbach
|
||||||
|
alias: fcf
|
||||||
|
provider: github.com
|
||||||
|
repository: file-content-finder
|
||||||
|
verified: 449004978c800b33ac0d12be2ac74145c3fb5f63
|
||||||
34
main.py
34
main.py
@@ -130,7 +130,7 @@ def generate_alias(repo, bin_dir, existing_aliases):
|
|||||||
candidate3 = candidate3[:12]
|
candidate3 = candidate3[:12]
|
||||||
return candidate3
|
return candidate3
|
||||||
|
|
||||||
def create_executable(repo, base_dir, bin_dir, all_repos, quiet=False, preview=False):
|
def create_executable(repo, base_dir, bin_dir, all_repos, quiet=False, preview=False, no_verification=False):
|
||||||
"""
|
"""
|
||||||
Create an executable bash wrapper for the repository.
|
Create an executable bash wrapper for the repository.
|
||||||
|
|
||||||
@@ -155,21 +155,24 @@ def create_executable(repo, base_dir, bin_dir, all_repos, quiet=False, preview=F
|
|||||||
|
|
||||||
ORANGE = r"\033[38;5;208m"
|
ORANGE = r"\033[38;5;208m"
|
||||||
RESET = r"\033[0m"
|
RESET = r"\033[0m"
|
||||||
|
|
||||||
if verified := repo.get("verified"):
|
if no_verification:
|
||||||
if not quiet:
|
preamble = ""
|
||||||
preamble = f"""\
|
else:
|
||||||
|
if verified := repo.get("verified"):
|
||||||
|
if not quiet:
|
||||||
|
preamble = f"""\
|
||||||
git checkout {verified} || echo -e "{ORANGE}Warning: Failed to checkout commit {verified}.{RESET}"
|
git checkout {verified} || echo -e "{ORANGE}Warning: Failed to checkout commit {verified}.{RESET}"
|
||||||
CURRENT=$(git rev-parse HEAD)
|
CURRENT=$(git rev-parse HEAD)
|
||||||
if [ "$CURRENT" != "{verified}" ]; then
|
if [ "$CURRENT" != "{verified}" ]; then
|
||||||
echo -e "{ORANGE}Warning: Current commit ($CURRENT) does not match verified commit ({verified}).{RESET}"
|
echo -e "{ORANGE}Warning: Current commit ($CURRENT) does not match verified commit ({verified}).{RESET}"
|
||||||
fi
|
fi
|
||||||
"""
|
"""
|
||||||
|
else:
|
||||||
|
preamble = ""
|
||||||
else:
|
else:
|
||||||
preamble = ""
|
preamble = "" if quiet else f'echo -e "{ORANGE}Warning: No verified commit set for this repository.{RESET}"'
|
||||||
else:
|
|
||||||
preamble = "" if quiet else f'echo -e "{ORANGE}Warning: No verified commit set for this repository.{RESET}"'
|
|
||||||
|
|
||||||
script_content = f"""#!/bin/bash
|
script_content = f"""#!/bin/bash
|
||||||
cd "{repo_dir}"
|
cd "{repo_dir}"
|
||||||
{preamble}
|
{preamble}
|
||||||
@@ -199,7 +202,7 @@ cd "{repo_dir}"
|
|||||||
if not quiet:
|
if not quiet:
|
||||||
print(f"Error creating alias '{alias_name}': {e}")
|
print(f"Error creating alias '{alias_name}': {e}")
|
||||||
|
|
||||||
def install_repos(selected_repos, base_dir, bin_dir, all_repos, preview=False, quiet=False):
|
def install_repos(selected_repos, base_dir, bin_dir, all_repos, preview=False, quiet=False, no_verification=False):
|
||||||
"""Install repositories by creating executable wrappers and running setup."""
|
"""Install repositories by creating executable wrappers and running setup."""
|
||||||
for repo in selected_repos:
|
for repo in selected_repos:
|
||||||
repo_identifier = get_repo_identifier(repo, all_repos)
|
repo_identifier = get_repo_identifier(repo, all_repos)
|
||||||
@@ -207,7 +210,7 @@ def install_repos(selected_repos, base_dir, bin_dir, all_repos, preview=False, q
|
|||||||
if not os.path.exists(repo_dir):
|
if not os.path.exists(repo_dir):
|
||||||
print(f"Repository directory '{repo_dir}' does not exist. Clone it first.")
|
print(f"Repository directory '{repo_dir}' does not exist. Clone it first.")
|
||||||
continue
|
continue
|
||||||
create_executable(repo, base_dir, bin_dir, all_repos, quiet=quiet, preview=preview)
|
create_executable(repo, base_dir, bin_dir, all_repos, quiet=quiet, preview=preview, no_verification=no_verification)
|
||||||
setup_cmd = repo.get("setup")
|
setup_cmd = repo.get("setup")
|
||||||
if setup_cmd:
|
if setup_cmd:
|
||||||
run_command(setup_cmd, cwd=repo_dir, preview=preview)
|
run_command(setup_cmd, cwd=repo_dir, preview=preview)
|
||||||
@@ -282,7 +285,7 @@ def delete_repos(selected_repos, base_dir, all_repos, preview=False):
|
|||||||
else:
|
else:
|
||||||
print(f"Repository directory '{repo_dir}' not found for {repo_identifier}.")
|
print(f"Repository directory '{repo_dir}' not found for {repo_identifier}.")
|
||||||
|
|
||||||
def update_repos(selected_repos, base_dir, bin_dir, all_repos, system_update=False, preview=False, quiet=False):
|
def update_repos(selected_repos, base_dir, bin_dir, all_repos, system_update=False, preview=False, quiet=False, no_verification=False):
|
||||||
pull_repos(selected_repos, base_dir, all_repos, extra_args=[], preview=preview)
|
pull_repos(selected_repos, base_dir, all_repos, extra_args=[], preview=preview)
|
||||||
install_repos(selected_repos, base_dir, bin_dir, all_repos, preview=preview, quiet=quiet)
|
install_repos(selected_repos, base_dir, bin_dir, all_repos, preview=preview, quiet=quiet)
|
||||||
if system_update:
|
if system_update:
|
||||||
@@ -444,6 +447,8 @@ if __name__ == "__main__":
|
|||||||
install_parser = subparsers.add_parser("install", help="Install repository/repositories")
|
install_parser = subparsers.add_parser("install", help="Install repository/repositories")
|
||||||
add_identifier_arguments(install_parser)
|
add_identifier_arguments(install_parser)
|
||||||
install_parser.add_argument("-q", "--quiet", action="store_true", help="Suppress warnings and info messages")
|
install_parser.add_argument("-q", "--quiet", action="store_true", help="Suppress warnings and info messages")
|
||||||
|
install_parser.add_argument("--no-verification", action="store_true", help="Disable verification of repository commit")
|
||||||
|
|
||||||
|
|
||||||
pull_parser = subparsers.add_parser("pull", help="Pull updates for repository/repositories")
|
pull_parser = subparsers.add_parser("pull", help="Pull updates for repository/repositories")
|
||||||
add_identifier_arguments(pull_parser)
|
add_identifier_arguments(pull_parser)
|
||||||
@@ -464,6 +469,7 @@ if __name__ == "__main__":
|
|||||||
add_identifier_arguments(update_parser)
|
add_identifier_arguments(update_parser)
|
||||||
update_parser.add_argument("--system", action="store_true", help="Include system update commands")
|
update_parser.add_argument("--system", action="store_true", help="Include system update commands")
|
||||||
update_parser.add_argument("-q", "--quiet", action="store_true", help="Suppress warnings and info messages")
|
update_parser.add_argument("-q", "--quiet", action="store_true", help="Suppress warnings and info messages")
|
||||||
|
update_parser.add_argument("--no-verification", action="store_true", help="Disable verification of repository commit")
|
||||||
|
|
||||||
status_parser = subparsers.add_parser("status", help="Show status for repository/repositories or system")
|
status_parser = subparsers.add_parser("status", help="Show status for repository/repositories or system")
|
||||||
add_identifier_arguments(status_parser)
|
add_identifier_arguments(status_parser)
|
||||||
@@ -507,7 +513,7 @@ if __name__ == "__main__":
|
|||||||
if args.command == "install":
|
if args.command == "install":
|
||||||
selected = all_repos_list if args.all or (not args.identifiers) else resolve_repos(args.identifiers, all_repos_list)
|
selected = all_repos_list if args.all or (not args.identifiers) else resolve_repos(args.identifiers, all_repos_list)
|
||||||
selected = filter_ignored(selected)
|
selected = filter_ignored(selected)
|
||||||
install_repos(selected, base_dir, BIN_DIR, all_repos_list, preview=args.preview, quiet=args.quiet)
|
install_repos(selected, base_dir, BIN_DIR, all_repos_list, preview=args.preview, quiet=args.quiet, no_verification=args.no_verification)
|
||||||
elif args.command == "pull":
|
elif args.command == "pull":
|
||||||
selected = all_repos_list if args.all or (not args.identifiers) else resolve_repos(args.identifiers, all_repos_list)
|
selected = all_repos_list if args.all or (not args.identifiers) else resolve_repos(args.identifiers, all_repos_list)
|
||||||
selected = filter_ignored(selected)
|
selected = filter_ignored(selected)
|
||||||
@@ -535,7 +541,7 @@ if __name__ == "__main__":
|
|||||||
elif args.command == "update":
|
elif args.command == "update":
|
||||||
selected = all_repos_list if args.all or (not args.identifiers) else resolve_repos(args.identifiers, all_repos_list)
|
selected = all_repos_list if args.all or (not args.identifiers) else resolve_repos(args.identifiers, all_repos_list)
|
||||||
selected = filter_ignored(selected)
|
selected = filter_ignored(selected)
|
||||||
update_repos(selected, base_dir, BIN_DIR, all_repos_list, system_update=args.system, preview=args.preview, quiet=args.quiet)
|
update_repos(selected, base_dir, BIN_DIR, all_repos_list, system_update=args.system, preview=args.preview, quiet=args.quiet, no_verification=args.no_verification)
|
||||||
elif args.command == "status":
|
elif args.command == "status":
|
||||||
selected = all_repos_list if args.all or (not args.identifiers) else resolve_repos(args.identifiers, all_repos_list)
|
selected = all_repos_list if args.all or (not args.identifiers) else resolve_repos(args.identifiers, all_repos_list)
|
||||||
selected = filter_ignored(selected)
|
selected = filter_ignored(selected)
|
||||||
|
|||||||
Reference in New Issue
Block a user