Implemented verification
This commit is contained in:
28
main.py
28
main.py
@@ -125,7 +125,14 @@ def resolve_repos(identifiers, all_repos):
|
|||||||
return selected
|
return selected
|
||||||
|
|
||||||
def create_executable(repo, base_dir, bin_dir, all_repos, preview=False):
|
def create_executable(repo, base_dir, bin_dir, all_repos, preview=False):
|
||||||
"""Create an executable bash wrapper for the repository."""
|
"""Create an executable bash wrapper for the repository.
|
||||||
|
|
||||||
|
If the 'verified' field is set in the configuration, the wrapper will attempt to
|
||||||
|
checkout that commit before executing the command and warn if the checkout did not
|
||||||
|
result in the expected commit.
|
||||||
|
|
||||||
|
If no verified commit is set, a warning is printed on every execution.
|
||||||
|
"""
|
||||||
repo_identifier = get_repo_identifier(repo, all_repos)
|
repo_identifier = get_repo_identifier(repo, all_repos)
|
||||||
repo_dir = os.path.join(base_dir, repo.get("provider"), repo.get("account"), repo.get("repository"))
|
repo_dir = os.path.join(base_dir, repo.get("provider"), repo.get("account"), repo.get("repository"))
|
||||||
# Determine the command to execute
|
# Determine the command to execute
|
||||||
@@ -141,9 +148,26 @@ def create_executable(repo, base_dir, bin_dir, all_repos, preview=False):
|
|||||||
else:
|
else:
|
||||||
print(f"No command defined and no main.sh/main.py found in {repo_dir}. Skipping alias creation.")
|
print(f"No command defined and no main.sh/main.py found in {repo_dir}. Skipping alias creation.")
|
||||||
return
|
return
|
||||||
# Create the bash wrapper content
|
|
||||||
|
# Build the preamble based on the 'verified' field.
|
||||||
|
verified = repo.get("verified")
|
||||||
|
if verified:
|
||||||
|
# Checkout the verified commit and warn if not current.
|
||||||
|
preamble = f"""\
|
||||||
|
git checkout {verified} || echo "Warning: Failed to checkout commit {verified}." >&2
|
||||||
|
CURRENT=$(git rev-parse HEAD)
|
||||||
|
if [ "$CURRENT" != "{verified}" ]; then
|
||||||
|
echo "Warning: Current commit ($CURRENT) does not match verified commit ({verified})." >&2
|
||||||
|
fi
|
||||||
|
"""
|
||||||
|
else:
|
||||||
|
# Warn that no verified commit is set.
|
||||||
|
preamble = 'echo "Warning: No verified commit set for this repository." >&2'
|
||||||
|
|
||||||
|
# Create the bash wrapper content including the preamble.
|
||||||
script_content = f"""#!/bin/bash
|
script_content = f"""#!/bin/bash
|
||||||
cd "{repo_dir}"
|
cd "{repo_dir}"
|
||||||
|
{preamble}
|
||||||
{command} "$@"
|
{command} "$@"
|
||||||
"""
|
"""
|
||||||
alias_path = os.path.join(bin_dir, repo_identifier)
|
alias_path = os.path.join(bin_dir, repo_identifier)
|
||||||
|
|||||||
Reference in New Issue
Block a user