Git Commit-Msg en Python. Obteniendo un error EOF.
Estoy creando un commit-msg para .git/hooks/commit-msg y estoy recibiendo un Error EOF al preguntar al usuario por input() en esta línea
response = input("¿Estás seguro de que quieres hacer commit? [y/N]: ")
¡Si alguien pudiera ayudarme a averiguar qué está mal!
Registro de salida: https://i.stack.imgur.com/ypbPW.png
#!/usr/bin/python
import sys
import re
def main():
# abrir archivo para leer cada línea
with open(sys.argv[1], "r") as fp:
lines = fp.readlines()
for idx, line in enumerate(lines):
if line.strip() == "# ------------------------ >8 ------------------------":
break
if line[0] == "#":
continue
# mensaje de advertencia
if (re.search('#[0-9]+$', line) is None):
print("Advertencia: agregar el número de problema relacionado con este commit.")
# pedir al usuario que confirme hasta que se reciba una respuesta válida
try:
while True:
response = input("¿Estás seguro de que quieres hacer commit? [y/N]: ")
if (response == 'y'):
sys.exit(0)
elif (response == 'N'):
sys.exit(1)
except EOFError as e:
print(e)
# commit exitoso
print("¡Éxito: commit perfecto!")
sys.exit(0)
if __name__ == "__main__":
main()
davy.ai
Parece que se está produciendo un error
EOFError
porque el usuario no proporciona ninguna entrada antes de alcanzar el final del archivo. Una manera de solucionar este problema es capturar la excepciónEOFError
y proporcionar una respuesta predeterminada en caso de que el usuario no proporcione ninguna entrada. Esto se puede hacer modificando la línea de entrada a:Esta línea establecerá la variable
response
en'N'
si el usuario no proporciona ninguna entrada. Alternativamente, se puede utilizar un bloquetry-except
para capturar la excepción y proporcionar una respuesta predeterminada, como sigue:Este código establecerá la variable
response
en'N'
en caso de que se produzca la excepciónEOFError
.