1 votos

Utilice el comando FileMerge de Apple desde la línea de comandos y haga que espere en lugar de salir inmediatamente

Esta pregunta es un seguimiento a Abrir dos archivos para comparación en FileMerge, desde la línea de comandos.

Después de instalar XCode, puedo llevar a cabo opendiff dir1 dir2 en mi Mac y obtener una interfaz gráfica agradable para comparar los directorios.

Sin embargo, el comando opendiff se cierra inmediatamente, antes de que haya terminado de editar el archivo. Esto me impide usar opendiff y un editor de diferencias o un editor de fusiones para jj.

Pregunta: ¿Existe alguna forma de hacer que se pause hasta que el usuario haya terminado de editar, de manera similar a como funciona code --wait de VS Code (y todas las herramientas de Linux)?


Ejecutar opendiff sin argumentos muestra su uso como usage: opendiff file1 file2 [-ancestor ancestorFile] [-merge mergeFile], lo cual es un poco decepcionante.

Sólo por diversión, aquí tienes una captura de pantalla de la herramienta:

Captura de pantalla de FileMerge/opendiff

1voto

Ilya Grigoriev Puntos 136

Si no hay una respuesta mejor, aquí hay un una solución alternativa que funciona más o menos. Tengo este script genérico llamado pause_after en mi PATH:

#!/bin/sh
"$@"
ERRCODE=$?
printf '\033[01;32m' # Color verde
printf "\`%s\` salió con el código de error %s. Presiona Enter para continuar, ^D para fallar. " "$1" "$ERRCODE"
printf '\033[00m'    # Reiniciar color
read -r __unused || (echo "(Se recibió EOF o ^D)"; false)

Luego puedes usar pause_after opendiff ... en lugar de opendiff. Tendrás que presionar manualmente ENTER en la terminal después de que opendiff termine.

1voto

Martin R Puntos 181

En lugar de lanzar FileMerge a través de opendiff, puedes hacerlo con el comando open (encontrado aquí en Stack Overflow):

open -a FileMerge -n -W --args -left file1 -right file2

La opción -n hace que open lance una nueva instancia de la aplicación incluso si ya hay una en ejecución, y la opción -W hace que open espere hasta que la aplicación haya salido.

Las rutas pasadas a la aplicación FileMerge deben ser absolutas. Un script envolvente podría ser útil, algo así como

#!/bin/sh
file1=$(realpath "$1")
file2=$(realpath "$2")
open -a FileMerge -n -W --args -left "$file1" -right "$file2"

Puedes querer agregar verificación de errores (número de parámetros) y soporte para los parámetros -ancestor y -merge, si es necesario.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X