138 lines
4.0 KiB
Markdown
138 lines
4.0 KiB
Markdown
# Language File Download and Compare Docker
|
|
|
|
This Docker container downloads language JSON files from a specified URL, compares them with existing files, and automatically commits and pushes changes to a Git repository.
|
|
|
|
## Features
|
|
|
|
- Downloads language files for multiple languages
|
|
- Compares new files with existing ones
|
|
- Generates diff files for changes
|
|
- Automatically commits and pushes changes to Git
|
|
- Supports 15 languages: en, zh-TW, ja, ko, fr, de, es, it, nl, pl, pt, ru, tr, vi, zh-CN
|
|
|
|
## Setup
|
|
|
|
1. Copy `env.example` to `.env` and configure your Git repository:
|
|
```bash
|
|
cp env.example .env
|
|
```
|
|
|
|
2. Edit `.env` with your Git repository details and authentication method:
|
|
|
|
**Method 1: Personal Access Token (Recommended)**
|
|
```
|
|
GIT_REPO_URL=https://github.com/yourusername/yourrepo.git
|
|
GIT_USERNAME=yourusername
|
|
GIT_EMAIL=your.email@example.com
|
|
GIT_BRANCH=main
|
|
GITHUB_TOKEN=ghp_your_personal_access_token_here
|
|
```
|
|
|
|
**Method 2: SSH Key**
|
|
```
|
|
GIT_REPO_URL=git@github.com:yourusername/yourrepo.git
|
|
GIT_USERNAME=yourusername
|
|
GIT_EMAIL=your.email@example.com
|
|
GIT_BRANCH=main
|
|
```
|
|
|
|
3. Build and run the container:
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
|
|
## GitHub Authentication
|
|
|
|
### Personal Access Token (Recommended)
|
|
1. Go to GitHub → Settings → Developer settings → Personal access tokens
|
|
2. Generate a new token with `repo` scope
|
|
3. Add the token to your `.env` file as `GITHUB_TOKEN`
|
|
4. Use HTTPS URLs: `https://github.com/username/repo.git`
|
|
|
|
### SSH Key Authentication
|
|
1. Generate SSH key pair: `ssh-keygen -t ed25519 -C "your_email@example.com"`
|
|
2. Add public key to GitHub → Settings → SSH and GPG keys
|
|
3. Use SSH URLs: `git@github.com:username/repo.git`
|
|
4. Mount your private key in docker-compose (see Advanced Configuration)
|
|
|
|
## Local Testing
|
|
|
|
For local testing on your machine:
|
|
|
|
1. Install dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. Create a `.env` file with your Git configuration (same as above)
|
|
|
|
3. Run the script locally:
|
|
```bash
|
|
python download_and_compare.py
|
|
```
|
|
|
|
The script will automatically load environment variables from the `.env` file using python-dotenv.
|
|
|
|
## Usage
|
|
|
|
The container will:
|
|
1. Download language files from the configured URL
|
|
2. Compare with existing files
|
|
3. Generate diff files for any changes
|
|
4. Commit and push changes to the Git repository
|
|
|
|
## Files Generated
|
|
|
|
- `{lang}.json` - Current language files
|
|
- `{lang}.diff` - Diff files showing changes (only when changes detected)
|
|
|
|
## Environment Variables
|
|
|
|
- `GIT_REPO_URL` - URL of the Git repository to push to
|
|
- `GIT_USERNAME` - Git username for commits
|
|
- `GIT_EMAIL` - Git email for commits
|
|
- `GIT_BRANCH` - Git branch to use (defaults to 'main')
|
|
|
|
## Running Manually
|
|
|
|
To run the script manually outside of Docker:
|
|
```bash
|
|
python download_and_compare.py
|
|
```
|
|
|
|
The script will automatically load your `.env` file for local testing.
|
|
|
|
## Troubleshooting
|
|
|
|
### Git Authentication Issues
|
|
|
|
If you encounter authentication errors like "could not read Username", try these steps:
|
|
|
|
1. **Verify your `.env` file** contains all required variables:
|
|
```bash
|
|
GIT_REPO_URL=https://github.com/yourusername/yourrepo.git
|
|
GIT_USERNAME=yourusername
|
|
GIT_EMAIL=your.email@example.com
|
|
GITHUB_TOKEN=ghp_your_token_here
|
|
```
|
|
|
|
2. **Test Git configuration** in the container:
|
|
```bash
|
|
docker-compose run --rm download-compare python test_git_config.py
|
|
```
|
|
|
|
3. **Check Personal Access Token permissions**:
|
|
- Ensure the token has `repo` scope
|
|
- Verify the token hasn't expired
|
|
- Check that the token belongs to the correct GitHub account
|
|
|
|
4. **Verify repository access**:
|
|
- Ensure your GitHub account has access to the repository
|
|
- Check if the repository is private and requires authentication
|
|
|
|
### Common Issues
|
|
|
|
- **"No such device or address"**: Usually means Git is trying to prompt for credentials interactively
|
|
- **"Authentication failed"**: Check your Personal Access Token and repository permissions
|
|
- **"Repository not found"**: Verify the repository URL and your access permissions
|