Skip to main content

Tool for synchronizing issues between different services

Project description

Issx

PyPI PyPI - Python Version PyPI - License Coookiecutter - Nekeal


Documentation | Source Code | PyPI


Tool for synchronizing issues between different services (e.g. GitHub, Gitlab Jira, etc.)

Disclaimer

Please note that issx is currently in the early stages of development. As such, it may be subject to significant changes and improvements. The links to PyPI and documentation provided above are placeholders and may not be operational yet. Users are encouraged to consult the GitHub repository for the latest updates and information on this project. We appreciate your interest and patience as we work to enhance issx.

Installation

Using pip

pip install issx

Using pipx

pipx install issx

Basic usage

The basic functionality of issx is provided through the issx command-line interface (CLI). For a full list of available commands and options, please refer to the CLI reference.

!!! warning The issx CLI requires a configuration file to be present in the working directory (issx.toml) or in ~/.config/issx.toml. Refer to the Configuration file section for more information.

Initializing the configuration file

There is a set of dedicated commands to initialize the configuration file and add instances and projects to it.

Generate a new instance's configuration

> issx config generate-instance --instance gitlab-cloud

Enter backend [gitlab/redmine]: gitlab
Enter url: https://gitlab.com
Enter token: token

[instances.gitlab-cloud]
backend = 'gitlab'
url = 'https://gitlab.com'
token = 'token'

The output should be then copied to the Configuration file.

Generate a new project's configuration

> issx config generate-project --project my-personal-project
Enter instance: gitlab-cloud   # The name of the instance that is already configured
Enter project: 11111111        # Identifier of the project characteristic for the instance's backend

[projects.my-personal-project]
instance = 'gitlab-cloud'
project = '11111111'

The output should be then copied to the Configuration file.

Copying issues

It allows to copy issues from one configured project to another.

issx copy --source=<project_name> --target=<project_name> <issue-id>

where source and target are the names of the projects configured in the configuration file.

Optionally you can customize the issue title and description by providing --title-format/-T and --description-format/-D flags. The format should be a string with placeholders for the issue fields (e.g. {title}, {description}, {id} etc.).

Assigning the issue to the current user is also possible by providing --assign-to-me/-M flag.

issx copy --source=<project_name> --target=<project_name>  -T "[copied] {title}" -D "Description: {description}" -M <issue-id>

Verifying authentication

To validate the authentication with a newly configured instance, you can use command issx auth-verify:

issx auth-verify --instance=<instance_name>

Configuration file

The configuration file can be either in the working directory (issx.toml) or in ~/.config/issx.toml.

It should have the following structure:

[instances.INSTANCE_NAME]
    backend = "gitlab" / "redmine"
    url = "<absolute url to the instance>"
    token = "<API token used for authentication>"

[projects.PROJECT_NAME]
    instance = "INSTANCE_NAME"
    project = "<project_id>"

Instances section is used to configure the instances of the services (e.g. Gitlab, Redmine) that issx will interact with.

Projects section is used to configure the projects that issx will work with. Each project should be associated with an instance. project field should contain the project id available in the chosen instance (usually it is a number).

Development

  • Clone this repository
  • Requirements:
  • Create a virtual environment and install the dependencies
poetry install
  • Activate the virtual environment
poetry shell

Testing

pytest

Documentation

The documentation is automatically generated from the content of the docs directory and from the docstrings of the public signatures of the source code. The documentation is updated and published as a Github Pages page automatically as part each release.

Releasing

Trigger the Draft release workflow (press Run workflow). This will update the changelog & version and create a GitHub release which is in Draft state.

Find the draft release from the GitHub releases and publish it. When a release is published, it'll trigger release workflow which creates PyPI release and deploys updated documentation.

Pre-commit

Pre-commit hooks run all the auto-formatting (ruff format), linters (e.g. ruff and mypy), and other quality checks to make sure the changeset is in good shape before a commit/push happens.

You can install the hooks with (runs for each commit):

pre-commit install

Or if you want them to run only for each push:

pre-commit install -t pre-push

Or if you want e.g. want to run all checks manually for all files:

pre-commit run --all-files

This project was generated using the nekeal-python-package-cookiecutter template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

issx-0.5.4.tar.gz (14.3 kB view hashes)

Uploaded Source

Built Distribution

issx-0.5.4-py3-none-any.whl (15.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page