Tool for synchronizing issues between different services
Project description
Issx
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
Enter issue_title_template ({title}): # Optional template for issue title (default: {title})
[projects.my-personal-project]
instance = 'gitlab-cloud'
project = '11111111'
issue_title_template = '{title}'
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:
- Poetry
- Python 3.11+
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file issx-0.6.0-py3-none-any.whl
.
File metadata
- Download URL: issx-0.6.0-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.5.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0fa534bcb92e13879270a7401ae0cff4dcd1a3b5d1b439c5323ab7a66c40ed88 |
|
MD5 | d7ec40f0ead815223d9bffe1e649c6b0 |
|
BLAKE2b-256 | 4fcf9d8593cfd4713790b0aae38e7b6c22e9494bf4ad23d96a81c4a48daebee2 |