2
0
Fork 0
No description
Find a file
2024-05-25 12:19:36 +02:00
.gitignore add .gitignore (python, arch packaging) 2023-09-08 00:04:52 +02:00
config.py add meshcentral@boira, files_autotagging and files_retention 2024-05-25 12:18:50 +02:00
issue_generator.py create config_dir automatically 2024-05-25 12:19:36 +02:00
README.md README explained configuration further 2023-09-08 00:02:44 +02:00

Updates issue generator

A project to turn RSS update feeds into new issues in the projects that depend on them.

Usage

Create a file called config.py, which should contain a list FEED_READERS. The list should contain one or more feed readers (issue_generator.FeedReader), which in turn contain an issue poster (issue_generator.IssuePoster).

The reader will check up on the RSS feed and compare against a local folder with the last version of the software it saw (stored at ~/.config/issue_generator or $XDG_CONFIG_DIR/issue_generator by default). Then, if the version differs (it doesn't sort them, just compare equality), it opens an issue with the corresponding issue poster. Currently, there is duplicate issue detection, to avoid posting duplicate issues when the config is cleared (e.g. running in a different machine).

See the documentation of each feed reader and issue poster with import issue_generator, help(issue_generator) to see how each parameter works.

Example configuration files

Read the config.py file, which requires a _secrets.py file (which you should write). It uses the readers and posters defined in issue_generator to create an array of readers. Below there are examples with three levels of complexity.

Simple example: use the available readers/posters.

from issue_generator import GithubReader, GitlabPoster

FEED_READERS = [
    # Post an issue on Gitlab.com for new releases of Gitea
    GithubReader(name    = "gitea",
                 project = "gitea-go/gitea",
                 target  = GitlabPoster(project = 65536, # your project id here
                                        token   = "qwerty-secret-token"))
]

Intermediate example: the class CGJForgejoPoster in config.py acts as a shortcut for any project hosted in the organization archpkgs in git.cgj.es/. Because the token, the instance and assignee/labels are the same, the user of this poster can simply indicate the repository to use it.

Complex example: the class UDSClientReader is a custom reader for a piece of software that doesn't publish a feed. Instead, this reader scraps the version out of a JavaScript file.