Initial commit: Basic repository structure with sample calc package

This commit is contained in:
spitkov 2025-01-05 13:35:56 +01:00
commit 33315f25fe
7 changed files with 139 additions and 0 deletions

65
.github/workflows/update-repo.yml vendored Normal file
View file

@ -0,0 +1,65 @@
name: Update Repository JSON
on:
push:
branches:
- main
paths:
- 'packages/**'
jobs:
update-repo-json:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Update repo.json
run: |
python - <<EOF
import os
import json
from pathlib import Path
def get_raw_url(path):
return f"https://raw.githubusercontent.com/spitkov/ynsrepo/main/{path}"
def update_repo_json():
packages_dir = Path('packages')
repo_data = {"packages": {}}
for package_dir in packages_dir.iterdir():
if package_dir.is_dir():
package_name = package_dir.name
version_file = package_dir / "VERSION"
if version_file.exists():
version = version_file.read_text().strip()
package_data = {
"name": package_name,
"version": version,
"install": get_raw_url(str(package_dir / "install.sh")),
"update": get_raw_url(str(package_dir / "update.sh")),
"remove": get_raw_url(str(package_dir / "remove.sh"))
}
repo_data["packages"][package_name] = package_data
with open('repo.json', 'w') as f:
json.dump(repo_data, f, indent=2)
update_repo_json()
EOF
- name: Commit changes
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add repo.json
git diff --quiet && git diff --staged --quiet || git commit -m "Update repo.json"
git push

47
README.md Normal file
View file

@ -0,0 +1,47 @@
# YNS Package Repository
This repository hosts packages for the [YNS Package Manager](https://github.com/spitkov/ynspkg). The repository structure is automatically maintained using GitHub Actions.
## Package Manager
To use these packages, you'll need to install the [YNS Package Manager](https://github.com/spitkov/ynspkg) first. The package manager will automatically fetch and manage packages from this repository.
## Repository Structure
```
.
├── repo.json # Main package index
├── packages/ # Directory containing all packages
│ └── package_name/ # Individual package directory
│ ├── VERSION # Package version file
│ ├── install.sh # Installation script
│ ├── update.sh # Update script
│ └── remove.sh # Removal script
```
## Adding a New Package
1. Create a new directory under `packages/` with your package name
2. Add the required files:
- `VERSION`: Contains the version number (e.g., "1.0", "2.1")
- `install.sh`: Installation script
- `update.sh`: Update script
- `remove.sh`: Removal script
3. Push your changes to the main branch
The GitHub Actions workflow will automatically update the `repo.json` file with your package information.
## Package Scripts
Each package must contain three executable scripts:
- `install.sh`: Handles package installation
- `update.sh`: Handles package updates
- `remove.sh`: Handles package removal
All scripts should:
- Be executable
- Return 0 on success
- Return non-zero on failure
- Handle errors appropriately

1
packages/calc/VERSION Normal file
View file

@ -0,0 +1 @@
1.0

5
packages/calc/install.sh Normal file
View file

@ -0,0 +1,5 @@
#!/bin/bash
echo "Installing calc package..."
# Add installation logic here
exit 0

5
packages/calc/remove.sh Normal file
View file

@ -0,0 +1,5 @@
#!/bin/bash
echo "Removing calc package..."
# Add removal logic here
exit 0

5
packages/calc/update.sh Normal file
View file

@ -0,0 +1,5 @@
#!/bin/bash
echo "Updating calc package..."
# Add update logic here
exit 0

11
repo.json Normal file
View file

@ -0,0 +1,11 @@
{
"packages": {
"calc": {
"name": "calc",
"version": "1.0",
"install": "https://raw.githubusercontent.com/spitkov/ynsrepo/main/packages/calc/install.sh",
"update": "https://raw.githubusercontent.com/spitkov/ynsrepo/main/packages/calc/update.sh",
"remove": "https://raw.githubusercontent.com/spitkov/ynsrepo/main/packages/calc/remove.sh"
}
}
}