Add initial configuration files for GitHub Actions and copywrite checks

This commit is contained in:
2025-05-03 17:44:37 +02:00
parent fceb49ac29
commit 1ecccaee9a
4 changed files with 148 additions and 0 deletions

16
.copywrite.hcl Normal file
View File

@@ -0,0 +1,16 @@
schema_version = 1
project {
license = "MIT"
copyright_year = 2025
copyright_holder = "Paillat-dev"
header_ignore = [
".venv/**",
"logs/**",
".idea/**",
".git/**",
".vscode/**",
"__pycache__/**",
"*.pyc",
]
}

13
.github/workflows/CI.yaml vendored Normal file
View File

@@ -0,0 +1,13 @@
name: CI
on:
push:
branches: [ "master"]
pull_request:
branches: ["master"]
jobs:
quality:
uses: ./.github/workflows/quality.yaml
permissions:
contents: read

54
.github/workflows/quality.yaml vendored Normal file
View File

@@ -0,0 +1,54 @@
name: Quality Checks
on:
workflow_call:
jobs:
check-license-header:
name: License Header Check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Copywrite
uses: hashicorp/setup-copywrite@5e3e8a26d7b9f8a508848ad0a069dfd2f7aa5339
- name: Check Header Compliance
run: copywrite headers --plan --config .copywrite.hcl
quality:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
check: [format, lint, basedpyright]
include:
- check: format
name: "Format Check"
command: "uv run ruff format --check ."
- check: lint
name: "Lint Check"
command: "uv run ruff check ."
- check: basedpyright
name: "Type Check"
command: "uv run basedpyright ."
name: ${{ matrix.name }}
steps:
- uses: actions/checkout@v4
- name: "Install uv"
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: "pyproject.toml"
- name: Install dependencies
run: uv sync
- name: ${{ matrix.name }}
run: ${{ matrix.command }}

65
README.md Normal file
View File

@@ -0,0 +1,65 @@
# Discord Emojis
A Python tool that automatically fetches and extracts the latest emoji data from Discord.
## Overview
This project automatically downloads the latest Discord build from the [Discord-Datamining](https://github.com/Discord-Datamining/Discord-Datamining) repository, extracts emoji data, and saves it in a structured JSON format. It runs as a GitHub Actions workflow twice a week to keep the emoji data up-to-date without manual intervention.
## How It Works
- GitHub Actions workflow runs automatically twice per week
- Downloads the latest Discord build
- Extracts emoji information
- Saves data in a standardized JSON format
- Tracks changes using hash comparison to avoid unnecessary updates
- Detects and reports UTF-16 surrogate pairs
## Technical Details
The project uses:
- Python 3.13+
- Dependencies:
- json5
- orjson
- requests
## Output
The emoji data is saved in `build/emojis.json` in the following format:
```json
{
"emojis": [
{
"name": "emoji_name",
"id": "emoji_id",
...
},
...
]
}
```
The main emojis.json file in the root directory is the updated version that consumers can access via GitHub raw URLs or by cloning this repository.
## Development
For local development or testing:
```bash
# Install dependencies using uv
uv sync --dev
# Run the update script manually
uv run src
```
Note: Local execution should only be done during development. In production, the script runs automatically through GitHub Actions.
The script will:
1. Download the latest Discord build
2. Extract emoji information
3. Save the data to `build/emojis.json`
4. Generate a hash file to track changes
If no changes are detected compared to the previous run, the script will exit with status code 3.