Closed lgraziani2712 closed 7 years ago
Hola Luciano, suponiendo que dicho plugin existiera y se pudiera utilizar composer como lanzador, en caso de tener múltiples instalaciones aún debería especificar cual de todos los directorios "bin" deseo utilizar no?, de lo contrario podría ejecutar los comandos sobre otra instalación.
Saludos
@enfoqueNativo En cuanto a múltiples instalaciones entiendo esto:
/home/repos
/toba-proyecto-1
/toba-proyecto-2
~/toba-proyecto-1
, ejecutar el comando composer toba xxxx
afectaría a dicho proyecto.~/toba-proyecto-2
.Es decir, que el comando sería local, en vez de necesitar una referencia en el path del sistema.
suponiendo que dicho plugin existiera
No entiendo a qué te referís como plugin.
@lgraziani2712 Entiendo tu punto.. pero no veo la ventaja.
En ninguno de los casos es requerido referenciar la variable PATH, ojo que conveniencia no es lo mismo que requerimiento. Se agregan todas esas variables a un archivo de entorno por conveniencia, para poder trabajar sobre los proyectos desde cualquier parte del FS y tipeando menos parametros.
Por otra parte, no estariamos ahorrando nada ya que composer hace lo mismo
Lo del plugin venia a titulo de tener un instalador propio que ignorara el de composer.
Para mi tiene algo raro que al ejecutar bin/toba
no esté asociado a la instancia donde está ese ejecutable.
@lgraziani2712 El problema no se soluciona ejecutando composer toba
porque tiene que haber unas variables de entorno definidas que están en la carpeta de instalación de toba (entorno_toba.env
)
Estuve pensando y una fácil que se puede hacer para resolver esto:
bin
de toba (y que este archivo esté ignorado ya que tiene cosas dependientes de la instalación). Puede ser un .php que tenga unos putenv
sbin/toba
que incluya ese archivo antes de ejecutarseDe esa manera se haría la carga del entorno correcto cada vez que se ejecuta el comando y logramos el comportamiento (razonable) que explica @lgraziani2712 más arriba. "El bin/toba de un directorio carga el proyecto de ese directorio"
Si querés setear un toba "global" metés el bin/toba
correspondiente en el PATH y listo.
Como la ves @enfoqueNativo ?
@enfoqueNativo Perdón, no quise decir de crear un plugin que reemplazara a composer. Sino que ejecutar toba vía composer asignando un script dentro de la configuración de composer falla:
{
"scripts": {
"toba": "toba"
},
// el resto de la configuración recomendada
}
Cuando trato de ejecutar composer toba instalacion instalar
, se la pasa imprimiendo en (s/n):
.
Pero cuando ejecuté el bat directamente desde la terminal como dijiste (vendor/bin/toba.bat instalacion instalar
) funciona adecuadamente.
Como fix temporal hice un alias toba=vendor/bin/toba.bat $*
, y evito el uso de un path global 👍
Me sumo a la idea de @andres-blanco! Poder utilizar un archivo env dentro de la raíz del proyecto sería genial.
Gracias!
Pensándolo mejor, que no sea un php ese archivo, que sea un archivo de entorno común para poder levantarlo con esta librería https://github.com/vlucas/phpdotenv. Si además se agrega ese archivo al bin
del composer de toba podemos facilitar el acceso a información de instalación del proyecto toba en cuestión desde entornos no toba.
@andres-blanco Dejar algo en el bin de toba no se puede, cuando composer actualiza la version vuela todo. La alternativa es la carpeta bin del proyecto.. pero esta al mismo nivel que la de instalación, osea que es practicamente lo mismo. Voy a mirar lo de phpdotenv a ver que onda, por ahi con eso ya estamos.
@lgraziani2712 No problem, la declaracion en el json puede funcar, aunque me parece que tendrias que declararlo asi:
{
"scripts": {
"toba": "bin/toba"
}
}
Por otro lado, veo que estas lanzando el comando desde la carpeta vendor, supongo que tu proyecto no tiene una carpeta ''bin'' de lo contrario te habria quedado el symlink ahi dentro.
editado!
Dejar algo en el bin de toba no se puede, cuando composer actualiza la version vuela todo.
Tenés razón, se me pasó
La alternativa es la carpeta bin del proyecto.. pero esta al mismo nivel que la de instalación, osea que es practicamente lo mismo. Voy a mirar lo de phpdotenv a ver que onda, por ahi con eso ya estamos.
otra es dejar el entorno_toba.env
en la raíz del proyecto? el comando toba ya está levantando el dir del proyecto. Lo que habría que hacer es levantar el entorno_toba.env
(puede ser con phpdotenv) de ahí.
De esa manera evitamos tener que cargar manualmente las variables de entorno para invocar a toba.
@sergiovier el link da 404!
@enfoqueNativo:
Por otro lado, veo que estas lanzando el comando desde la carpeta vendor, supongo que tu proyecto no tiene una carpeta ''bin'' de lo contrario te habria quedado el symlink ahi dentro.
Uhm... ¿Pero está bien, no? Composer instaló toba dentro de la carpeta vendor, y ahí dentro instaló el bin de toba.
@sergiovier Lastima que lo dejaron de lado, de todas maneras eso convertiria a composer de un simple manejador de paquetes en algo mas. Además, el proceso de instalación debería modificar cosas en el archivo del proyecto... medio confuso queda.
@lgraziani2712 No está mal, solo digo que te podría haber quedado mas sencillo el acceso teniendo una carpeta "bin" en el árbol del proyecto.
@andres-blanco En realidad el comando levanta el dir de toba, no del proyecto. Incluso cuando composer deja el symlink, el directorio de ejecucion esta dentro del bin de toba. Lo que se podría hacer es volver una cantidad X de dirs hacia atrás, ya que tampoco sabemos el dir del proyecto en ese punto y levantarlo de ahi. No me pinta mucho agregar archivos sueltos a la carpeta del proyecto.. pero la carpeta "instalacion" puede estar en cualquier parte del disco.
@enfoqueNativo si tirás esto
DIR="$(cd "$(dirname "$0")" && pwd)"
dentro de un script te tira el path del symlink, no del path real. Capaz que se zafa
Desde php se puede obtener el path requerido así: https://stackoverflow.com/a/10526123/598694
Lo paso a otro issue [#7] asi esto queda para definir la parte de composer como lanzador. Sigue teniendo sentido?.. en que caso?
En vez de agregar al path la ubicación del bin de toba de un proyecto en particular, sería un mejor enfoque que fuera posible ejecutar el siguiente comando:
Sin embargo, actualmente no es posible. Al menos el comando
composer toba instalacion instalar
no funciona, se la pasa escupiendo(s/n):
eternamente.Gracias!