<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div>Dear Giovanni,</div><div><br class=""></div><div>this sounds like a great idea.</div><div>As you saying this will not solve all problems on updating like in case one needs to change or extend settings.py</div><div>However. The .env file might be a good starting point.</div><div><br class=""></div><div>There is something similar for docker:</div><div><a href="https://github.com/Rillke/Docker-env-file-update/tree/master" class="">https://github.com/Rillke/Docker-env-file-update/tree/master</a></div><div><br class=""></div><div>Some time ago I’ve translated the provided bash script to python that I can share:</div><div><a href="https://gist.github.com/t-book/bfeaaa3b550558797b3c16567f8a5c88" class="">https://gist.github.com/t-book/bfeaaa3b550558797b3c16567f8a5c88</a></div><div><br class=""></div><div><br class=""></div><div><b class="">Given a fresh .env_template like</b></div><div><br class=""></div><div><div># This is a comment that should be copied as is</div><div># This is a comment that should be copied as is</div><div># This is a comment that should be copied as is</div><div><br class=""></div><div><br class=""></div><div>COMPOSE_PROJECT_NAME=geonode</div><div>DOCKERHOST=123.123.124</div><div>DOCKER_HOST_IP=</div><div># See <a href="https://github.com/containers/podman/issues/13889" class="">https://github.com/containers/podman/issues/13889</a></div><div># DOCKER_BUILDKIT=0</div><div>DOCKER_ENV=production</div><div>ALLOWED_HOSTS=["*“]</div><div><br class=""></div><div><b class="">A custom_local_env like:</b></div><div><br class=""></div><div><div>COMPOSE_PROJECT_NAME=geonode</div><div>DOCKERHOST=</div><div># See <a href="https://github.com/containers/podman/issues/13889" class="">https://github.com/containers/podman/issues/13889</a></div><div>ALLOWED_HOSTS=["localhost", "127.0.0.1“]</div><div>NOT_IN_TEMPLATE=ABC</div><div><br class=""></div><div><br class=""></div><div><b class="">The generated output would be</b></div><div><br class=""></div><div><div># This is a comment that should be copied as is</div><div># This is a comment that should be copied as is</div><div># This is a comment that should be copied as is</div><div><br class=""></div><div><br class=""></div><div>COMPOSE_PROJECT_NAME=geonode</div><div><br class=""></div><div># Updated by tonischonbuchner on 2023-08-08 09:36:41</div><div>DOCKERHOST=123.123.124</div><div><br class=""></div><div># Added by tonischonbuchner on 2023-08-08 09:36:42</div><div>DOCKER_HOST_IP=</div><div># See <a href="https://github.com/containers/podman/issues/13889" class="">https://github.com/containers/podman/issues/13889</a></div><div><br class=""></div><div># Added by tonischonbuchner on 2023-08-08 09:36:42</div><div># DOCKER_BUILDKIT=0</div><div><br class=""></div><div># Added by tonischonbuchner on 2023-08-08 09:36:44</div><div>DOCKER_ENV=production</div><div><br class=""></div><div># Updated by tonischonbuchner on 2023-08-08 09:36:45</div><div>ALLOWED_HOSTS=["localhost", "127.0.0.1"]</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><b class="">Where the script </b></div><div class=""><ul class=""><li class="">Creates a new env file based on both files</li><li class="">Copies lines that do not exist in local file but in the template file as is</li><li class="">If the var exists in both, it asks to update the value from template to local</li><li class="">Leaves a comment on changed or added lines </li></ul><div class="">What is missing is handling vars that exist in the local file but not in the template.</div></div><div class="">Currently the script informs but does not copy them (should be easy to change).</div><div class=""><br class=""></div><div class="">This is far from perfect, not once battled tested and more of a POC.</div><div class="">But maybe can help others to build upon.</div><div class=""><br class=""></div><div class="">Best regards</div><div class=""><br class=""></div><div class="">Toni</div></div></div></div><div><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class="">   1. Re: Practices on maintaining a geonode project, PR: "Align to<br class="">      GeoNode master 4.2.0" (Giovanni Allegri)<br class=""><br class=""><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Von: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Giovanni Allegri <<a href="mailto:giovanni.allegri@geosolutionsgroup.com" class="">giovanni.allegri@geosolutionsgroup.com</a>><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Betreff: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><b class="">Aw: [GeoNode-devel] Practices on maintaining a geonode project, PR: "Align to GeoNode master 4.2.0"</b><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Datum: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">7. August 2023 um 14:31:46 MESZ<br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">An: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Florian Hoedt <<a href="mailto:florian.hoedt@thuenen.de" class="">florian.hoedt@thuenen.de</a>><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Kopie: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Toni Schönbuchner <<a href="mailto:toni.schoenbuchner@csgis.de" class="">toni.schoenbuchner@csgis.de</a>>,  geonode-devel <<a href="mailto:geonode-devel@lists.osgeo.org" class="">geonode-devel@lists.osgeo.org</a>><br class=""></span></div><br class=""><br class=""><div dir="ltr" class=""><div dir="auto" class="">Thanks for raising this point, and for sharing your solutions.<div dir="auto" class=""><br class=""></div><div dir="auto" class="">Keeping a project aligned to GeoNode (and the GeoNode-project itself) can be really troublesome. We also don't have a one-fits-all solution.</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">The idea of the create_env.py command was to start creating a set of utilities to help with the creation and the upgrade of downstream projects. It was only the first step, and the PR from Alessio improves it.<br class=""></div><div dir="auto" class="">The next step wanted to be a utility that could track changes and guide the user in the procedure of updating an existing project, starting from the .env file which is the principal target of most of the changes.</div><div class="">A very rough idea would be:</div><div class=""><br class=""></div><div class=""><ol class=""><li class="">when a new project is created the commit for the geonode-project template is written to the .env file by the create_env.py utility</li><li class="">the upgrade utility retrieves the commit </li><li class="">it compares the .env.sample commit with the target branch to which you want to upgrade the project</li><li class="">it tries to extend the current .env file with any new env var, and marks them with a specific comment (similar to the fuzzy translation strings)</li><li class="">any var in the existing .env file that doesn't match the new .env.sample will be marked with a specific comment</li></ol><div class="">The same utility could generate the list of changed files between the original commit and the target branch.</div></div><div class=""><br class=""></div><div dir="auto" class="">I'm aware that this doesn't solve all the issues, but it would help a lot. What do you think?</div><div class="">Hey, I'm not saying that we will do it! :) That would be a nice feature, but at the moment we don't have plans for it.</div><div class=""><br class=""></div><div class="">Giovanni</div></div></div></div></blockquote></div></body></html>