Brew cask: me gustaría verificar si el paquete/fórmula ya está instalado a través de brew u otros medios

Estoy tratando de instalar algunos softwares usando brew cask y me gustaría verificar si el paquete/fórmula ya está instalado a través de brew u otros medios.

Tengo un script que instala una lista de softwares usando brew cask y no quiero que instale un software que ya está presente en la máquina.

Para lograr esto, me referí a esta pregunta: Con Homebrew, ¿cómo verificar si un software/paquete está instalado?

Esto me indica la dirección correcta, pero solo puedo evitar instalar un software que se instala a través de brew cask.

Si el software se instala descargando el dmg y ya está presente en la carpeta /Aplicaciones/, entonces no lo reconoce y continúa con la instalación del software.

¿Hay alguna manera de averiguar si la aplicación se instala a través de brew o cualquier otro medio antes de que mi secuencia de comandos comience a instalarla?

"Si el software se instala descargando el dmg y ya está presente en la carpeta /Aplicaciones/, entonces no lo reconoce y continúa con la instalación del software". Utilice findel comando para buscar en la carpeta /Applicationsy ~/Applicationsla fórmula de destino. Enumere todas las coincidencias en la consola y pregunte al usuario si desea continuar con la instalación o no.
@anki Pero el nombre de la fórmula y el nombre de la aplicación no son lo mismo. Por ejemplo, la fórmula de google chrome es google-chrome mientras que el nombre de la aplicación es 'Google Chrome'. En este escenario, tendré que seguir editando el script si la aplicación decide cambiar su nombre.
expresiones regulares, búsqueda insensible a mayúsculas y minúsculas, etc. pueden ser útiles aquí. No conozco ninguna lista central de todas las aplicaciones instaladas. solo tienes que buscar..
@anki supongo. Tenía la esperanza de que hubiera alguna manera de haber extraído el nombre de la aplicación de la fórmula antes de instalarla, pero parece que no tengo otra opción.
Puede analizar la salida de brew cask info --json=v1 google-chromeo brew cask info google-chromepara encontrar el nombre en el que se instalará el barril. Sin embargo, no ayudará en el caso de aplicaciones renombradas.
@nohillside Si se cambia el nombre de las aplicaciones, realmente no me importa. El usuario tendrá que resolverlo, pero este comando definitivamente me facilitaría la vida. Gracias
@nohillside Eso funcionó. Genial gracias

Respuestas (2)

Supongo que conoces el nombre de la aplicación. Entonces solo prueba la existencia de la aplicación.

if [[ ! -d "/Applications/APP-TO-CHECK.app" ]]; then
    # install APP-TO-CHECK
fi 
Pero el nombre de la fórmula y el nombre de la aplicación no son lo mismo. Por ejemplo, la fórmula de google chrome es google-chrome mientras que el nombre de la aplicación es 'Google Chrome'. En este escenario, tendré que seguir editando el script si la aplicación decide cambiar su nombre.
Traté de ejecutar su script pero me da el siguiente error: error de sintaxis en la expresión condicional -> si [[ ! -d /Aplicaciones/Google Chrome.app ]]; entonces
Agregar comillas solucionó el problema
@NickDiv Los nombres con espacios siempre deben citarse en el shell. En cuanto al problema del cambio de nombre: no veo una forma segura de cubrir todos los escenarios posibles y, sinceramente, considero que esto es raro. Si es necesario, solo probaría todos los nombres conocidos.
Ese es el estándar POSIX para la prueba. Es suficiente escribir [y ]. Esto funciona en cualquier shell. No hay necesidad de [[y ]]. Ver BashFAQ/031: mywiki.wooledge.org/BashFAQ/031

Esta es una solución primitiva pero podría ayudar.

  1. Descarga esta aplicación (te permite buscar archivos ocultos).
  2. Busque el nombre de su aplicación/repositorio que desea descargar.
  3. Si no está allí, entonces es seguro decir que no lo tiene.