Sunday, July 14, 2019

I reviewed Hamza’s work on getlino and started to dive myself into it.

The challenge is that we have a set of configuration options to be stored in a config file. For each option there is a help text. We want getlino setup to interactively ask for each of these options and then to write the site-wide config file. I keep the door open for a per-user config file though I don’t currently see why this might be good. Maybe on some shared server.

  • Remove argh dependency and make use of click features

    The click package has a prompt keyword for options, but (1) how to disable prompting when –noinput is given? and (2) I would like to use the help texts when prompting. I found this documentation page but no real solution.

  • Rremoved the projects_prefix option (I don’t see why it is useful)

  • config files :

    1. support having a system-wide and a per-user file

    2. read them all (if they exist), write only the system conf (only if there is no user conf and after asking user confirmation)

  • Instead of running sudo for every command, we must run the whole script as root: sudo pip3 install getlino.

  • I think that uwsgi is not needed for getlino (it is needed by the env of every site)

  • added more options

  • split it into three commands : config, setup and startsite.

My last checkins today use a quite sophisticated approach, but it seems to work as I want. The sophisticated approach seems necessary because we want to have our hard-coded default config values, we want to read and write them from or to the config file, we want to overwrite them via command-line options, and we want to interactively ask for their value. The tricky part was how to define everything in a central place and avoid redundant code.

We cannot say “–noinput” as in Django because for boolean options click requires a word for both values. I could declare the option using “–input/–noinput”, but then the name of the variable would be “input”. Okay I could specify an alternative variable name, e.g. input_, but that would make it even more difficult to understand. “batch” seems clear to me.

I also started a page about getlino in the book: getlino : the Lino installer.

I am still not finished : the startsite command doesn’t work at all.