diff --git a/.github/actions/automatic-test/action.yml b/.github/actions/automatic-test/action.yml deleted file mode 100644 index 617f7fdd..00000000 --- a/.github/actions/automatic-test/action.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: 'Automatic Test' -description: 'Check for obvious errors.' - -runs: - using: "composite" - steps: - - name: Install lua - shell: bash - run: | - sudo apt-get install lua5.3 -y - - name: Check all lua files are valid - shell: lua {0} - run: | - local files = assert(io.popen "find . -name '*.lua' -not -path '*/.git/*'") - local errors = 0 - for file in files:lines() do - local f, error = loadfile(file) - if not f then - print(error) - errors = errors + 1 - end - end - files:close() - - if errors > 0 then - print(('%d syntax error(s) found.'):format(errors)) - os.exit(1) - else - print('No syntax error found.') - end - - name: Prepare FontTools - shell: bash - run: | - pip install fonttools - - name: Check all characters are in the font - shell: python - run: | - from fontTools.ttLib import TTFont - from pathlib import Path - - font = TTFont('parts/fonts/proportional.otf') - keys = set(font.getBestCmap().keys()) - - missing = [] - for file in Path('parts/language').glob('*.lua'): - for i, line in enumerate(file.read_text().splitlines()): - for char in line: - if ord(char) not in keys: - missing.append((char, file, i+1)) - - if missing: - print('Missing characters:') - for char, file, i in missing: - print(f"'{char}'({ord(char):x}) in {file} at line {i} " \ - f"(${{ github.server_url }}/${{ github.repository }}/blob/${{ github.sha }}/{file}#L{i})") - exit(1) - else: - print('All characters are present in the font.') - - uses: ./.github/actions/build-love - with: - file-path: Techmino.love - - name: Download love - shell: bash - run: | - curl -L https://github.com/love2d/love/releases/download/11.3/love-11.3-linux-x86_64.tar.gz | tar xz - - name: Prepare PulseAudio - shell: bash - run: | - sudo apt-get update - sudo apt-get install pulseaudio pulseaudio-utils pavucontrol alsa-oss alsa-utils -y - - name: Run automated test - uses: GabrielBB/xvfb-action@v1 - with: - run: | - ./dest/love Techmino.love --test diff --git a/.github/actions/build-android/action.yml b/.github/actions/build-android/action.yml deleted file mode 100644 index 889cdc42..00000000 --- a/.github/actions/build-android/action.yml +++ /dev/null @@ -1,102 +0,0 @@ -name: 'build Android' -description: 'build Android package' -inputs: - type: - required: true - apkCode: - required: true - name: - required: true - file-path: - required: true - SIGNING_KEY: - required: true - KEY_STORE_PASSWORD: - required: true - ALIAS: - required: true - KEY_PASSWORD: - required: true -runs: - using: "composite" - steps: - - uses: actions/setup-java@v2 - with: - distribution: 'adopt' - java-version: '8' - - name: Clone love-android - shell: bash - run: | - git clone --recurse-submodules https://github.com/26F-Studio/love-android -b CI --depth 1 --shallow-submodules - - uses: ./.github/actions/build-love - with: - file-path: love-android/app/src/main/assets/game.love - - name: Download ColdClear arm64-v8a - uses: ./.github/actions/get-cc - with: - arch: android_aarch64 - dir: ColdClear/arm64-v8a - - name: Process ColdClear arm64-v8a - shell: bash - run: | - mkdir -p love-android/app/libs/arm64-v8a - mv ColdClear/arm64-v8a/love-11.3-android/lib/arm64-v8a/libcold_clear.so love-android/app/libs/arm64-v8a - mkdir -p libAndroid/arm64-v8a - mv ColdClear/arm64-v8a/libs/arm64-v8a/libCCloader.so libAndroid/arm64-v8a - - name: Download ColdClear armeabi-v7a - uses: ./.github/actions/get-cc - with: - arch: android_armv7 - dir: ColdClear/armeabi-v7a - - name: Process ColdClear armeabi-v7a - shell: bash - run: | - mkdir -p love-android/app/libs/armeabi-v7a - mv ColdClear/armeabi-v7a/love-11.3-android/lib/armeabi-v7a/libcold_clear.so love-android/app/libs/armeabi-v7a - mkdir -p libAndroid/armeabi-v7a - mv ColdClear/armeabi-v7a/libs/armeabi-v7a/libCCloader.so libAndroid/armeabi-v7a - - name: Pack ColdClear - shell: bash - run: | - 7z a -tzip love-android/app/src/main/assets/game.love libAndroid - - name: update Android information - shell: python - run: | - if '${{ inputs.type }}' == 'Release': - appName = 'Techmino' - packageName = 'org.love2d.MrZ.Techmino' - edition = 'release' - elif '${{ inputs.type }}' == 'Snapshot': - appName = 'Techmino_Snapshot' - packageName = 'org.love2d.MrZ.Techmino.Snapshot' - edition = 'snapshot' - with open('./love-android/app/src/main/AndroidManifest.xml', "r+", encoding='utf-8') as file: - data = file.read() - data = data\ - .replace('@appName', appName)\ - .replace('@edition', edition) - file.seek(0) - file.truncate() - file.write(data) - with open("./love-android/app/build.gradle", "r+", encoding='utf-8') as file: - data = file.read() - data = data\ - .replace('@packageName', packageName)\ - .replace('@versionCode', '${{ inputs.apkCode }}')\ - .replace('@versionName', '${{ inputs.name }}')\ - .replace('@storePassword', '${{ inputs.KEY_STORE_PASSWORD }}')\ - .replace('@keyAlias', '${{ inputs.ALIAS }}')\ - .replace('@keyPassword', '${{ inputs.KEY_PASSWORD }}') - file.seek(0) - file.truncate() - file.write(data) - - name: Build Techmino - shell: bash - run: | - echo "${{ inputs.SIGNING_KEY }}" | base64 -d > love-android/app/android.keystore - chmod 777 love-android/gradlew - cd love-android/ - ./gradlew assembleRelease - - name: rename apk - shell: bash - run: mv love-android/app/build/outputs/apk/release/app-release.apk ${{ inputs.file-path }} diff --git a/.github/actions/build-ios/action.yml b/.github/actions/build-ios/action.yml deleted file mode 100644 index fa1ddced..00000000 --- a/.github/actions/build-ios/action.yml +++ /dev/null @@ -1,96 +0,0 @@ -name: 'build iOS' -description: 'build iOS package' -inputs: - name: - required: true - description: "Version name" - type: - required: true - description: "Build type" - APPLE_API_ID: - required: true - description: "API key ID" - APPLE_API_ISSUER: - required: true - description: "API issuer ID" - APPLE_API_KEY: - required: true - description: "API key content" - APPLE_APP_BUILD: - required: true - description: "Build number" - APPLE_APP_CHANGELOG: - required: true - description: "Changelog" - APPLE_APP_ID: - required: true - description: "AppStore Apple ID" - APPLE_APP_IDENTIFIER: - required: true - description: "Bundle ID" - APPLE_APP_PROFILE: - required: true - description: "Provisioning Profile specifer" - APPLE_KEYCHAIN_NAME: - required: true - description: "Temporary keychain name" - APPLE_KEYCHAIN_PWD: - required: true - description: "Temporary keychain password" - FASTLANE_DISCORD_WEBHOOK: - required: true - description: "Fastlane Discord webhook" - FASTLANE_ACTION_ID: - required: true - description: "Fastlane Action ID" - FASTLANE_MATCH_PWD: - required: true - description: "Fastlane Match description password" - FASTLANE_MATCH_TOKEN: - required: true - description: "Fastlane Match Github token" -runs: - using: "composite" - steps: - - uses: ./.github/actions/build-love - - name: Checkout source codes - uses: actions/checkout@v2 - with: - repository: '26F-Studio/Techmino-iOS' - path: 'Techmino-iOS' - - name: Download CCloader - uses: ./.github/actions/get-cc - with: - arch: iOS - - name: Update source codes - shell: bash - run: | - mv Techmino.love Techmino-iOS/platform/xcode - mv libcold_clear.a Techmino-iOS/platform/xcode - mv libCCloader.a Techmino-iOS/platform/xcode - - name: Run fastlane - uses: maierj/fastlane-action@v2.0.1 - with: - lane: '${{ inputs.type }}' - subdirectory: 'Techmino-iOS/platform/xcode' - env: - ACTION_ID: '${{ inputs.FASTLANE_ACTION_ID }}' - API_ID: '${{ inputs.APPLE_API_ID }}' - API_ISSUER: '${{ inputs.APPLE_API_ISSUER }}' - API_KEY: '${{ inputs.APPLE_API_KEY }}' - APP_BUILD: '${{ inputs.APPLE_APP_BUILD }}' - APP_CHANGELOG: '${{ inputs.APPLE_APP_CHANGELOG }}' - APP_ID: '${{ inputs.APPLE_APP_ID }}' - APP_IDENTIFIER: '${{ inputs.APPLE_APP_IDENTIFIER }}' - APP_PROFILE: '${{ inputs.APPLE_APP_PROFILE }}' - APP_VERSION: '${{ inputs.name }}' - DISCORD_WEBHOOK: '${{ inputs.FASTLANE_DISCORD_WEBHOOK }}' - KEYCHAIN_NAME: '${{ inputs.APPLE_KEYCHAIN_NAME }}' - KEYCHAIN_PWD: '${{ inputs.APPLE_KEYCHAIN_PWD }}' - MATCH_PASSWORD: '${{ inputs.FASTLANE_MATCH_PWD }}' - MATCH_TOKEN: '${{ inputs.FASTLANE_MATCH_TOKEN }}' - - name: Move ipa - shell: bash - run: | - mv Techmino-iOS/platform/xcode/Techmino.ipa Techmino.ipa - \ No newline at end of file diff --git a/.github/actions/build-linux/action.yml b/.github/actions/build-linux/action.yml deleted file mode 100644 index 66090a86..00000000 --- a/.github/actions/build-linux/action.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: 'build Linux' -description: 'build Linux package' -inputs: - file-path: - required: false - default: Techmino.AppImage - icon: - required: true -runs: - using: "composite" - steps: - - name: Download AppImageKit - shell: bash - run: | - curl -OL https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage - - name: Download love - shell: bash - run: | - curl -OL https://github.com/love2d/love/releases/download/11.3/love-11.3-x86_64.AppImage - chmod 777 love-11.3-x86_64.AppImage - ./love-11.3-x86_64.AppImage --appimage-extract - - name: Download ColdClear - uses: ./.github/actions/get-cc - with: - arch: linux - - name: Pack Techmino - shell: bash - run: | - rm -rf squashfs-root/love squashfs-root/love.desktop squashfs-root/love.svg squashfs-root/.DirIcon - mv .github/build/Linux/love.template squashfs-root/love - mv .github/build/Linux/Techmino.desktop.template squashfs-root/Techmino.desktop - mv ${{ inputs.icon }} squashfs-root/icon.png - cp squashfs-root/icon.png squashfs-root/.DirIcon - chmod 777 squashfs-root/love - mkdir -p squashfs-root/usr/share/Techmino - mv media parts Zframework conf.lua main.lua version.lua legals.md license.txt squashfs-root/usr/share/Techmino - mv CCloader.so squashfs-root/usr/share/Techmino - mv libcold_clear.so squashfs-root/usr/lib - chmod 777 appimagetool-x86_64.AppImage - ./appimagetool-x86_64.AppImage squashfs-root ${{ inputs.file-path }} diff --git a/.github/actions/build-love/action.yml b/.github/actions/build-love/action.yml deleted file mode 100644 index 623dbc7a..00000000 --- a/.github/actions/build-love/action.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: 'build love' -description: 'build love file' -inputs: - file-path: - required: true - default: Techmino.love -runs: - using: "composite" - steps: - - run: 7z a -tzip ${{ inputs.file-path }} media parts Zframework conf.lua main.lua version.lua legals.md license.txt - shell: bash diff --git a/.github/actions/build-macos/action.yml b/.github/actions/build-macos/action.yml deleted file mode 100644 index dcf1ed8c..00000000 --- a/.github/actions/build-macos/action.yml +++ /dev/null @@ -1,152 +0,0 @@ -name: 'build Mac OS' -description: 'build Mac OS package' -inputs: - name: - required: true - description: "Version name" - icon: - required: true - description: "App icons (.icns)" - APPLE_API_ID: - required: true - description: "API key ID" - APPLE_API_ISSUER: - required: true - description: "API issuer ID" - APPLE_API_KEY: - required: true - description: "API key content" - APPLE_APP_IDENTIFIER: - required: true - description: "Bundle ID" - APPLE_KEYCHAIN_NAME: - required: true - description: "Temporary keychain name" - APPLE_KEYCHAIN_PWD: - required: true - description: "Temporary keychain password" - FASTLANE_MATCH_PWD: - required: true - description: "Fastlane Match description password" - FASTLANE_MATCH_TOKEN: - required: true - description: "Fastlane Match Github token" -runs: - using: "composite" - steps: - - uses: ./.github/actions/build-love - - name: Checkout template - uses: actions/checkout@v2 - with: - repository: '26F-Studio/Techmino-macOS' - path: 'Techmino-macOS' - - name: Download ColdClear - uses: ./.github/actions/get-cc - with: - arch: macOS - - name: Fastlane match - uses: maierj/fastlane-action@v2.0.1 - with: - lane: 'get_cert' - subdirectory: 'Techmino-macOS' - env: - API_ID: '${{ inputs.APPLE_API_ID }}' - API_ISSUER: '${{ inputs.APPLE_API_ISSUER }}' - API_KEY: '${{ inputs.APPLE_API_KEY }}' - APP_IDENTIFIER: '${{ inputs.APPLE_APP_IDENTIFIER }}' - KEYCHAIN_NAME: '${{ inputs.APPLE_KEYCHAIN_NAME }}' - KEYCHAIN_PWD: '${{ inputs.APPLE_KEYCHAIN_PWD }}' - MATCH_PASSWORD: '${{ inputs.FASTLANE_MATCH_PWD }}' - MATCH_TOKEN: '${{ inputs.FASTLANE_MATCH_TOKEN }}' - - name: Modify template - shell: python - run: | - import datetime - from io import open - thisYear = str(datetime.datetime.today().year) - with open('./.github/build/macOS/info.plist.template', 'r', encoding='utf-8') as file: - data = file.read() - data = data\ - .replace('@versionName', '${{ inputs.name }}'[1:])\ - .replace('@thisYear', thisYear)\ - .replace('@bundleId', '${{ inputs.APPLE_APP_IDENTIFIER }}') - with open('./Techmino-macOS/Techmino.app/Contents/info.plist', 'w+', encoding='utf-8') as file: - file.write(data) - - name: Pack - shell: bash - run: | - mv Techmino.love Techmino-macOS/Techmino.app/Contents/Resources - mv CCloader.dylib Techmino-macOS/Techmino.app/Contents/Frameworks - mv ${{ inputs.icon }} Techmino-macOS/Techmino.app/Contents/Resources/iconfile.icns - - chmod +x Techmino-macOS/Techmino.app/Contents/Frameworks/CCloader.dylib - chmod +x Techmino-macOS/Techmino.app/Contents/MacOS/love - - name: Codesign executable - shell: bash - run: | - security unlock-keychain -p ${{ inputs.TEMP_KEYCHAIN_PASSWORD }} \ - ~/Library/Keychains/${{ inputs.TEMP_KEYCHAIN_USER }}-db - - [[ $(security find-identity) =~ ([0-9A-F]{40}) ]] - - codesign --timestamp --force --strict --deep -v \ - --options runtime \ - -s ${BASH_REMATCH[1]} \ - --entitlements Techmino-macOS/love.entitlements \ - Techmino-macOS/Techmino.app - - name: Fastlane notarize - uses: maierj/fastlane-action@v2.0.1 - with: - lane: 'make_safe' - subdirectory: 'Techmino-macOS' - env: - API_ID: '${{ inputs.APPLE_API_ID }}' - API_ISSUER: '${{ inputs.APPLE_API_ISSUER }}' - API_KEY: '${{ inputs.APPLE_API_KEY }}' - APP_IDENTIFIER: '${{ inputs.APPLE_APP_IDENTIFIER }}' - NOTARIZE_OBJECT: 'Techmino.app' - - name: Create DMG file - shell: bash - run: | - brew install create-dmg - create-dmg \ - --volname "Techmino for MacOS" \ - --volicon "./.github/build/macOS/Techminodisk.icns" \ - --window-pos 200 120 \ - --window-size 800 500 \ - --icon-size 100 \ - --icon "Techmino.app" 239 203 \ - --background ".github/build/macOS/backgroundImage.tiff" \ - --hide-extension "Techmino.app" \ - --app-drop-link 565 203 \ - "Techmino-macOS/Techmino-macOS.dmg" \ - "Techmino-macOS/Techmino.app/" - - name: Codesign DMG - shell: bash - run: | - security unlock-keychain -p ${{ inputs.TEMP_KEYCHAIN_PASSWORD }} \ - ~/Library/Keychains/${{ inputs.TEMP_KEYCHAIN_USER }}-db - - [[ $(security find-identity) =~ ([0-9A-F]{40}) ]] - - codesign --timestamp --force --strict --deep -v \ - --options runtime \ - -s ${BASH_REMATCH[1]} \ - --entitlements Techmino-macOS/love.entitlements \ - Techmino-macOS/Techmino-macOS.dmg - - name: Fastlane notarize - uses: maierj/fastlane-action@v2.0.1 - with: - lane: 'make_safe' - subdirectory: 'Techmino-macOS' - env: - API_ID: '${{ inputs.APPLE_API_ID }}' - API_ISSUER: '${{ inputs.APPLE_API_ISSUER }}' - API_KEY: '${{ inputs.APPLE_API_KEY }}' - APP_IDENTIFIER: '${{ inputs.APPLE_APP_IDENTIFIER }}' - NOTARIZE_OBJECT: 'Techmino-macOS.dmg' - - name: Finalize - shell: bash - run: | - mv Techmino-macOS/Techmino-macOS.dmg Techmino.dmg - spctl -a -t open --context context:primary-signature -vv Techmino.dmg diff --git a/.github/actions/build-windows/action.yml b/.github/actions/build-windows/action.yml deleted file mode 100644 index 546d3a94..00000000 --- a/.github/actions/build-windows/action.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: 'build Windows' -description: 'build Windows package' -inputs: - love-url: - required: true - love-dir: - required: true - arch: - required: true - version: - required: true - icon: - required: true -runs: - using: "composite" - steps: - - name: Download love - uses: ./.github/actions/get-unzip - with: - url: ${{ inputs.love-url }} - - name: move love - shell: bash - run: mv ${{ inputs.love-dir }} love - - name: Download ColdClear - uses: ./.github/actions/get-cc - with: - arch: ${{ inputs.arch }} - - name: Download ResourceHacker - uses: ./.github/actions/get-unzip - with: - url: http://www.angusj.com/resourcehacker/resource_hacker.zip - - uses: ./.github/actions/build-love - - name: update Windows template - shell: python - run: | - Version = '${{ inputs.version }}'.replace('V', '') - FileVersion = (f"{Version.replace('.', ',')},0") - with open('./.github/build/Windows/Techmino.rc.template', 'r', encoding='utf8') as file: - data = file.read() - data = data\ - .replace('@FileVersion', FileVersion)\ - .replace('@Version', Version) - with open('Techmino.rc', 'w+', encoding='utf8') as file: - file.write(data) - - name: Pack Techmino - shell: pwsh - run: | - cmd /c copy /b .\love\love.exe + .\Techmino.love .\love\Techmino.exe - del .\love\love.exe - del .\love\lovec.exe - del .\love\game.ico - del .\love\love.ico - del .\love\changes.txt - del .\love\readme.txt - move .\cold_clear.dll .\love - move .\CCloader.dll .\love - cmd /c '.\ResourceHacker.exe -open .\love\Techmino.exe -save .\love\Techmino.exe -action delete -mask ICONGROUP,,' - cmd /c '.\ResourceHacker.exe -open .\Techmino.rc -save .\Techmino.res -action compile' - cmd /c '.\ResourceHacker.exe -open .\love\Techmino.exe -save .\love\Techmino.exe -action addoverwrite -res "${{ inputs.icon }}" -mask ICONGROUP,1,' - cmd /c '.\ResourceHacker.exe -open .\love\Techmino.exe -save .\love\Techmino.exe -action addoverwrite -res ".\Techmino.res" -mask VERSIONINFO,1,' diff --git a/.github/actions/get-cc/action.yml b/.github/actions/get-cc/action.yml index 3d5e0bb9..caf789e3 100644 --- a/.github/actions/get-cc/action.yml +++ b/.github/actions/get-cc/action.yml @@ -3,8 +3,8 @@ description: 'download cc into specific dir' inputs: tag: required: false - default: techmino-alize-2 - arch: + default: "11.4" + platform: required: true dir: required: false @@ -27,6 +27,6 @@ runs: shell: bash - uses: ./.github/actions/get-unzip with: - url: https://github.com/${{ inputs.repo }}/releases/download/${{ steps.get-tag.outputs.tag }}/${{ inputs.arch }}.zip + url: https://github.com/${{ inputs.repo }}/releases/download/${{ steps.get-tag.outputs.tag }}/${{ inputs.platform }}.zip dir: ${{ inputs.dir }} temp-file: ${{ inputs.temp-file }} diff --git a/.github/build/Linux/love.template b/.github/build/Linux/love.template deleted file mode 100644 index 37022827..00000000 --- a/.github/build/Linux/love.template +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -export LOVE_LAUNCHER_LOCATION="$(dirname "$(which "$0")")" -export LD_LIBRARY_PATH="${LOVE_LAUNCHER_LOCATION}/lib/x86_64-linux-gnu:${LOVE_LAUNCHER_LOCATION}/usr/bin:${LOVE_LAUNCHER_LOCATION}/usr/lib:${LOVE_LAUNCHER_LOCATION}/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" -/sbin/ldconfig -p | grep -q libstdc++ || export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LOVE_LAUNCHER_LOCATION}/libstdc++/" -exec ${LOVE_BIN_WRAPPER} "${LOVE_LAUNCHER_LOCATION}/usr/bin/love" "${LOVE_LAUNCHER_LOCATION}/usr/share/Techmino" diff --git a/.github/build/Windows/.gitattributes b/.github/build/Windows/.gitattributes deleted file mode 100644 index d773a295..00000000 --- a/.github/build/Windows/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.template text eol=crlf diff --git a/.github/build/Windows/icon.png b/.github/build/Windows/icon.png deleted file mode 100644 index 7a92a48a..00000000 Binary files a/.github/build/Windows/icon.png and /dev/null differ diff --git a/.github/build/android/dev/res/icon-playstore.png b/.github/build/android/dev/res/icon-playstore.png new file mode 100644 index 00000000..db9d0922 Binary files /dev/null and b/.github/build/android/dev/res/icon-playstore.png differ diff --git a/.github/build/android/dev/res/mipmap-anydpi-v26/icon.xml b/.github/build/android/dev/res/mipmap-anydpi-v26/icon.xml new file mode 100644 index 00000000..1ed40370 --- /dev/null +++ b/.github/build/android/dev/res/mipmap-anydpi-v26/icon.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.github/build/android/dev/res/mipmap-anydpi-v26/icon_round.xml b/.github/build/android/dev/res/mipmap-anydpi-v26/icon_round.xml new file mode 100644 index 00000000..1ed40370 --- /dev/null +++ b/.github/build/android/dev/res/mipmap-anydpi-v26/icon_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.github/build/android/dev/res/mipmap-hdpi/icon.png b/.github/build/android/dev/res/mipmap-hdpi/icon.png new file mode 100644 index 00000000..f355645b Binary files /dev/null and b/.github/build/android/dev/res/mipmap-hdpi/icon.png differ diff --git a/.github/build/android/dev/res/mipmap-hdpi/icon_background.png b/.github/build/android/dev/res/mipmap-hdpi/icon_background.png new file mode 100644 index 00000000..0a212c9c Binary files /dev/null and b/.github/build/android/dev/res/mipmap-hdpi/icon_background.png differ diff --git a/.github/build/android/dev/res/mipmap-hdpi/icon_foreground.png b/.github/build/android/dev/res/mipmap-hdpi/icon_foreground.png new file mode 100644 index 00000000..e09b9a4e Binary files /dev/null and b/.github/build/android/dev/res/mipmap-hdpi/icon_foreground.png differ diff --git a/.github/build/android/dev/res/mipmap-hdpi/icon_round.png b/.github/build/android/dev/res/mipmap-hdpi/icon_round.png new file mode 100644 index 00000000..f70ee81e Binary files /dev/null and b/.github/build/android/dev/res/mipmap-hdpi/icon_round.png differ diff --git a/.github/build/android/dev/res/mipmap-mdpi/icon.png b/.github/build/android/dev/res/mipmap-mdpi/icon.png new file mode 100644 index 00000000..6021f04a Binary files /dev/null and b/.github/build/android/dev/res/mipmap-mdpi/icon.png differ diff --git a/.github/build/android/dev/res/mipmap-mdpi/icon_background.png b/.github/build/android/dev/res/mipmap-mdpi/icon_background.png new file mode 100644 index 00000000..a961ca12 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-mdpi/icon_background.png differ diff --git a/.github/build/android/dev/res/mipmap-mdpi/icon_foreground.png b/.github/build/android/dev/res/mipmap-mdpi/icon_foreground.png new file mode 100644 index 00000000..b4806555 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-mdpi/icon_foreground.png differ diff --git a/.github/build/android/dev/res/mipmap-mdpi/icon_round.png b/.github/build/android/dev/res/mipmap-mdpi/icon_round.png new file mode 100644 index 00000000..5b80f445 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-mdpi/icon_round.png differ diff --git a/.github/build/android/dev/res/mipmap-xhdpi/icon.png b/.github/build/android/dev/res/mipmap-xhdpi/icon.png new file mode 100644 index 00000000..aaad54e6 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xhdpi/icon.png differ diff --git a/.github/build/android/dev/res/mipmap-xhdpi/icon_background.png b/.github/build/android/dev/res/mipmap-xhdpi/icon_background.png new file mode 100644 index 00000000..f644dec4 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xhdpi/icon_background.png differ diff --git a/.github/build/android/dev/res/mipmap-xhdpi/icon_foreground.png b/.github/build/android/dev/res/mipmap-xhdpi/icon_foreground.png new file mode 100644 index 00000000..a0a86e8f Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xhdpi/icon_foreground.png differ diff --git a/.github/build/android/dev/res/mipmap-xhdpi/icon_round.png b/.github/build/android/dev/res/mipmap-xhdpi/icon_round.png new file mode 100644 index 00000000..758807bc Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xhdpi/icon_round.png differ diff --git a/.github/build/android/dev/res/mipmap-xxhdpi/icon.png b/.github/build/android/dev/res/mipmap-xxhdpi/icon.png new file mode 100644 index 00000000..50b2e0a8 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xxhdpi/icon.png differ diff --git a/.github/build/android/dev/res/mipmap-xxhdpi/icon_background.png b/.github/build/android/dev/res/mipmap-xxhdpi/icon_background.png new file mode 100644 index 00000000..5937963d Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xxhdpi/icon_background.png differ diff --git a/.github/build/android/dev/res/mipmap-xxhdpi/icon_foreground.png b/.github/build/android/dev/res/mipmap-xxhdpi/icon_foreground.png new file mode 100644 index 00000000..89629566 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xxhdpi/icon_foreground.png differ diff --git a/.github/build/android/dev/res/mipmap-xxhdpi/icon_round.png b/.github/build/android/dev/res/mipmap-xxhdpi/icon_round.png new file mode 100644 index 00000000..7e0f8100 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xxhdpi/icon_round.png differ diff --git a/.github/build/android/dev/res/mipmap-xxxhdpi/icon.png b/.github/build/android/dev/res/mipmap-xxxhdpi/icon.png new file mode 100644 index 00000000..ad14c459 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xxxhdpi/icon.png differ diff --git a/.github/build/android/dev/res/mipmap-xxxhdpi/icon_background.png b/.github/build/android/dev/res/mipmap-xxxhdpi/icon_background.png new file mode 100644 index 00000000..c9674ee2 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xxxhdpi/icon_background.png differ diff --git a/.github/build/android/dev/res/mipmap-xxxhdpi/icon_foreground.png b/.github/build/android/dev/res/mipmap-xxxhdpi/icon_foreground.png new file mode 100644 index 00000000..f67b32c6 Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xxxhdpi/icon_foreground.png differ diff --git a/.github/build/android/dev/res/mipmap-xxxhdpi/icon_round.png b/.github/build/android/dev/res/mipmap-xxxhdpi/icon_round.png new file mode 100644 index 00000000..d280f49e Binary files /dev/null and b/.github/build/android/dev/res/mipmap-xxxhdpi/icon_round.png differ diff --git a/.github/build/android/release/res/icon-playstore.png b/.github/build/android/release/res/icon-playstore.png new file mode 100644 index 00000000..8c7eb670 Binary files /dev/null and b/.github/build/android/release/res/icon-playstore.png differ diff --git a/.github/build/android/release/res/mipmap-anydpi-v26/icon.xml b/.github/build/android/release/res/mipmap-anydpi-v26/icon.xml new file mode 100644 index 00000000..1ed40370 --- /dev/null +++ b/.github/build/android/release/res/mipmap-anydpi-v26/icon.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.github/build/android/release/res/mipmap-anydpi-v26/icon_round.xml b/.github/build/android/release/res/mipmap-anydpi-v26/icon_round.xml new file mode 100644 index 00000000..1ed40370 --- /dev/null +++ b/.github/build/android/release/res/mipmap-anydpi-v26/icon_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.github/build/android/release/res/mipmap-hdpi/icon.png b/.github/build/android/release/res/mipmap-hdpi/icon.png new file mode 100644 index 00000000..47002e9c Binary files /dev/null and b/.github/build/android/release/res/mipmap-hdpi/icon.png differ diff --git a/.github/build/android/release/res/mipmap-hdpi/icon_background.png b/.github/build/android/release/res/mipmap-hdpi/icon_background.png new file mode 100644 index 00000000..6f05b8ad Binary files /dev/null and b/.github/build/android/release/res/mipmap-hdpi/icon_background.png differ diff --git a/.github/build/android/release/res/mipmap-hdpi/icon_foreground.png b/.github/build/android/release/res/mipmap-hdpi/icon_foreground.png new file mode 100644 index 00000000..2ae7cd22 Binary files /dev/null and b/.github/build/android/release/res/mipmap-hdpi/icon_foreground.png differ diff --git a/.github/build/android/release/res/mipmap-hdpi/icon_round.png b/.github/build/android/release/res/mipmap-hdpi/icon_round.png new file mode 100644 index 00000000..a74a1029 Binary files /dev/null and b/.github/build/android/release/res/mipmap-hdpi/icon_round.png differ diff --git a/.github/build/android/release/res/mipmap-mdpi/icon.png b/.github/build/android/release/res/mipmap-mdpi/icon.png new file mode 100644 index 00000000..e2803d9f Binary files /dev/null and b/.github/build/android/release/res/mipmap-mdpi/icon.png differ diff --git a/.github/build/android/release/res/mipmap-mdpi/icon_background.png b/.github/build/android/release/res/mipmap-mdpi/icon_background.png new file mode 100644 index 00000000..08b119c9 Binary files /dev/null and b/.github/build/android/release/res/mipmap-mdpi/icon_background.png differ diff --git a/.github/build/android/release/res/mipmap-mdpi/icon_foreground.png b/.github/build/android/release/res/mipmap-mdpi/icon_foreground.png new file mode 100644 index 00000000..e0b0176a Binary files /dev/null and b/.github/build/android/release/res/mipmap-mdpi/icon_foreground.png differ diff --git a/.github/build/android/release/res/mipmap-mdpi/icon_round.png b/.github/build/android/release/res/mipmap-mdpi/icon_round.png new file mode 100644 index 00000000..2d145b85 Binary files /dev/null and b/.github/build/android/release/res/mipmap-mdpi/icon_round.png differ diff --git a/.github/build/android/release/res/mipmap-xhdpi/icon.png b/.github/build/android/release/res/mipmap-xhdpi/icon.png new file mode 100644 index 00000000..c56d513a Binary files /dev/null and b/.github/build/android/release/res/mipmap-xhdpi/icon.png differ diff --git a/.github/build/android/release/res/mipmap-xhdpi/icon_background.png b/.github/build/android/release/res/mipmap-xhdpi/icon_background.png new file mode 100644 index 00000000..39f0f544 Binary files /dev/null and b/.github/build/android/release/res/mipmap-xhdpi/icon_background.png differ diff --git a/.github/build/android/release/res/mipmap-xhdpi/icon_foreground.png b/.github/build/android/release/res/mipmap-xhdpi/icon_foreground.png new file mode 100644 index 00000000..ef0dcd6b Binary files /dev/null and b/.github/build/android/release/res/mipmap-xhdpi/icon_foreground.png differ diff --git a/.github/build/android/release/res/mipmap-xhdpi/icon_round.png b/.github/build/android/release/res/mipmap-xhdpi/icon_round.png new file mode 100644 index 00000000..dd43ba71 Binary files /dev/null and b/.github/build/android/release/res/mipmap-xhdpi/icon_round.png differ diff --git a/.github/build/android/release/res/mipmap-xxhdpi/icon.png b/.github/build/android/release/res/mipmap-xxhdpi/icon.png new file mode 100644 index 00000000..6a0d6787 Binary files /dev/null and b/.github/build/android/release/res/mipmap-xxhdpi/icon.png differ diff --git a/.github/build/android/release/res/mipmap-xxhdpi/icon_background.png b/.github/build/android/release/res/mipmap-xxhdpi/icon_background.png new file mode 100644 index 00000000..663c585a Binary files /dev/null and b/.github/build/android/release/res/mipmap-xxhdpi/icon_background.png differ diff --git a/.github/build/android/release/res/mipmap-xxhdpi/icon_foreground.png b/.github/build/android/release/res/mipmap-xxhdpi/icon_foreground.png new file mode 100644 index 00000000..7b6a2c08 Binary files /dev/null and b/.github/build/android/release/res/mipmap-xxhdpi/icon_foreground.png differ diff --git a/.github/build/android/release/res/mipmap-xxhdpi/icon_round.png b/.github/build/android/release/res/mipmap-xxhdpi/icon_round.png new file mode 100644 index 00000000..482bd717 Binary files /dev/null and b/.github/build/android/release/res/mipmap-xxhdpi/icon_round.png differ diff --git a/.github/build/android/release/res/mipmap-xxxhdpi/icon.png b/.github/build/android/release/res/mipmap-xxxhdpi/icon.png new file mode 100644 index 00000000..3deefaa4 Binary files /dev/null and b/.github/build/android/release/res/mipmap-xxxhdpi/icon.png differ diff --git a/.github/build/android/release/res/mipmap-xxxhdpi/icon_background.png b/.github/build/android/release/res/mipmap-xxxhdpi/icon_background.png new file mode 100644 index 00000000..2ae710fa Binary files /dev/null and b/.github/build/android/release/res/mipmap-xxxhdpi/icon_background.png differ diff --git a/.github/build/android/release/res/mipmap-xxxhdpi/icon_foreground.png b/.github/build/android/release/res/mipmap-xxxhdpi/icon_foreground.png new file mode 100644 index 00000000..4257fcf7 Binary files /dev/null and b/.github/build/android/release/res/mipmap-xxxhdpi/icon_foreground.png differ diff --git a/.github/build/android/release/res/mipmap-xxxhdpi/icon_round.png b/.github/build/android/release/res/mipmap-xxxhdpi/icon_round.png new file mode 100644 index 00000000..671afb0e Binary files /dev/null and b/.github/build/android/release/res/mipmap-xxxhdpi/icon_round.png differ diff --git a/.github/build/iOS/dev/icon/icon_1024x1024.png b/.github/build/iOS/dev/icon/icon_1024x1024.png new file mode 100644 index 00000000..8712fe61 Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_1024x1024.png differ diff --git a/.github/build/iOS/dev/icon/icon_20x20.png b/.github/build/iOS/dev/icon/icon_20x20.png new file mode 100644 index 00000000..19a62fd8 Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_20x20.png differ diff --git a/.github/build/iOS/dev/icon/icon_20x20@2x.png b/.github/build/iOS/dev/icon/icon_20x20@2x.png new file mode 100644 index 00000000..bd20a69a Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_20x20@2x.png differ diff --git a/.github/build/iOS/dev/icon/icon_20x20@3x.png b/.github/build/iOS/dev/icon/icon_20x20@3x.png new file mode 100644 index 00000000..d9d83def Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_20x20@3x.png differ diff --git a/.github/build/iOS/dev/icon/icon_29x29.png b/.github/build/iOS/dev/icon/icon_29x29.png new file mode 100644 index 00000000..10132af0 Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_29x29.png differ diff --git a/.github/build/iOS/dev/icon/icon_29x29@2x.png b/.github/build/iOS/dev/icon/icon_29x29@2x.png new file mode 100644 index 00000000..2876828c Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_29x29@2x.png differ diff --git a/.github/build/iOS/dev/icon/icon_29x29@3x.png b/.github/build/iOS/dev/icon/icon_29x29@3x.png new file mode 100644 index 00000000..03677d99 Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_29x29@3x.png differ diff --git a/.github/build/iOS/dev/icon/icon_40x40.png b/.github/build/iOS/dev/icon/icon_40x40.png new file mode 100644 index 00000000..bd20a69a Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_40x40.png differ diff --git a/.github/build/iOS/dev/icon/icon_40x40@2x.png b/.github/build/iOS/dev/icon/icon_40x40@2x.png new file mode 100644 index 00000000..b8a9728f Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_40x40@2x.png differ diff --git a/.github/build/iOS/dev/icon/icon_40x40@3x.png b/.github/build/iOS/dev/icon/icon_40x40@3x.png new file mode 100644 index 00000000..7147ed2a Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_40x40@3x.png differ diff --git a/.github/build/iOS/dev/icon/icon_60x60@2x.png b/.github/build/iOS/dev/icon/icon_60x60@2x.png new file mode 100644 index 00000000..7147ed2a Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_60x60@2x.png differ diff --git a/.github/build/iOS/dev/icon/icon_60x60@3x.png b/.github/build/iOS/dev/icon/icon_60x60@3x.png new file mode 100644 index 00000000..7ab3e05f Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_60x60@3x.png differ diff --git a/.github/build/iOS/dev/icon/icon_76x76.png b/.github/build/iOS/dev/icon/icon_76x76.png new file mode 100644 index 00000000..924b176e Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_76x76.png differ diff --git a/.github/build/iOS/dev/icon/icon_76x76@2x.png b/.github/build/iOS/dev/icon/icon_76x76@2x.png new file mode 100644 index 00000000..c172865d Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_76x76@2x.png differ diff --git a/.github/build/iOS/dev/icon/icon_83.5x83.5@2x.png b/.github/build/iOS/dev/icon/icon_83.5x83.5@2x.png new file mode 100644 index 00000000..9b7572ca Binary files /dev/null and b/.github/build/iOS/dev/icon/icon_83.5x83.5@2x.png differ diff --git a/.github/build/iOS/love.patch b/.github/build/iOS/love.patch new file mode 100644 index 00000000..bbeec4d2 --- /dev/null +++ b/.github/build/iOS/love.patch @@ -0,0 +1,106 @@ +diff --git a/src/common/ios.h b/src/common/ios.h +index c1932555..552e432e 100644 +--- a/src/common/ios.h ++++ b/src/common/ios.h +@@ -66,7 +66,7 @@ std::string getExecutablePath(); + /** + * Causes devices with vibration support to vibrate for about 0.5 seconds. + **/ +-void vibrate(); ++void vibrate(const double seconds); + + /** + * Enable mix mode (e.g. with background music apps) and playback with a muted device. +diff --git a/src/common/ios.mm b/src/common/ios.mm +index 7730991e..4ba8e708 100644 +--- a/src/common/ios.mm ++++ b/src/common/ios.mm +@@ -36,6 +36,8 @@ + #include + #include + ++#include ++ + static NSArray *getLovesInDocuments(); + static bool deleteFileInDocuments(NSString *filename); + +@@ -391,10 +393,40 @@ std::string getExecutablePath() + } + } + +-void vibrate() ++void vibrate(const double seconds) + { + @autoreleasepool + { ++ struct utsname systemInfo; ++ uname(&systemInfo); ++ NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; ++ NSRange iPhoneRange = [deviceString rangeOfString:@"iPhone"]; ++ if (iPhoneRange.length == 6) { ++ NSRange commaRange = [deviceString rangeOfString:@","]; ++ NSString *iPhone = [deviceString substringWithRange:iPhoneRange]; ++ NSRange numRange = NSMakeRange(iPhoneRange.location + iPhoneRange.length, commaRange.location - iPhoneRange.location - iPhoneRange.length); ++ NSString *num = [deviceString substringWithRange:numRange]; ++ ++ if ([num intValue] >= 9) { ++ // iPhone 7 and above, see: https://gist.github.com/adamawolf/3048717#file-apple_mobile_device_types-txt-L22 ++ ++ if (@available(iOS 10.0, *)) { ++ // iOS 10.0 and above ++ UIImpactFeedbackGenerator *impact = nil; ++ if (seconds >= 0.5 && seconds < 1.5) { ++ impact = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleLight]; // 轻 ++ } else if (seconds >= 1.5 && seconds < 2.5) { ++ impact = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleMedium]; // 中 ++ } else if (seconds >= 2.5) { ++ impact = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleHeavy]; // 重 ++ } else { ++ return; ++ } ++ [impact impactOccurred]; ++ return; ++ } ++ } ++ } + AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); + } + } +diff --git a/src/love.cpp b/src/love.cpp +index c8af8596..ae7a5e32 100644 +--- a/src/love.cpp ++++ b/src/love.cpp +@@ -140,6 +140,10 @@ enum DoneAction + DONE_RESTART, + }; + ++extern "C" { ++ int luaopen_CCloader(lua_State *L); ++} ++ + static DoneAction runlove(int argc, char **argv, int &retval) + { + // Oh, you just want the version? Okay! +@@ -158,6 +162,9 @@ static DoneAction runlove(int argc, char **argv, int &retval) + lua_State *L = luaL_newstate(); + luaL_openlibs(L); + ++ // Init CCloader ++ luaopen_CCloader(L); ++ + // LuaJIT-specific setup needs to be done as early as possible - before + // get_app_arguments because that loads external library code. This is also + // loaded inside require("love"). Note that it doesn't use the love table. +diff --git a/src/modules/system/System.cpp b/src/modules/system/System.cpp +index e1de16d5..e0f03557 100644 +--- a/src/modules/system/System.cpp ++++ b/src/modules/system/System.cpp +@@ -174,7 +174,7 @@ void System::vibrate(double seconds) const + #ifdef LOVE_ANDROID + love::android::vibrate(seconds); + #elif defined(LOVE_IOS) +- love::ios::vibrate(); ++ love::ios::vibrate(seconds); + #else + LOVE_UNUSED(seconds); + #endif diff --git a/.github/build/iOS/release/icon/icon_1024x1024.png b/.github/build/iOS/release/icon/icon_1024x1024.png new file mode 100644 index 00000000..c80bf420 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_1024x1024.png differ diff --git a/.github/build/iOS/release/icon/icon_20x20.png b/.github/build/iOS/release/icon/icon_20x20.png new file mode 100644 index 00000000..93dac519 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_20x20.png differ diff --git a/.github/build/iOS/release/icon/icon_20x20@2x.png b/.github/build/iOS/release/icon/icon_20x20@2x.png new file mode 100644 index 00000000..88772124 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_20x20@2x.png differ diff --git a/.github/build/iOS/release/icon/icon_20x20@3x.png b/.github/build/iOS/release/icon/icon_20x20@3x.png new file mode 100644 index 00000000..cace3881 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_20x20@3x.png differ diff --git a/.github/build/iOS/release/icon/icon_29x29.png b/.github/build/iOS/release/icon/icon_29x29.png new file mode 100644 index 00000000..bab7dac1 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_29x29.png differ diff --git a/.github/build/iOS/release/icon/icon_29x29@2x.png b/.github/build/iOS/release/icon/icon_29x29@2x.png new file mode 100644 index 00000000..bfb79f21 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_29x29@2x.png differ diff --git a/.github/build/iOS/release/icon/icon_29x29@3x.png b/.github/build/iOS/release/icon/icon_29x29@3x.png new file mode 100644 index 00000000..e1de7c28 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_29x29@3x.png differ diff --git a/.github/build/iOS/release/icon/icon_40x40.png b/.github/build/iOS/release/icon/icon_40x40.png new file mode 100644 index 00000000..88772124 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_40x40.png differ diff --git a/.github/build/iOS/release/icon/icon_40x40@2x.png b/.github/build/iOS/release/icon/icon_40x40@2x.png new file mode 100644 index 00000000..9f08f761 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_40x40@2x.png differ diff --git a/.github/build/iOS/release/icon/icon_40x40@3x.png b/.github/build/iOS/release/icon/icon_40x40@3x.png new file mode 100644 index 00000000..6ed8550f Binary files /dev/null and b/.github/build/iOS/release/icon/icon_40x40@3x.png differ diff --git a/.github/build/iOS/release/icon/icon_60x60@2x.png b/.github/build/iOS/release/icon/icon_60x60@2x.png new file mode 100644 index 00000000..6ed8550f Binary files /dev/null and b/.github/build/iOS/release/icon/icon_60x60@2x.png differ diff --git a/.github/build/iOS/release/icon/icon_60x60@3x.png b/.github/build/iOS/release/icon/icon_60x60@3x.png new file mode 100644 index 00000000..ec6b2bb4 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_60x60@3x.png differ diff --git a/.github/build/iOS/release/icon/icon_76x76.png b/.github/build/iOS/release/icon/icon_76x76.png new file mode 100644 index 00000000..ec239362 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_76x76.png differ diff --git a/.github/build/iOS/release/icon/icon_76x76@2x.png b/.github/build/iOS/release/icon/icon_76x76@2x.png new file mode 100644 index 00000000..1c0955c8 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_76x76@2x.png differ diff --git a/.github/build/iOS/release/icon/icon_83.5x83.5@2x.png b/.github/build/iOS/release/icon/icon_83.5x83.5@2x.png new file mode 100644 index 00000000..d9968bd3 Binary files /dev/null and b/.github/build/iOS/release/icon/icon_83.5x83.5@2x.png differ diff --git a/.github/build/Linux/icon_snapshot.png b/.github/build/linux/dev/icon.png similarity index 100% rename from .github/build/Linux/icon_snapshot.png rename to .github/build/linux/dev/icon.png diff --git a/.github/build/linux/dev/template.desktop b/.github/build/linux/dev/template.desktop new file mode 100644 index 00000000..31b0f21e --- /dev/null +++ b/.github/build/linux/dev/template.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Techmino Development +Comment=Techmino is fun! +MimeType=application/x-love-game; +Exec=app %f +Type=Application +Categories=Game; +Terminal=false +Icon=icon +NoDisplay=false \ No newline at end of file diff --git a/.github/build/Linux/.gitattributes b/.github/build/linux/release/.gitattributes similarity index 100% rename from .github/build/Linux/.gitattributes rename to .github/build/linux/release/.gitattributes diff --git a/.github/build/Linux/icon.png b/.github/build/linux/release/icon.png similarity index 100% rename from .github/build/Linux/icon.png rename to .github/build/linux/release/icon.png diff --git a/.github/build/Linux/Techmino.desktop.template b/.github/build/linux/release/template.desktop similarity index 57% rename from .github/build/Linux/Techmino.desktop.template rename to .github/build/linux/release/template.desktop index bed656e1..11f27a4d 100644 --- a/.github/build/Linux/Techmino.desktop.template +++ b/.github/build/linux/release/template.desktop @@ -1,8 +1,10 @@ [Desktop Entry] -Name=Techmino Alpha +Name=Techmino Comment=Techmino is fun! -Exec=wrapper-love %f +MimeType=application/x-love-game; +Exec=app %f Type=Application Categories=Game; Terminal=false Icon=icon +NoDisplay=false \ No newline at end of file diff --git a/.github/build/macOS/.gitattributes b/.github/build/macOS/.gitattributes deleted file mode 100644 index c179c320..00000000 --- a/.github/build/macOS/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.template text eol=lf diff --git a/.github/build/macOS/Techminodisk.icns b/.github/build/macOS/dev/dmg.icns similarity index 100% rename from .github/build/macOS/Techminodisk.icns rename to .github/build/macOS/dev/dmg.icns diff --git a/.github/build/macOS/backgroundImage.tiff b/.github/build/macOS/dev/dmg.png similarity index 100% rename from .github/build/macOS/backgroundImage.tiff rename to .github/build/macOS/dev/dmg.png diff --git a/.github/build/macOS/icon_snapshot.icns b/.github/build/macOS/dev/icon.icns similarity index 100% rename from .github/build/macOS/icon_snapshot.icns rename to .github/build/macOS/dev/icon.icns diff --git a/.github/build/macOS/info.plist.template b/.github/build/macOS/info.plist.template deleted file mode 100644 index c4f251ef..00000000 --- a/.github/build/macOS/info.plist.template +++ /dev/null @@ -1,56 +0,0 @@ - - - - - BuildMachineOSBuild - 19B88 - CFBundleDevelopmentRegion - English - CFBundleExecutable - love - CFBundleIconFile - iconfile - CFBundleIdentifier - @bundleId - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Techmino - CFBundlePackageType - APPL - CFBundleShortVersionString - @versionName - CFBundleSignature - LoVe - CFBundleSupportedPlatforms - - MacOSX - - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 11C504 - DTPlatformVersion - GM - DTSDKBuild - 19B90 - DTSDKName - macosx10.15 - DTXcode - 1130 - DTXcodeBuild - 11C504 - LSApplicationCategoryType - public.app-category.games - LSMinimumSystemVersion - 10.7 - NSHighResolutionCapable - - NSHumanReadableCopyright - ©2020-@thisYear 26F Studio, GNU LGPLv3.0 - NSPrincipalClass - NSApplication - NSSupportsAutomaticGraphicsSwitching - - - diff --git a/.github/build/macOS/release/dmg.icns b/.github/build/macOS/release/dmg.icns new file mode 100644 index 00000000..f1a560cb Binary files /dev/null and b/.github/build/macOS/release/dmg.icns differ diff --git a/.github/build/macOS/release/dmg.png b/.github/build/macOS/release/dmg.png new file mode 100644 index 00000000..e50fad1f Binary files /dev/null and b/.github/build/macOS/release/dmg.png differ diff --git a/.github/build/macOS/icon.icns b/.github/build/macOS/release/icon.icns similarity index 100% rename from .github/build/macOS/icon.icns rename to .github/build/macOS/release/icon.icns diff --git a/.github/build/windows/dev/.gitattributes b/.github/build/windows/dev/.gitattributes new file mode 100644 index 00000000..20947f93 --- /dev/null +++ b/.github/build/windows/dev/.gitattributes @@ -0,0 +1 @@ +*.rc text eol=crlf diff --git a/.github/build/Windows/icon_snapshot.ico b/.github/build/windows/dev/icon.ico similarity index 100% rename from .github/build/Windows/icon_snapshot.ico rename to .github/build/windows/dev/icon.ico diff --git a/.github/build/windows/dev/template.rc b/.github/build/windows/dev/template.rc new file mode 100644 index 00000000..8aa567fb --- /dev/null +++ b/.github/build/windows/dev/template.rc @@ -0,0 +1,23 @@ +1 VERSIONINFO +FILEVERSION @FileVersion +PRODUCTVERSION @FileVersion +FILEOS 0x40004 +FILETYPE 0x1 +{ + BLOCK "StringFileInfo" + { + BLOCK "040904B0" + { + VALUE "FileDescription", "Techmino Development" + VALUE "CompanyName", "26F Studio" + VALUE "LegalCopyright", "Copyright @ 26F Studio" + VALUE "ProductName", "Techmino" + VALUE "ProductVersion", "@Version" + } + } + + BLOCK "VarFileInfo" + { + VALUE "Translation", 0x0409 0x04E4 + } +} diff --git a/.github/build/windows/release/.gitattributes b/.github/build/windows/release/.gitattributes new file mode 100644 index 00000000..20947f93 --- /dev/null +++ b/.github/build/windows/release/.gitattributes @@ -0,0 +1 @@ +*.rc text eol=crlf diff --git a/.github/build/Windows/icon.ico b/.github/build/windows/release/icon.ico similarity index 100% rename from .github/build/Windows/icon.ico rename to .github/build/windows/release/icon.ico diff --git a/.github/build/Windows/Techmino.rc.template b/.github/build/windows/release/template.rc similarity index 89% rename from .github/build/Windows/Techmino.rc.template rename to .github/build/windows/release/template.rc index 30c8207d..14f7ff77 100644 --- a/.github/build/Windows/Techmino.rc.template +++ b/.github/build/windows/release/template.rc @@ -8,7 +8,7 @@ FILETYPE 0x1 { BLOCK "040904B0" { - VALUE "FileDescription", "Techmino Alpha" + VALUE "FileDescription", "Techmino" VALUE "CompanyName", "26F Studio" VALUE "LegalCopyright", "Copyright @ 26F Studio" VALUE "ProductName", "Techmino" diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index feb7ee90..3cf96dab 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -2,224 +2,504 @@ name: Techmino Develop CI on: push: - branches: [ main, ci* ] + branches: [main, ci*] pull_request: - branches: [ main ] - + branches: [main] +env: + CORE_LOVE_PACKAGE_PATH: ./core.love + CORE_LOVE_ARTIFACT_NAME: core_love_package jobs: get-info: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: - name: ${{ steps.lua-related.outputs.name }} - apkCode: ${{ steps.lua-related.outputs.apkCode }} - code: ${{ steps.lua-related.outputs.code }} - commit: ${{ steps.git-related.outputs.commit }} + app-name: ${{ steps.app-info.outputs.app-name }} + version-name: ${{ steps.app-info.outputs.version-name }} + version-string: ${{ steps.app-info.outputs.version-string }} + version-code: ${{ steps.app-info.outputs.version-code }} + commit-hash: ${{ steps.git-info.outputs.commit-hash }} + base-name: ${{ steps.assemble-base-name.outputs.base-name }} steps: - - uses: actions/checkout@v2 - - name: Install lua - run: | - sudo apt-get install lua5.3 -y - - name: Get Version - id: lua-related - shell: lua {0} - run: | - local version = require 'version' - print("::set-output name=name::"..version.string) - print(("::set-output name=apkCode::%d"):format(version.apkCode)) - print(("::set-output name=code::%d"):format(version.code)) - - name: Get Commit - id: git-related - shell: bash - run: | - echo "::set-output name=commit::$(git rev-parse --short ${{ GITHUB.SHA }})" - - automatic-test: - runs-on: ubuntu-20.04 + - uses: actions/checkout@v3 + - name: Install lua + run: | + sudo apt-get install lua5.3 -y + - name: Get app info + id: app-info + shell: lua {0} + run: | + local version = require "version" + print("::set-output name=app-name::Techmino") + print("::set-output name=version-name::"..version.name) + print("::set-output name=version-string::"..version.string:gsub("%a", "")) + print(("::set-output name=version-code::%d"):format(version.code)) + - name: Get git info + id: git-info + shell: bash + run: | + COMMIT_HASH=$(git rev-parse --short ${{ GITHUB.SHA }}) + echo ::set-output name=commit-hash::$COMMIT_HASH + - name: Assemble package base name + id: assemble-base-name + shell: bash + run: | + BASE_NAME=Techmino_${{ steps.app-info.outputs.version-string }}_${{ steps.git-info.outputs.commit-hash }}_#${{ GITHUB.RUN_NUMBER }} + echo ::set-output name=base-name::$BASE_NAME + build-core: + runs-on: ubuntu-latest + needs: get-info + env: + PACKAGE_NAME: ./${{ needs.get-info.outputs.base-name }}_Core.love + outputs: + download-url: ${{ steps.transfer.outputs.download-url }} steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - uses: ./.github/actions/automatic-test - + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Build core love package + uses: 26F-Studio/love-actions-core@v1 + with: + build-list: ./media/ ./parts/ ./Zframework/ ./conf.lua ./main.lua ./version.lua + package-path: ${{ env.CORE_LOVE_PACKAGE_PATH }} + - name: Upload core love package + uses: actions/upload-artifact@v3 + with: + name: ${{ env.CORE_LOVE_ARTIFACT_NAME }} + path: ${{ env.CORE_LOVE_PACKAGE_PATH }} + - name: Rename love package + run: mv ${{ env.CORE_LOVE_PACKAGE_PATH }} ${{ env.PACKAGE_NAME }} + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ needs.get-info.outputs.base-name }}_Core + path: ${{ env.PACKAGE_NAME }} + - name: Upload to WeTransfer + id: transfer + run: | + curl -sL https://git.io/file-transfer | sh + ./transfer wet -s -p 16 --no-progress ${{ env.PACKAGE_NAME }} 2>&1>./wetransfer.log + echo "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" + auto-test: + runs-on: ubuntu-latest + needs: build-core + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Love actions for testing + uses: 26F-Studio/love-actions-test@v1 + with: + font-path: ./parts/fonts/proportional.otf + language-folder: ./parts/language + build-android: + runs-on: ubuntu-latest + needs: [get-info, build-core, auto-test] + env: + OUTPUT_FOLDER: ./build + outputs: + download-url: ${{ steps.transfer.outputs.download-url }} + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Process app name + id: process-app-name + shell: python3 {0} + run: | + import os + import re + os.system("echo ::set-output name=bundle-id::org.f26_studio." + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}")) + os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "-", "${{ needs.get-info.outputs.app-name }}")) + - name: Download core love package + uses: actions/download-artifact@v3 + with: + name: ${{ env.CORE_LOVE_ARTIFACT_NAME }} + - name: Download ColdClear + uses: ./.github/actions/get-cc + with: + platform: Android + dir: ./ColdClear + - name: Process ColdClear + shell: bash + run: | + mkdir -p ./libAndroid/armeabi-v7a/ + mkdir -p ./libAndroid/arm64-v8a/ + mv ./ColdClear/armeabi-v7a/libCCloader.so ./libAndroid/armeabi-v7a/ + mv ./ColdClear/arm64-v8a/libCCloader.so ./libAndroid/arm64-v8a/ + - name: Build Android packages + id: build-packages + uses: 26F-Studio/love-actions-android@v1 + with: + app-name: ${{ needs.get-info.outputs.app-name }} + bundle-id: ${{ steps.process-app-name.outputs.bundle-id }} + icon-specifier: "@mipmap/icon" + keystore-alias: ${{ secrets.ANDROID_KEYSTORE_ALIAS }} + keystore-base64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} + keystore-key-password: ${{ secrets.ANDROID_KEYSTORE_KEYPASSWORD }} + keystore-store-password: ${{ secrets.ANDROID_KEYSTORE_STOREPASSWORD }} + love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }} + resource-path: ./.github/build/android/dev/res + libs-path: ./ColdClear/ + extra-assets: ./libAndroid/ + product-name: ${{ steps.process-app-name.outputs.product-name }} + version-string: ${{ needs.get-info.outputs.version-string }} + version-code: ${{ needs.get-info.outputs.version-code }} + output-folder: ${{ env.OUTPUT_FOLDER }} + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ needs.get-info.outputs.base-name }}_Android + path: ${{ env.OUTPUT_FOLDER }}/* + - name: Upload to WeTransfer + id: transfer + run: | + curl -sL https://git.io/file-transfer | sh + ./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log + echo "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" + build-ios: + runs-on: macos-latest + needs: [get-info, build-core, auto-test] + env: + OUTPUT_FOLDER: ./build + outputs: + download-url: ${{ steps.transfer.outputs.download-url }} + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Process app name + id: process-app-name + shell: python3 {0} + run: | + import os + import re + os.system("echo ::set-output name=bundle-id::org.26f-studio.techmino") + os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}")) + - name: Download core love package + uses: actions/download-artifact@v3 + with: + name: ${{ env.CORE_LOVE_ARTIFACT_NAME }} + - name: Download ColdClear + uses: ./.github/actions/get-cc + with: + platform: iOS + dir: ./ColdClear + - name: Build iOS packages + id: build-packages + uses: 26F-Studio/love-actions-ios@v1 + with: + app-name: ${{ needs.get-info.outputs.app-name }} + bundle-id: ${{ steps.process-app-name.outputs.bundle-id }} + copyright: "Copyright © 2019-2022 26F-Studio. Some Rights Reserved." + icon-path: ./.github/build/iOS/dev/icon + love-patch: ./.github/build/iOS/love.patch + love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }} + libs-path: ./ColdClear/arm64/ + product-name: ${{ steps.process-app-name.outputs.product-name }} + version-string: ${{ needs.get-info.outputs.version-string }} + output-folder: ${{ env.OUTPUT_FOLDER }} + apple-development-base64: ${{ secrets.APPLE_CERT_APPLE_DEVELOPMENT_BASE64 }} + apple-development-password: ${{ secrets.APPLE_CERT_APPLE_DEVELOPMENT_PWD }} + api-key: ${{ secrets.APPLE_API_KEY }} + api-key-id: ${{ secrets.APPLE_API_KEY_ID }} + api-issuer-id: ${{ secrets.APPLE_API_ISSUER_ID }} + team-id: ${{ secrets.APPLE_DEVELOPER_TEAM_ID }} + apple-id: ${{ secrets.APPLE_APPLE_ID }} + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ needs.get-info.outputs.base-name }}_iOS + path: ${{ env.OUTPUT_FOLDER }}/* + - name: Upload to WeTransfer + id: transfer + run: | + wget -qO- https://github.com/Mikubill/transfer/releases/download/v0.4.17/transfer_0.4.17_darwin_amd64.tar.gz | tar xvz + ./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log + echo "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" + build-linux: + runs-on: ubuntu-latest + needs: [get-info, build-core, auto-test] + env: + OUTPUT_FOLDER: ./build + outputs: + download-url: ${{ steps.transfer.outputs.download-url }} + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Process app name + id: process-app-name + shell: python3 {0} + run: | + import os + import re + os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}")) + - name: Download core love package + uses: actions/download-artifact@v3 + with: + name: ${{ env.CORE_LOVE_ARTIFACT_NAME }} + - name: Download ColdClear + uses: ./.github/actions/get-cc + with: + platform: Linux + dir: ./ColdClear + - name: Process ColdClear + shell: bash + run: | + cd ./ColdClear + mkdir ./libs + mv ./x64/libcold_clear.so ./libs + mkdir ./shared + mv ./x64/CCloader.so ./shared + - name: Build Linux packages + id: build-packages + uses: 26F-Studio/love-actions-linux@v1 + with: + desktop-file-path: ./.github/build/linux/dev/template.desktop + executable-name: app + icon-path: ./.github/build/linux/dev/icon.png + love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }} + libs-path: ./ColdClear/libs/ + shared-path: ./ColdClear/shared/ + product-name: ${{ steps.process-app-name.outputs.product-name }} + output-folder: ${{ env.OUTPUT_FOLDER }} + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ needs.get-info.outputs.base-name }}_Linux + path: ${{ env.OUTPUT_FOLDER }}/* + - name: Upload to WeTransfer + id: transfer + run: | + curl -sL https://git.io/file-transfer | sh + ./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log + echo "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" + build-macos-appstore: + runs-on: macos-latest + needs: [get-info, build-core, auto-test] + env: + OUTPUT_FOLDER: ./build + outputs: + download-url: ${{ steps.transfer.outputs.download-url }} + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Process app name + id: process-app-name + shell: python3 {0} + run: | + import os + import re + os.system("echo ::set-output name=bundle-id::org.26f-studio.techmino") + os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}")) + - name: Download core love package + uses: actions/download-artifact@v3 + with: + name: ${{ env.CORE_LOVE_ARTIFACT_NAME }} + - name: Download ColdClear + uses: ./.github/actions/get-cc + with: + platform: macOS + dir: ./ColdClear + - name: Process ColdClear + shell: bash + run: | + rm ./ColdClear/universal/libcold_clear.a + - name: Build macOS packages + id: build-packages + uses: 26F-Studio/love-actions-macos-appstore@v1 + with: + app-name: ${{ needs.get-info.outputs.app-name }} + bundle-id: ${{ steps.process-app-name.outputs.bundle-id }} + copyright: "Copyright © 2019-2022 26F-Studio. Some Rights Reserved." + icon-path: ./.github/build/macOS/dev/icon.icns + love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }} + libs-path: ./ColdClear/universal/ + product-name: ${{ steps.process-app-name.outputs.product-name }} + version-string: ${{ needs.get-info.outputs.version-string }} + output-folder: ${{ env.OUTPUT_FOLDER }} + apple-development-base64: ${{ secrets.APPLE_CERT_APPLE_DEVELOPMENT_BASE64 }} + apple-development-password: ${{ secrets.APPLE_CERT_APPLE_DEVELOPMENT_PWD }} + api-key: ${{ secrets.APPLE_API_KEY }} + api-key-id: ${{ secrets.APPLE_API_KEY_ID }} + api-issuer-id: ${{ secrets.APPLE_API_ISSUER_ID }} + team-id: ${{ secrets.APPLE_DEVELOPER_TEAM_ID }} + apple-id: ${{ secrets.APPLE_APPLE_ID }} + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ needs.get-info.outputs.base-name }}_macOS_appstore + path: ${{ env.OUTPUT_FOLDER }}/* + - name: Upload to WeTransfer + id: transfer + run: | + wget -qO- https://github.com/Mikubill/transfer/releases/download/v0.4.17/transfer_0.4.17_darwin_amd64.tar.gz | tar xvz + ./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log + echo "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" + build-macos-portable: + runs-on: macos-latest + needs: [get-info, build-core, auto-test] + env: + OUTPUT_FOLDER: ./build + outputs: + download-url: ${{ steps.transfer.outputs.download-url }} + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Process app name + id: process-app-name + shell: python3 {0} + run: | + import os + import re + os.system("echo ::set-output name=bundle-id::org.26f-studio.techmino") + os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}")) + - name: Download core love package + uses: actions/download-artifact@v3 + with: + name: ${{ env.CORE_LOVE_ARTIFACT_NAME }} + - name: Download ColdClear + uses: ./.github/actions/get-cc + with: + platform: macOS + dir: ./ColdClear + - name: Process ColdClear + shell: bash + run: | + rm ./ColdClear/universal/libcold_clear.a + - name: Build macOS packages + id: build-packages + uses: 26F-Studio/love-actions-macos-portable@v1 + with: + app-name: ${{ needs.get-info.outputs.app-name }} + bundle-id: ${{ steps.process-app-name.outputs.bundle-id }} + copyright: "Copyright © 2019-2022 26F-Studio. Some Rights Reserved." + icon-path: ./.github/build/macOS/dev/icon.icns + love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }} + libs-path: ./ColdClear/universal/ + product-name: ${{ steps.process-app-name.outputs.product-name }} + version-string: ${{ needs.get-info.outputs.version-string }} + output-folder: ${{ env.OUTPUT_FOLDER }} + account-username: ${{ secrets.APPLE_ACCOUNT_USERNAME }} + account-password: ${{ secrets.APPLE_ACCOUNT_PASSWORD }} + team-id: "${{ secrets.APPLE_DEVELOPER_TEAM_ID }}" + developer-id-application-base64: ${{ secrets.APPLE_CERT_DEVELOPER_ID_APPLICATION }} + developer-id-application-password: ${{ secrets.APPLE_CERT_DEVELOPER_ID_APPLICATION_PWD }} + developer-id-installer-base64: ${{ secrets.APPLE_CERT_DEVELOPER_ID_INSTALLER }} + developer-id-installer-password: ${{ secrets.APPLE_CERT_DEVELOPER_ID_INSTALLER_PWD }} + dmg-background-path: ./.github/build/macOS/dev/dmg.png + dmg-icon-position: "239 203" + dmg-icon-size: "100" + dmg-link-position: "565 203" + dmg-text-size: "12" + dmg-volume-icon-path: ./.github/build/macOS/dev/dmg.icns + dmg-volume-name: ${{ steps.process-app-name.outputs.product-name }} + dmg-window-position: "200 120" + dmg-window-size: "800 500" + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ needs.get-info.outputs.base-name }}_macOS_portable + path: ${{ env.OUTPUT_FOLDER }}/* + - name: Upload to WeTransfer + id: transfer + run: | + wget -qO- https://github.com/Mikubill/transfer/releases/download/v0.4.17/transfer_0.4.17_darwin_amd64.tar.gz | tar xvz + ./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log + echo "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" build-windows: runs-on: windows-latest - needs: get-info + needs: [get-info, build-core, auto-test] + env: + OUTPUT_FOLDER: ./build + outputs: + download-url: ${{ steps.transfer.outputs.download-url }} steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - uses: ./.github/actions/update-version - with: - commit: ${{ needs.get-info.outputs.commit }} - type: snapshot - - uses: ./.github/actions/build-windows - with: - love-url: https://github.com/love2d/love/releases/download/11.3/love-11.3-win64.zip - love-dir: love-11.3-win64 - arch: win64 - version: ${{ needs.get-info.outputs.name }} - icon: .\.github\build\Windows\icon_snapshot.ico - - name: Upload - uses: actions/upload-artifact@v2 - with: - name: Techmino_${{ needs.get-info.outputs.name }}_${{ GITHUB.RUN_NUMBER }}_${{ needs.get-info.outputs.commit }}_Windows - path: love - - build-linux: - runs-on: ubuntu-20.04 - needs: get-info + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Process app name + id: process-app-name + shell: python3 {0} + run: | + import os + import re + os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}")) + - name: Download core love package + uses: actions/download-artifact@v3 + with: + name: ${{ env.CORE_LOVE_ARTIFACT_NAME }} + - name: Build Windows packages + id: build-packages + uses: 26F-Studio/love-actions-windows@v1 + with: + icon-path: ./.github/build/windows/dev/icon.ico + rc-path: ./.github/build/windows/dev/template.rc + love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }} + product-name: ${{ steps.process-app-name.outputs.product-name }} + version-string: ${{ needs.get-info.outputs.version-string }} + output-folder: ${{ env.OUTPUT_FOLDER }} + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ needs.get-info.outputs.base-name }}_Windows + path: ${{ env.OUTPUT_FOLDER }}/* + - name: Get transfer + env: + TEMP_PATH: ./temp.zip + shell: bash + run: | + curl -L --retry 5 https://github.com/Mikubill/transfer/releases/download/v0.4.17/transfer_0.4.17_windows_amd64.zip -o ${{ env.TEMP_PATH }} + 7z x ${{ env.TEMP_PATH }} -o./ + rm ${{ env.TEMP_PATH }} + - name: Upload to WeTransfer + id: transfer + run: | + ./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log + echo "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" + post-build: + runs-on: ubuntu-latest + if: ${{ always() }} + needs: + [ + get-info, + auto-test, + build-core, + build-android, + build-ios, + build-linux, + build-macos-appstore, + build-macos-portable, + build-windows, + ] steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - uses: ./.github/actions/update-version - with: - commit: ${{ needs.get-info.outputs.commit }} - type: snapshot - - uses: ./.github/actions/build-linux - with: - icon: .github/build/Linux/icon_snapshot.png - - name: Upload - uses: actions/upload-artifact@v2 - with: - name: Techmino_${{ needs.get-info.outputs.name }}_${{ GITHUB.RUN_NUMBER }}_${{ needs.get-info.outputs.commit }}_Linux - path: Techmino.AppImage - - build-android: - runs-on: ubuntu-20.04 - needs: get-info - steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - uses: ./.github/actions/update-version - with: - commit: ${{ needs.get-info.outputs.commit }} - type: snapshot - - uses: ./.github/actions/build-android - with: - type: Snapshot - apkCode: ${{ needs.get-info.outputs.apkCode }} - name: ${{ needs.get-info.outputs.name }} - file-path: Techmino_Snapshot.apk - SIGNING_KEY: ${{ secrets.SIGNING_KEY }} - KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }} - ALIAS: ${{ secrets.ALIAS }} - KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} - - name: Upload - uses: actions/upload-artifact@v2 - with: - name: Techmino_${{ needs.get-info.outputs.name }}_${{ GITHUB.RUN_NUMBER }}_${{ needs.get-info.outputs.commit }}_Android - path: Techmino_Snapshot.apk - - build-android-mini: - runs-on: ubuntu-20.04 - needs: get-info - steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - uses: ./.github/actions/update-version - with: - commit: ${{ needs.get-info.outputs.commit }} - type: snapshot - - name: remove media - run: | - rm -rf media/music media/effect media/vocal - - uses: ./.github/actions/build-android - with: - type: Snapshot - apkCode: ${{ needs.get-info.outputs.apkCode }} - name: ${{ needs.get-info.outputs.name }} - file-path: Techmino_Snapshot_Mini.apk - SIGNING_KEY: ${{ secrets.SIGNING_KEY }} - KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }} - ALIAS: ${{ secrets.ALIAS }} - KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} - - name: Upload - uses: actions/upload-artifact@v2 - with: - name: Techmino_${{ needs.get-info.outputs.name }}_${{ GITHUB.RUN_NUMBER }}_${{ needs.get-info.outputs.commit }}_Android_Mini - path: Techmino_Snapshot_Mini.apk - - build-macOS: - runs-on: macos-10.15 - needs: get-info - steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - uses: ./.github/actions/update-version - with: - commit: ${{ needs.get-info.outputs.commit }} - type: snapshot - - uses: ./.github/actions/build-macos - with: - name: ${{ needs.get-info.outputs.name }} - icon: .github/build/macOS/icon_snapshot.icns - APPLE_API_ID: '${{ secrets.APPLE_API_ID }}' - APPLE_API_ISSUER: '${{ secrets.APPLE_API_ISSUER }}' - APPLE_API_KEY: '${{ secrets.APPLE_API_KEY }}' - APPLE_APP_IDENTIFIER: '${{ secrets.APPLE_APP_IDENTIFIER }}' - APPLE_KEYCHAIN_NAME: '${{ secrets.APPLE_KEYCHAIN_NAME }}' - APPLE_KEYCHAIN_PWD: '${{ secrets.APPLE_KEYCHAIN_PWD }}' - FASTLANE_MATCH_PWD: '${{ secrets.FASTLANE_MATCH_PWD }}' - FASTLANE_MATCH_TOKEN: '${{ secrets.FASTLANE_MATCH_TOKEN }}' - - name: Upload - uses: actions/upload-artifact@v2 - with: - name: Techmino_${{ needs.get-info.outputs.name }}_${{ GITHUB.RUN_NUMBER }}_${{ needs.get-info.outputs.commit }}_macOS - path: Techmino.dmg - - build-iOS: - runs-on: macos-latest - if: (!startsWith( github.ref , 'refs/heads/ci-')) || startsWith( github.ref , 'refs/heads/ci-ios-') - needs: get-info - steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - uses: ./.github/actions/update-version - with: - commit: ${{ needs.get-info.outputs.commit }} - type: snapshot - - uses: ./.github/actions/build-ios - with: - name: ${{ needs.get-info.outputs.name }} - type: 'dev' - APPLE_API_ID: '${{ secrets.APPLE_API_ID }}' - APPLE_API_ISSUER: '${{ secrets.APPLE_API_ISSUER }}' - APPLE_API_KEY: '${{ secrets.APPLE_API_KEY }}' - APPLE_APP_BUILD: '${{ needs.get-info.outputs.code }}.2.${{ github.run_number }}.${{ github.run_attempt }}' - APPLE_APP_CHANGELOG: '${{ github.event.commits[0].message }}' - APPLE_APP_ID: '${{ secrets.APPLE_APP_ID }}' - APPLE_APP_IDENTIFIER: '${{ secrets.APPLE_APP_IDENTIFIER }}' - APPLE_APP_PROFILE: '${{ secrets.APPLE_APP_PROFILE }}' - APPLE_KEYCHAIN_NAME: '${{ secrets.APPLE_KEYCHAIN_NAME }}' - APPLE_KEYCHAIN_PWD: '${{ secrets.APPLE_KEYCHAIN_PWD }}' - FASTLANE_ACTION_ID: '${{ github.run_id }}' - FASTLANE_DISCORD_WEBHOOK: '${{ secrets.FASTLANE_DISCORD_WEBHOOK }}' - FASTLANE_MATCH_PWD: '${{ secrets.FASTLANE_MATCH_PWD }}' - FASTLANE_MATCH_TOKEN: '${{ secrets.FASTLANE_MATCH_TOKEN }}' - - name: Upload - uses: actions/upload-artifact@v2 - with: - name: Techmino_${{ needs.get-info.outputs.name }}_${{ GITHUB.RUN_NUMBER }}_${{ needs.get-info.outputs.commit }}_iOS - path: Techmino.ipa - - build-love: - runs-on: ubuntu-20.04 - needs: get-info - steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - uses: ./.github/actions/update-version - - uses: ./.github/actions/build-love - with: - file-path: Techmino.love - - name: Upload - uses: actions/upload-artifact@v2 - with: - name: Techmino_${{ needs.get-info.outputs.name }}_${{ GITHUB.RUN_NUMBER }}_${{ needs.get-info.outputs.commit }}_Love - path: Techmino.love + - uses: actions/checkout@v3 + - name: Cleanup + uses: geekyeggo/delete-artifact@v1 + with: + name: ${{ env.CORE_LOVE_ARTIFACT_NAME }} + - name: Send Discord message + uses: Sniddl/discord-commits@v1.3 + with: + webhook: ${{ secrets.DISCORD_WEBHOOK }} + message: "Github Actions for **${{ github.repository }}**." + embed: '{ + "author":{ + "name":"${{ needs.get-info.outputs.app-name }} [Development]", + "url":"https://github.com/${{ github.repository }}" + }, + "title":"${{ needs.get-info.outputs.app-name }} (${{ needs.get-info.outputs.version-name }}) Build Result", + "description": "CI triggered at ${{ needs.get-info.outputs.commit-hash }}", + "url":"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}", + "thumbnail":{ + "url":"https://raw.githubusercontent.com/${{ github.repository }}/main/.github/build/linux/dev/icon.png" + }, + "color":36863, + "fields":[ + {"name":"Version","value":"${{ needs.get-info.outputs.version-string }}","inline": true}, + {"name":"Package Name","value":"${{ needs.get-info.outputs.base-name }}","inline": true}, + {"name":"Status","value":"**Automatic Test:** ${{ needs.auto-test.result }}\n**Core:** ${{ needs.build-core.result }}\n**Android:** ${{ needs.build-android.result }}\n**iOS:** ${{ needs.build-ios.result }}\n**Linux:** ${{ needs.build-linux.result }}\n**macOS App Store:** ${{ needs.build-macos-appstore.result }}\n**macOS portable:** ${{ needs.build-macos-portable.result }}\n**Windows:** ${{ needs.build-windows.result }}"}, + {"name":"Download Links","value":"**Core:** ${{ needs.build-core.outputs.download-url}}\n**Android:** ${{ needs.build-android.outputs.download-url }}\n**iOS:** ${{ needs.build-ios.outputs.download-url }}\n**Linux:** ${{ needs.build-linux.outputs.download-url }}\n**macOS App Store:** ${{ needs.build-macos-appstore.outputs.download-url }}\n**macOS portable:** ${{ needs.build-macos-portable.outputs.download-url }}\n**Windows:** ${{ needs.build-windows.outputs.download-url}}"} + ] + }'