Subject: Re: [bug#35790] [PATCH 1/2] lint: Move the linting code to a different module.

From: Christopher Baines <[email-masked]>
Date: Sun, 14 Jul 2019 19:03:59 +0100

Ludovic Courtès <[email-masked]> writes:

> Christopher Baines <[email-masked]> skribis:
>
>> To try and move towards making programatic access to the linting code easier,
>> this commit separates out the linting script, from the linting functionality
>> that it uses.
>
> For the final version, please write a change log.

Sure, any suggestions about how to write it? I wasn't sure whether to
list everything that had been moved from (guix scripts lint) to (guix
lint), or say that the file has moved, and list the things that have
been moved back.

>> +(define-module (guix lint)
>> +  #:use-module ((guix store) #:hide (close-connection))
>> +  #:use-module (guix base32)
>> +  #:use-module (guix download)
>> +  #:use-module (guix ftp-client)
>> +  #:use-module (guix http-client)
>> +  #:use-module (guix packages)
>> +  #:use-module (guix licenses)
>> +  #:use-module (guix records)
>> +  #:use-module (guix grafts)
>> +  #:use-module (guix ui)
>
> The principle that’s mostly followed for Guix modules is that they are
> UI-independent: they might throw ‘&message’ error conditions, they might
> even use (guix i18n), but they usually don’t depend on (guix ui).
>
> The idea is separation of concerns: the actual UI implementation details
> (TUI, GUI, etc.) remain separate from the API.
>
> At first sight (guix ui) is not necessary here, and it’s enough to use
> (guix i18n), isn’t it?

I do remember looking at this, but I think I got stuck. I've just had
another look though, and I think if I import (guix diagnostics) and
(guix i18n) modules, then (guix ui) isn't required.

> Last thing: please add this new file to po/guix/POTFILES.in.
>
> Thanks for working on it!

No problem, thanks for taking a look :)