Agradecería mucho alguna ayuda con lo siguiente.
Mi escenario:
Tengo una aplicación para Mac que genera archivos RTF. Tengo una aplicación de Android que se ocupa de los archivos MultiMarkdown/Markdown.
La aplicación Mac funciona con proyectos, y estos tienen cualquier cantidad de archivos. Puede sincronizar automáticamente los archivos en un proyecto dado a una carpeta. Esencialmente, colocará en la carpeta un montón de archivos cada vez que se sincronice (al abrir y cerrar, y manualmente). Cualquier cambio en esa carpeta se sincroniza automáticamente con mi dispositivo Android.
Sin embargo, necesito que se conviertan a archivos .mmd antes de que eso suceda, y que se vuelvan a convertir a RTF cuando los archivos se cambien (o sean nuevos) desde el dispositivo Android.
Así que esto es lo que tengo en mente. Lo que me gustaría es configurar las cosas de tal manera que cuando los archivos se sincronicen desde la aplicación Mac a su carpeta de destino, esos archivos se conviertan automáticamente de RTF a MMD. Ya tengo los scripts que harán la conversión real. Y cuando los archivos MMD cambien, se convertirán automáticamente a archivos RTF. También tengo un guión para esto.
Las preguntas que tengo son estas:
Conversión bidireccional:
Pero, obviamente, esto creará un ciclo sin fin, porque cada acción desencadenará la acción inversa, sin fin.
Una posible forma de evitar este bucle sin fin podría ser esta:
Pero tal vez hay una mejor manera?
Estoy ansioso por aprender más sobre secuencias de comandos y, en el proceso, resolver este problema.
¿Hay personas con ideas factibles sobre cómo lograr lo que espero lograr aquí?
Crearía un script que monitoree ambas carpetas. Mi lenguaje de elección para esto es Python. AppleScript no es muy adecuado para este tipo de operación. La idea básica es escuchar FSEvents en las dos carpetas en cuestión y, cuando ocurra uno, anular rápidamente la programación del flujo de eventos para la otra carpeta, realizar alguna operación de conversión y sincronización, y luego reprogramar el flujo de eventos previamente no programado.
El script completo, descargado aquí, con versiones modificadas de esos scripts que me mostraste. La instalación de MacFSEvents ahora es automática: https://www.dropbox.com/s/oylvewk90ezwb3s/File%20Sync.app.zip?dl=1
Estos son los pasos para usarlo:
Extraiga el subprograma, haga clic con el botón derecho en él y seleccione "Mostrar contenido del paquete", abra Contenido y recursos, luego edite la lista dentro con sus pares de carpetas RTF y MMD. Podrá especificar tantos pares como necesite para mantenerse sincronizados entre sí, solo mantenga el mismo formato que usé en el plist: una matriz por par, cada una con dos elementos, siendo el primer elemento la ruta a la carpeta RTF, siendo la segunda la ruta a la carpeta MMD. Verás esto cuando abras el plist.
Esto debería funcionar sin ningún problema. Ahora se observarán las carpetas en busca de cualquier tipo de modificación, y los archivos se convertirán y transferirán a la otra carpeta.
Estoy totalmente a favor de que las personas aprendan a crear secuencias de comandos, pero para el uso diario y la flexibilidad, volver a implementar partes de Hazel de NoodleSoft es menos potente y eficiente para una solución de propósito general.
Nuevamente, felicitaciones a Froggard e Inspired Life por la excelente respuesta y la pregunta práctica.
inspirado
inspirado
William T. Froggard