commit 7ade3f23120ec794dc4277cbae7e4b11acb538aa Author: Schoki Date: Sat Nov 22 22:32:03 2025 +0100 Initial commit diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b5ae37b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,33 @@ +*.db filter=lfs diff=lfs merge=lfs -text +*.exe filter=lfs diff=lfs merge=lfs -text +*.gif filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text +*.JPG filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.PNG filter=lfs diff=lfs merge=lfs -text +*.pnG filter=lfs diff=lfs merge=lfs -text +*.jpeg filter=lfs diff=lfs merge=lfs -text +*.webp filter=lfs diff=lfs merge=lfs -text +*.psd filter=lfs diff=lfs merge=lfs -text +*.xcf filter=lfs diff=lfs merge=lfs -text +*.pxr filter=lfs diff=lfs merge=lfs -text +*.mp3 filter=lfs diff=lfs merge=lfs -text +*.ogg filter=lfs diff=lfs merge=lfs -text +*.wav filter=lfs diff=lfs merge=lfs -text +*.WAV filter=lfs diff=lfs merge=lfs -text +*.wav123321321 filter=lfs diff=lfs merge=lfs -text +*.sfk filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.otf filter=lfs diff=lfs merge=lfs -text +*.lnk filter=lfs diff=lfs merge=lfs -text +*.pk filter=lfs diff=lfs merge=lfs -text +*.fig filter=lfs diff=lfs merge=lfs -text +*.fds filter=lfs diff=lfs merge=lfs -text +*.pdn filter=lfs diff=lfs merge=lfs -text +*.osk filter=lfs diff=lfs merge=lfs -text +*.osr filter=lfs diff=lfs merge=lfs -text +*.osz filter=lfs diff=lfs merge=lfs -text +*.pack filter=lfs diff=lfs merge=lfs -text +*.mp4 filter=lfs diff=lfs merge=lfs -text diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..6aae617 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,113 @@ +name: Generate Skin previews, OSK files and per skin documentation + +on: + push: + paths: + - '.gitea/workflows/*' + - 'Skins/**/*' + workflow_dispatch: + inputs: + force_rebuild: + description: 'Force rebuild all skins' + required: false + default: 'false' + target_skins: + description: 'Comma-separated list of skin folder names to rebuild (e.g., "Skin1,Skin2")' + required: false + default: '' + +env: + DANSER_DIR: "/app/danser" + DANSER_VIDEO_DIR: "/app/danser/videos" + DANSER_SCREENSHOT_DIR: "/app/danser/screenshots" + SKINS_DIR: "${{ github.workspace }}/Skins" + DANSER_SKINS_DIR: "/app/danser/skins" + DEFAULT_SKIN_DIR: "/app/danser/skins/default-skin" + REPO_SCREENSHOT_DIR: "${{ github.workspace }}/media/gameplay" + REPO_MOD_ICONS_DIR: "${{ github.workspace }}/media/icons" + REPO_RANKING_PANEL_DIR: "${{ github.workspace }}/media/panel" + REPO_THUMBNAIL_DIR: "${{ github.workspace }}/media/thumbnail" + README_PATH: "${{ github.workspace }}/README.md" + GAMEPLAY_REPLAY_PATH: "/app/danser/custom-replays/yomi_yori.osr" + THUMBNAIL_REPLAY_PATH: "/app/danser/custom-replays/combo_colors.osr" + PANEL_REPLAY_PATH: "/app/danser/custom-replays/2000_gekis.osr" + OSK_PATH: "${{ github.workspace }}/export" + IMAGE_NAME: osc/skins-image + REGISTRY_URL: "https://${{ vars.CONTAINER_REGISTRY }}" + OSU_ID: ${{ vars.OSUID }} + DOC_DIR: "${{ github.workspace }}/docs" + +permissions: + contents: write + +jobs: + generate_everything: + name: Full CI/CD Pipeline + runs-on: danser + container: + image: ${{ vars.CONTAINER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest + options: >- + --gpus all + --env NVIDIA_DRIVER_CAPABILITIES=all + --env NVIDIA_VISIBLE_DEVICES=all + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Discover and Detect Skins + id: discover + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/discover-skins@main + with: + force_rebuild: ${{ github.event.inputs.force_rebuild }} + target_skins: ${{ github.event.inputs.target_skins }} + + - name: Pull Git LFS + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/pull-lfs@main + with: + changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }} + + - name: Prepare Assets + id: prepare + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/prepare-assets@main + with: + all_skins: ${{ steps.discover.outputs.all_skins }} + + - name: Create Tag + id: tag + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/create-tag@main + + - name: Generate Previews + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-previews@main + with: + changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }} + + - name: Generate Mod Icons and Convert Images + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-icons@main + with: + changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }} + + - name: Generate OSK + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-osk@main + with: + changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }} + + - name: Generate Documentation + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-docs@main + with: + new_tag: ${{ steps.tag.outputs.new_tag }} + readme_path: ${{ env.README_PATH }} + doc_dir: ${{ env.DOC_DIR }} + user_repository: ${{ steps.prepare.outputs.user_repository }} + + - name: Cleanup Files + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/cleanup@main + with: + all_skins: ${{ steps.discover.outputs.all_skins }} + + - name: Commit and Push + uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/git-commit-push@main + with: + new_tag: ${{ steps.tag.outputs.new_tag }} diff --git a/.gitea/workflows/icons.json b/.gitea/workflows/icons.json new file mode 100644 index 0000000..3ccb702 --- /dev/null +++ b/.gitea/workflows/icons.json @@ -0,0 +1,25 @@ +{ + "group1": [ + "easy", + "nofail", + "halftime" + ], + "group2": [ + "hardrock", + "suddendeath", + "perfect", + "doubletime", + "nightcore", + "hidden", + "flashlight" + ], + "group3": [ + "relax", + "relax2", + "autoplay", + "target", + "spunout", + "cinema", + "scorev2" + ] +} diff --git a/.gitea/workflows/skins.json b/.gitea/workflows/skins.json new file mode 100644 index 0000000..cb28d7b --- /dev/null +++ b/.gitea/workflows/skins.json @@ -0,0 +1,10 @@ +{ + "order": [ + "example1", + "example2" + ], + "descriptions": { + "example1": "Description of example1", + "example2": "Description of example2" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..41df415 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Arlind-dev + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/hardlink-songs-folder.bat b/hardlink-songs-folder.bat new file mode 100644 index 0000000..8e7a671 --- /dev/null +++ b/hardlink-songs-folder.bat @@ -0,0 +1,15 @@ +@echo off +net session >nul 2>&1 +if %errorLevel% neq 0 ( + echo Requesting admin privileges... + powershell -Command "Start-Process cmd -ArgumentList '/c \"%~f0\"' -Verb RunAs" + exit /b +) + +echo Running robocopy sync as Administrator... +echo. + +robocopy "E:\osu!\skins" "D:\git\skins\Skins" /MIR /COPYALL /SEC /B /XJ /DCOPY:T /J + +echo Robocopy sync completed. +pause diff --git a/rsync.sh b/rsync.sh new file mode 100644 index 0000000..e9f6fbf --- /dev/null +++ b/rsync.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +rsync -av --delete /mnt/e/osu\!/Skins/ /home/nixos/git/skins/Skins/ + +find ./Skins/ -type f ! -perm 644 -exec chmod 644 {} + +find ./Skins/ -type d ! -perm 755 -exec chmod 755 {} +