inetum-orleans / docker-devbox-ddb

Erase environment differences, make developers happy !
https://inetum-orleans.github.io/docker-devbox-ddb
MIT License
4 stars 1 forks source link

SmartCd with WSL2 #215

Closed Vincere1st closed 1 year ago

Vincere1st commented 2 years ago

Hello @Toilal , I have an issue with ddb and WSL2.

If i run for the first time in a project folder the command ddb configure all is ok.

But if i want run for the second time ddb configure, SmartCD block.

SmartCD block at this step with the verbose option activate:

[shell:bash:create-alias-shim]  -> /home/vincere/.docker-devbox/.bin/dc
[shell:bash:create-alias-shim] Shim exists: /home/vincere/.docker-devbox/.bin/dc
[smartcd:generate] Execute action [phase:configure => SmartcdAction.execute()]

I found a solution for workaround the problem, i leave the folder project for deactivate SmartCD first and after i delete the .bash_enter and the .bash_leave files , and i return in the project folder. After that i can rerun the ddb configure command.

I think , the problem is in this method ,but i don't how modify and test for making a PR :

https://github.com/inetum-orleans/docker-devbox-ddb/blob/20c713cf7bfcaf289226a17a9648c17d16003b4d/ddb/feature/smartcd/actions.py#L42

Can you resolve this ?

Big thanks.

Vincent.

Vincere1st commented 2 years ago

I think on this line :https://github.com/inetum-orleans/docker-devbox-ddb/blob/20c713cf7bfcaf289226a17a9648c17d16003b4d/ddb/feature/smartcd/actions.py#L64

we can do this :


#         if write_if_different(".bash_enter", bash_enter):
        if (event.file.found, ".bash_enter"):
            event.file.deleted(".bash_enter")
            events.file.generated(source=None, target=".bash_enter")

#         if write_if_different(".bash_leave", bash_leave):
        if (event.file.found, ".bash_leave"):
            event.file.deleted(".bash_leave")
            events.file.generated(source=None, target=".bash_leave")
            events.file.generated(source=None, target=".bash_leave")
Toilal commented 2 years ago

Salut, j'ai bien compris ton problème, mais je n'en comprends pas la cause, c'est étrange. Pourquoi ça ne le ferrait que sur WSL2 ?

Vincere1st commented 2 years ago

Salut, je ne comprends pas non plus. J'ai regarder les permissions des fichiers .bash-enter et .bash_leave, et elles sont bonnes me semble-t-il:

vincere@VincereDesktop:~/projects/ddb-example$ ls -la
total 64
drwxrwxr-x 9 vincere vincere 4096 Dec 19 11:01 .
drwxrwxr-x 5 vincere vincere 4096 Dec 19 10:56 ..
-rw-rw-r-- 1 vincere vincere   40 Dec 19 11:01 .bash_enter
-rw-rw-r-- 1 vincere vincere   44 Dec 19 11:01 .bash_leave
drwxrwxr-x 2 vincere vincere 4096 Dec 19 10:54 .bin
drwxrwxr-x 2 vincere vincere 4096 Dec 19 10:54 .certs
drwxrwxr-x 6 vincere vincere 4096 Dec 19 09:09 .docker
drwxrwxr-x 8 vincere vincere 4096 Dec 19 10:52 .git
-rw-rw-r-- 1 vincere vincere  907 Dec 19 11:01 .gitignore
drwxrwxr-x 2 vincere vincere 4096 Dec 21 21:23 .idea
drwxrwxr-x 6 vincere vincere 4096 Dec 19 09:09 backend
-rw-rw-r-- 1 vincere vincere   60 Dec 19 09:09 ddb.yml
-rw-rw-r-- 1 vincere vincere 4681 Dec 19 10:54 docker-compose.yml
-rw-rw-r-- 1 vincere vincere 2389 Dec 19 09:09 docker-compose.yml.jsonnet
drwxrwxr-x 4 vincere vincere 4096 Dec 19 09:09 frontend

et ddb aussi:

drwxrwxr-x 12 vincere vincere 4096 Dec 19 11:43 .docker-devbox

j'ai même fait un

sudo chown -R vincere .docker-devbox

et un

sudo chgrp -R vincere .docker-devbox

pour être sûr qu'il n'y ait pas un soucis de permission.

J'ai fermé mon IDE pour être sûr aussi que ce n'est pas un problème de fichier déjà ouvert/occupé.

Et je n'ai aucun soucis avec la génération du docker-composer.yml

J'utilise ce script d'install pour docker, docker compose et ddb: https://github.com/Vincere1st/ddb-wsl2

Vois tu quelque chose de bloquant ?

Et dans la méthode 'execute' de smartCD, pourquoi ne pas supprimer le fichier au lieu de l'écraser (si j'ai compris ce qu'il se passe) ?

Merci de ton retour.

Vincent

Toilal commented 2 years ago

Le module events dans le code que tu as collé corresponds à l’émission de notifications, ça n'existe pas directement d'actions.

write_if_different écrit le fichier s'il est différent de la version existante. Elle retourne true s'il est différent, false s'il est identique.