[horde] The Road To H6: horde/components tool is now on packagist

Lang, Ralf ralf.lang at gmail.com
Wed Nov 15 20:06:05 UTC 2023


Am 30/10/2023 um 19:45 schrieb Lang, Ralf:
> Hello,
>
>
> Am 29/10/2023 um 10:49 schrieb Lang, Ralf:
>> Hello,
>>
>> I have now added the necessary dependencies to install the 
>> horde/components tool via composer. This is a tool developers use to 
>> build the changelog, create releases and some other project 
>> administrative stuff.
>>
>> I will probably have to rework the default config and code which sets 
>> up the github CI workflows. It was built with downstream in mind and 
>> didn't get a lot of testing on php8.1+.
>>
> horde/core v3.0.0alpha15 fixes an incompatibility with php 8.2+ when 
> trying to log exceptions.
> horde/content and horde/mnemo can now be installed. Mnemo's main 
> screen can be accessed but trying to save memos creates an error 
> screen. The memo is however saved and shows up when reloading. I will 
> look into this.

The last two week sprint didn't bring as many hours of coding as I intended.

horde/http has been updated to the latest versions of PHP-FIG standards:

PSR-7 HTTP Message 2.0, PSR-17 HTTP Factories 1.0.2, PSR-18 HTTP Client 
1.0.3. Currently at phpstan level 3.
This will probably trigger some more updates in horde/core to deal with 
the necessary signatures.

horde/githubapiclient is a new helper library. As the name suggests, it 
wraps a few calls to the GitHub API. I took much care to have as few 
coupling to Horde's framework as possible. Currently at phpstan level 9.

horde-components tool got most attention. At the moment most commands 
are not accessible as I am in the middle of changing implementation 
details. Based on horde/githubapiclient, there is a new command

     horde-components github-clone-org

which checks out all repos from the horde github organization. A similar 
feature already existed in Michael's git-tools utility. After checking 
out a whole tree, one can use the other git related commands though many 
of them still only work on single components.

Clone a component from an online repo
     horde-components git clone [component] [branch]

Fetch metadata from all remotes, including tags
     horde-components git fetch [component]

Locally checkout a branch
     horde-components git checkout [component] [branch]

Update a branch from another branch
     horde-components git branch [component] [branch] [source branch]

Write a tag to a branch
     horde-components git tag [component] [branch] [tag] [comment]

Push a component to a remote
     horde-components git push [component] [remote]


I think there will be some changes to the changelog and release 
functionality. The tool should allow to derive the changelog from the 
contents of commit messages and pull requests. Also it should check for 
key words like "added", "deprecated", "removed", "fixed", "security" and 
automatically figure if it is going to be a feature release or a bugfix 
release. Noise without a marker word should be kept out of the changelog.

At a later point I want to use the tool in github actions. When merging 
a PR, it should automatically create a tagged release, changelog, 
artefacts, upload phpdoc and quality metrics to the website... we're not 
there.

Finally I prepared a number of additional libraries for upload to 
Packagist <https://packagist.org/packages/horde/>.
For the sprint starting today, remaining horde apps and libraries should 
end up in packagist. Work on components tool will continue and some 
cursory tests&fixes may eliminate obvious incompatibilities with PHP 8.2+



More information about the horde mailing list