mirror of
https://github.com/pepaskopec-blip/Graduately.git
synced 2026-10-27 07:04:35 +00:00
Rename published packages and installers from maturita-* to graduately-*.
Keep temporary legacy aliases on the builds branch so older updaters still find downloads. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
8891bb2a38
commit
bce63459d1
35 changed files with 197 additions and 158 deletions
47
.github/workflows/build.yml
vendored
47
.github/workflows/build.yml
vendored
|
|
@ -43,8 +43,8 @@ jobs:
|
|||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: maturita-linux
|
||||
path: dist/maturita-linux-*.AppImage
|
||||
name: graduately-linux
|
||||
path: dist/graduately-linux-*.AppImage
|
||||
|
||||
windows:
|
||||
name: Windows zip
|
||||
|
|
@ -73,16 +73,16 @@ jobs:
|
|||
run: |
|
||||
make bundle
|
||||
cd dist
|
||||
zip -qry ../maturita-windows-x64.zip .
|
||||
zip -qry ../graduately-windows-x64.zip .
|
||||
cd ..
|
||||
mkdir -p dist-out
|
||||
mv maturita-windows-x64.zip dist-out/
|
||||
mv graduately-windows-x64.zip dist-out/
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: maturita-windows
|
||||
path: dist-out/maturita-windows-x64.zip
|
||||
name: graduately-windows
|
||||
path: dist-out/graduately-windows-x64.zip
|
||||
|
||||
macos:
|
||||
name: macOS app
|
||||
|
|
@ -137,8 +137,8 @@ jobs:
|
|||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: maturita-macos
|
||||
path: dist/maturita-macos-*.zip
|
||||
name: graduately-macos
|
||||
path: dist/graduately-macos-*.zip
|
||||
|
||||
android:
|
||||
name: Android APK
|
||||
|
|
@ -183,13 +183,13 @@ jobs:
|
|||
./gradlew :app:assembleRelease --no-daemon
|
||||
mkdir -p ../dist-android
|
||||
cp app/build/outputs/apk/release/app-release.apk \
|
||||
../dist-android/maturita-android.apk
|
||||
../dist-android/graduately-android.apk
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: maturita-android
|
||||
path: dist-android/maturita-android.apk
|
||||
name: graduately-android
|
||||
path: dist-android/graduately-android.apk
|
||||
|
||||
ios:
|
||||
name: iOS IPA
|
||||
|
|
@ -209,8 +209,8 @@ jobs:
|
|||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: maturita-ios
|
||||
path: dist-ios/maturita-ios.ipa
|
||||
name: graduately-ios
|
||||
path: dist-ios/graduately-ios.ipa
|
||||
|
||||
publish:
|
||||
name: Publish to builds branch
|
||||
|
|
@ -240,19 +240,26 @@ jobs:
|
|||
run: |
|
||||
set -euo pipefail
|
||||
cp -f fresh/* staged/ 2>/dev/null || true
|
||||
rm -f staged/maturita-macos-swift-*.zip staged/VERSION-macos-swift
|
||||
rm -f staged/graduately-macos-swift-*.zip staged/VERSION-macos-swift
|
||||
chmod +x installers/pack-installer-zips.sh
|
||||
./installers/pack-installer-zips.sh
|
||||
cp installers/maturita-installer-linux.sh staged/
|
||||
cp installers/maturita-installer-windows.cmd staged/
|
||||
cp installers/maturita-installer-*.zip staged/
|
||||
cp installers/graduately-installer-linux.sh staged/
|
||||
cp installers/graduately-installer-windows.cmd staged/
|
||||
cp installers/graduately-installer-*.zip staged/
|
||||
# The updaters download this to see whether they are behind.
|
||||
echo "${{ github.sha }}" > staged/VERSION
|
||||
# Per-platform markers name the commit whose package is really
|
||||
# here, so a platform that failed this run is not offered as new.
|
||||
[ -f fresh/maturita-android.apk ] && echo "${{ github.sha }}" > staged/VERSION-android
|
||||
[ -f fresh/maturita-ios.ipa ] && echo "${{ github.sha }}" > staged/VERSION-ios
|
||||
ls fresh/maturita-macos-*.zip >/dev/null 2>&1 && echo "${{ github.sha }}" > staged/VERSION-macos
|
||||
[ -f fresh/graduately-android.apk ] && echo "${{ github.sha }}" > staged/VERSION-android
|
||||
[ -f fresh/graduately-ios.ipa ] && echo "${{ github.sha }}" > staged/VERSION-ios
|
||||
ls fresh/graduately-macos-*.zip >/dev/null 2>&1 && echo "${{ github.sha }}" > staged/VERSION-macos
|
||||
# Compatibility aliases so older installers/updaters still find packages.
|
||||
[ -f staged/graduately-macos-arm64.zip ] && cp -f staged/graduately-macos-arm64.zip staged/maturita-macos-arm64.zip
|
||||
[ -f staged/graduately-macos-x86_64.zip ] && cp -f staged/graduately-macos-x86_64.zip staged/maturita-macos-x86_64.zip
|
||||
[ -f staged/graduately-windows-x64.zip ] && cp -f staged/graduately-windows-x64.zip staged/maturita-windows-x64.zip
|
||||
[ -f staged/graduately-linux-x86_64.AppImage ] && cp -f staged/graduately-linux-x86_64.AppImage staged/maturita-linux-x86_64.AppImage
|
||||
[ -f staged/graduately-android.apk ] && cp -f staged/graduately-android.apk staged/maturita-android.apk
|
||||
[ -f staged/graduately-ios.ipa ] && cp -f staged/graduately-ios.ipa staged/maturita-ios.ipa
|
||||
ls fresh staged
|
||||
|
||||
# The branch is rewritten from scratch every time rather than added to,
|
||||
|
|
|
|||
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,6 +1,8 @@
|
|||
# Binaries and build trees
|
||||
/maturita
|
||||
/maturita.exe
|
||||
/graduately
|
||||
/graduately.exe
|
||||
/build/
|
||||
/dist/
|
||||
/progress/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
cmake_minimum_required(VERSION 3.16)
|
||||
project(maturita C)
|
||||
project(graduately C)
|
||||
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
|
|
@ -40,33 +40,33 @@ else()
|
|||
pkg_check_modules(GTK4 REQUIRED IMPORTED_TARGET gtk4)
|
||||
endif()
|
||||
|
||||
file(GLOB MATURITA_SOURCES CONFIGURE_DEPENDS
|
||||
file(GLOB GRADUATELY_SOURCES CONFIGURE_DEPENDS
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.c")
|
||||
if(WIN32)
|
||||
add_executable(maturita WIN32 ${MATURITA_SOURCES}
|
||||
add_executable(graduately WIN32 ${GRADUATELY_SOURCES}
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/data/windows/maturita.rc")
|
||||
else()
|
||||
add_executable(maturita ${MATURITA_SOURCES})
|
||||
add_executable(graduately ${GRADUATELY_SOURCES})
|
||||
endif()
|
||||
|
||||
target_include_directories(maturita PRIVATE
|
||||
target_include_directories(graduately PRIVATE
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src")
|
||||
|
||||
if(DEFINED APP_COMMIT AND NOT APP_COMMIT STREQUAL "")
|
||||
target_compile_definitions(maturita PRIVATE APP_COMMIT="${APP_COMMIT}")
|
||||
target_compile_definitions(graduately PRIVATE APP_COMMIT="${APP_COMMIT}")
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_compile_options(maturita PRIVATE ${GTK4_CFLAGS})
|
||||
target_link_options(maturita PRIVATE ${GTK4_LIBS})
|
||||
target_link_options(maturita PRIVATE /ENTRY:mainCRTStartup)
|
||||
target_compile_definitions(maturita PRIVATE _CRT_SECURE_NO_WARNINGS)
|
||||
target_compile_options(graduately PRIVATE ${GTK4_CFLAGS})
|
||||
target_link_options(graduately PRIVATE ${GTK4_LIBS})
|
||||
target_link_options(graduately PRIVATE /ENTRY:mainCRTStartup)
|
||||
target_compile_definitions(graduately PRIVATE _CRT_SECURE_NO_WARNINGS)
|
||||
else()
|
||||
target_link_libraries(maturita PRIVATE PkgConfig::GTK4 m)
|
||||
target_compile_options(maturita PRIVATE
|
||||
target_link_libraries(graduately PRIVATE PkgConfig::GTK4 m)
|
||||
target_compile_options(graduately PRIVATE
|
||||
-Wall -Wextra -Wno-deprecated-declarations)
|
||||
if(APPLE)
|
||||
target_link_libraries(maturita PRIVATE
|
||||
target_link_libraries(graduately PRIVATE
|
||||
"-framework AppKit" "-framework Foundation")
|
||||
endif()
|
||||
endif()
|
||||
|
|
@ -74,18 +74,18 @@ endif()
|
|||
# Runtime assets sit next to the binary after install / cmake --build.
|
||||
set(ICON_512
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/data/share/icons/hicolor/512x512/apps/maturita.png")
|
||||
add_custom_command(TARGET maturita POST_BUILD
|
||||
add_custom_command(TARGET graduately POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/style.css
|
||||
$<TARGET_FILE_DIR:maturita>/style.css
|
||||
$<TARGET_FILE_DIR:graduately>/style.css
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/changelog.txt
|
||||
$<TARGET_FILE_DIR:maturita>/changelog.txt
|
||||
$<TARGET_FILE_DIR:graduately>/changelog.txt
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
$<TARGET_FILE_DIR:maturita>/icons/hicolor/512x512/apps
|
||||
$<TARGET_FILE_DIR:graduately>/icons/hicolor/512x512/apps
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${ICON_512}
|
||||
$<TARGET_FILE_DIR:maturita>/icons/hicolor/512x512/apps/maturita.png
|
||||
$<TARGET_FILE_DIR:graduately>/icons/hicolor/512x512/apps/maturita.png
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/share
|
||||
$<TARGET_FILE_DIR:maturita>/share)
|
||||
$<TARGET_FILE_DIR:graduately>/share)
|
||||
|
|
|
|||
6
Makefile
6
Makefile
|
|
@ -28,14 +28,14 @@ CFLAGS += -DAPP_COMMIT='"$(COMMIT)"'
|
|||
endif
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
TARGET = maturita.exe
|
||||
TARGET = graduately.exe
|
||||
LIBS += -mwindows
|
||||
WINDRES ?= windres
|
||||
RC_SRC = $(DATA_DIR)/windows/maturita.rc
|
||||
RC_OBJ = $(BUILD_DIR)/maturita_rc.o
|
||||
UNAME_S :=
|
||||
else
|
||||
TARGET = maturita
|
||||
TARGET = graduately
|
||||
RC_SRC =
|
||||
RC_OBJ =
|
||||
UNAME_S := $(shell uname -s 2>/dev/null)
|
||||
|
|
@ -71,7 +71,7 @@ $(TARGET): $(OBJ)
|
|||
endif
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET) maturita.exe
|
||||
rm -f $(TARGET) graduately.exe maturita.exe maturita
|
||||
rm -rf $(BUILD_DIR)
|
||||
|
||||
run: $(TARGET)
|
||||
|
|
|
|||
62
README.md
62
README.md
|
|
@ -27,11 +27,11 @@ větve.
|
|||
|
||||
| Platforma | Soubor | Jak spustit |
|
||||
| --------- | ------ | ----------- |
|
||||
| macOS (Apple Silicon) | [maturita-installer-macos.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-macos.zip) | Rozbalit, pravý klik na **Nainstalovat Graduately** → **Otevřít** |
|
||||
| Windows (x64) | [maturita-installer-windows.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-windows.zip) | Rozbalit a dvojklik; u SmartScreenu **Další informace → Přesto spustit** |
|
||||
| Linux (x86_64) | [maturita-installer-linux.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-linux.zip) | Rozbalit a dvojklik na instalátor |
|
||||
| Android (8+) | [maturita-installer-android.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-android.zip) | Rozbalit, otevřít **Stahnout Graduately.html** a nainstalovat APK (neznámé zdroje) |
|
||||
| iOS (26+) | [maturita-installer-ios.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-ios.zip) | Rozbalit, otevřít **Jak nainstalovat Graduately.html**. Nejjednodušší: Xcode na Macu, nebo IPA přes AltStore |
|
||||
| macOS (Apple Silicon) | [graduately-installer-macos.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-macos.zip) | Rozbalit, pravý klik na **Nainstalovat Graduately** → **Otevřít** |
|
||||
| Windows (x64) | [graduately-installer-windows.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-windows.zip) | Rozbalit a dvojklik; u SmartScreenu **Další informace → Přesto spustit** |
|
||||
| Linux (x86_64) | [graduately-installer-linux.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-linux.zip) | Rozbalit a dvojklik na instalátor |
|
||||
| Android (8+) | [graduately-installer-android.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-android.zip) | Rozbalit, otevřít **Stahnout Graduately.html** a nainstalovat APK (neznámé zdroje) |
|
||||
| iOS (26+) | [graduately-installer-ios.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-ios.zip) | Rozbalit, otevřít **Jak nainstalovat Graduately.html**. Nejjednodušší: Xcode na Macu, nebo IPA přes AltStore |
|
||||
|
||||
Kam se to nainstaluje: `/Applications` nebo `~/Applications` (macOS),
|
||||
`%LOCALAPPDATA%\Programs\Graduately` (Windows), `~/Applications` (Linux).
|
||||
|
|
@ -48,11 +48,11 @@ Na větvi [`builds`](https://github.com/pepaskopec-blip/Graduately/tree/builds)
|
|||
jsou i hotové balíčky. Odkazy podle názvu větve umí CDN kešovat, proto je
|
||||
spolehlivější instalátor výše, nebo stažení přímo z té stránky větve:
|
||||
|
||||
- [maturita-macos-arm64.zip](https://github.com/pepaskopec-blip/Graduately/raw/builds/maturita-macos-arm64.zip)
|
||||
- [maturita-windows-x64.zip](https://github.com/pepaskopec-blip/Graduately/raw/builds/maturita-windows-x64.zip)
|
||||
- [maturita-linux-x86_64.AppImage](https://github.com/pepaskopec-blip/Graduately/raw/builds/maturita-linux-x86_64.AppImage)
|
||||
- [maturita-android.apk](https://github.com/pepaskopec-blip/Graduately/raw/refs/heads/builds/maturita-android.apk)
|
||||
- [maturita-ios.ipa](https://github.com/pepaskopec-blip/Graduately/raw/refs/heads/builds/maturita-ios.ipa)
|
||||
- [graduately-macos-arm64.zip](https://github.com/pepaskopec-blip/Graduately/raw/builds/graduately-macos-arm64.zip)
|
||||
- [graduately-windows-x64.zip](https://github.com/pepaskopec-blip/Graduately/raw/builds/graduately-windows-x64.zip)
|
||||
- [graduately-linux-x86_64.AppImage](https://github.com/pepaskopec-blip/Graduately/raw/builds/graduately-linux-x86_64.AppImage)
|
||||
- [graduately-android.apk](https://github.com/pepaskopec-blip/Graduately/raw/refs/heads/builds/graduately-android.apk)
|
||||
- [graduately-ios.ipa](https://github.com/pepaskopec-blip/Graduately/raw/refs/heads/builds/graduately-ios.ipa)
|
||||
|
||||
Postup a nastavení se ukládají vedle `.app` / složky / AppImage do `progress/`.
|
||||
Na Androidu, iOS a macOS do úložiště aplikace (stejné statistiky, témata a jazyk).
|
||||
|
|
@ -106,14 +106,14 @@ Na Macu:
|
|||
|
||||
```bash
|
||||
open Maturita.xcworkspace # scheme Maturita z macos/Maturita.xcodeproj
|
||||
# nebo: make bundle # zip v dist/maturita-macos-arm64.zip
|
||||
# nebo: make bundle # zip v dist/graduately-macos-arm64.zip
|
||||
```
|
||||
|
||||
Na Linuxu a Windows:
|
||||
|
||||
```bash
|
||||
make
|
||||
make run # nebo ./maturita
|
||||
make run # nebo ./graduately
|
||||
make bundle # AppImage / Windows složka s DLL
|
||||
make smoke # instalátory, content packs, dostupnost builds
|
||||
```
|
||||
|
|
@ -146,8 +146,8 @@ V terminálu **MSYS2 UCRT64**:
|
|||
```bash
|
||||
cd /c/Users/<jméno>/Graduately # C:\Users\<jméno>\Graduately v MSYS2
|
||||
make
|
||||
./maturita.exe
|
||||
make bundle # dist/maturita.exe jde spustit i z Průzkumníka
|
||||
./graduately.exe
|
||||
make bundle # dist/graduately.exe jde spustit i z Průzkumníka
|
||||
```
|
||||
|
||||
### Struktura
|
||||
|
|
@ -188,12 +188,12 @@ iOS ze zdroje (Xcode 26, iOS 26+ / Liquid Glass):
|
|||
open Maturita.xcworkspace # v kořeni repozitáře
|
||||
# Simulátor: vyber iPhone a Run, nic dalšího není potřeba (obsah se
|
||||
# vytáhne z C zdrojů při buildu). Na iPhone: v Signing vyber svůj Team.
|
||||
# nebo: make ios # unsigned IPA v dist-ios/maturita-ios.ipa
|
||||
# nebo: make ios # unsigned IPA v dist-ios/graduately-ios.ipa
|
||||
```
|
||||
|
||||
Workspace odkazuje na `ios/Maturita.xcodeproj` a `macos/Maturita.xcodeproj`.
|
||||
Projekty nepřesouvejte – build čte `../src` a `../scripts` a v kořeni by
|
||||
`Maturita/` kolidovalo se zkompilovaným binárem `maturita`.
|
||||
`Maturita/` kolidovalo se zkompilovaným binárem `graduately`.
|
||||
|
||||
Licence: [GPL-3.0](LICENSE).
|
||||
|
||||
|
|
@ -220,11 +220,11 @@ branch-named file.
|
|||
|
||||
| Platform | File | How to run |
|
||||
| -------- | ---- | ---------- |
|
||||
| macOS (Apple Silicon) | [maturita-installer-macos.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-macos.zip) | Unzip, right-click **Nainstalovat Graduately** → **Open** |
|
||||
| Windows (x64) | [maturita-installer-windows.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-windows.zip) | Unzip and double-click; if SmartScreen appears, **More info → Run anyway** |
|
||||
| Linux (x86_64) | [maturita-installer-linux.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-linux.zip) | Unzip and double-click the installer |
|
||||
| Android (8+) | [maturita-installer-android.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-android.zip) | Unzip, open **Stahnout Graduately.html**, then install the APK (unknown sources) |
|
||||
| iOS (26+) | [maturita-installer-ios.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/maturita-installer-ios.zip) | Unzip, open **Jak nainstalovat Graduately.html**. Easiest: Xcode on a Mac, or the IPA via AltStore |
|
||||
| macOS (Apple Silicon) | [graduately-installer-macos.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-macos.zip) | Unzip, right-click **Nainstalovat Graduately** → **Open** |
|
||||
| Windows (x64) | [graduately-installer-windows.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-windows.zip) | Unzip and double-click; if SmartScreen appears, **More info → Run anyway** |
|
||||
| Linux (x86_64) | [graduately-installer-linux.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-linux.zip) | Unzip and double-click the installer |
|
||||
| Android (8+) | [graduately-installer-android.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-android.zip) | Unzip, open **Stahnout Graduately.html**, then install the APK (unknown sources) |
|
||||
| iOS (26+) | [graduately-installer-ios.zip](https://github.com/pepaskopec-blip/Graduately/raw/main/installers/graduately-installer-ios.zip) | Unzip, open **Jak nainstalovat Graduately.html**. Easiest: Xcode on a Mac, or the IPA via AltStore |
|
||||
|
||||
Install locations: `/Applications` or `~/Applications` (macOS),
|
||||
`%LOCALAPPDATA%\Programs\Graduately` (Windows), `~/Applications` (Linux).
|
||||
|
|
@ -241,11 +241,11 @@ The same files live on
|
|||
Branch-named raw URLs can be cached by the CDN, so prefer the installer
|
||||
above, or download from that branch page:
|
||||
|
||||
- [maturita-macos-arm64.zip](https://github.com/pepaskopec-blip/Graduately/raw/builds/maturita-macos-arm64.zip)
|
||||
- [maturita-windows-x64.zip](https://github.com/pepaskopec-blip/Graduately/raw/builds/maturita-windows-x64.zip)
|
||||
- [maturita-linux-x86_64.AppImage](https://github.com/pepaskopec-blip/Graduately/raw/builds/maturita-linux-x86_64.AppImage)
|
||||
- [maturita-android.apk](https://github.com/pepaskopec-blip/Graduately/raw/refs/heads/builds/maturita-android.apk)
|
||||
- [maturita-ios.ipa](https://github.com/pepaskopec-blip/Graduately/raw/refs/heads/builds/maturita-ios.ipa)
|
||||
- [graduately-macos-arm64.zip](https://github.com/pepaskopec-blip/Graduately/raw/builds/graduately-macos-arm64.zip)
|
||||
- [graduately-windows-x64.zip](https://github.com/pepaskopec-blip/Graduately/raw/builds/graduately-windows-x64.zip)
|
||||
- [graduately-linux-x86_64.AppImage](https://github.com/pepaskopec-blip/Graduately/raw/builds/graduately-linux-x86_64.AppImage)
|
||||
- [graduately-android.apk](https://github.com/pepaskopec-blip/Graduately/raw/refs/heads/builds/graduately-android.apk)
|
||||
- [graduately-ios.ipa](https://github.com/pepaskopec-blip/Graduately/raw/refs/heads/builds/graduately-ios.ipa)
|
||||
|
||||
Progress and settings live in `progress/` next to the `.app` / folder /
|
||||
AppImage. On Android, iOS and macOS they stay in app storage (same stats, themes, language).
|
||||
|
|
@ -300,14 +300,14 @@ On a Mac:
|
|||
|
||||
```bash
|
||||
open Maturita.xcworkspace # scheme Maturita from macos/Maturita.xcodeproj
|
||||
# or: make bundle # zip at dist/maturita-macos-arm64.zip
|
||||
# or: make bundle # zip at dist/graduately-macos-arm64.zip
|
||||
```
|
||||
|
||||
On Linux and Windows:
|
||||
|
||||
```bash
|
||||
make
|
||||
make run # or ./maturita
|
||||
make run # or ./graduately
|
||||
make bundle # AppImage / Windows DLL folder
|
||||
make smoke # installers, content packs, builds availability
|
||||
```
|
||||
|
|
@ -340,8 +340,8 @@ In an **MSYS2 UCRT64** terminal:
|
|||
```bash
|
||||
cd /c/Users/<name>/Graduately # C:\Users\<name>\Graduately in MSYS2
|
||||
make
|
||||
./maturita.exe
|
||||
make bundle # dist/maturita.exe can be double-clicked
|
||||
./graduately.exe
|
||||
make bundle # dist/graduately.exe can be double-clicked
|
||||
```
|
||||
|
||||
### Layout
|
||||
|
|
@ -382,7 +382,7 @@ iOS from source (Xcode 26, iOS 26+ / Liquid Glass):
|
|||
open Maturita.xcworkspace # at the repo root
|
||||
# Simulator: pick an iPhone and Run, nothing else needed (content is
|
||||
# extracted from the C sources during the build). Device: pick your Team.
|
||||
# or: make ios # unsigned IPA at dist-ios/maturita-ios.ipa
|
||||
# or: make ios # unsigned IPA at dist-ios/graduately-ios.ipa
|
||||
```
|
||||
|
||||
The workspace points at `ios/Maturita.xcodeproj` and `macos/Maturita.xcodeproj`.
|
||||
|
|
|
|||
|
|
@ -91,9 +91,9 @@ class Updater(private val app: Application) {
|
|||
val remote = remoteAndroidCommit(atom, head)
|
||||
// Pin the download to the commit: the branch-named URL can be
|
||||
// served from a stale CDN cache (even a cached 404).
|
||||
val url = "https://raw.githubusercontent.com/$repo/$head/maturita-android.apk"
|
||||
val url = "https://raw.githubusercontent.com/$repo/$head/graduately-android.apk"
|
||||
val dir = File(app.cacheDir, "updates").apply { mkdirs() }
|
||||
val apk = File(dir, "maturita.apk")
|
||||
val apk = File(dir, "graduately.apk")
|
||||
download(url, apk)
|
||||
if (!isOurApk(apk)) {
|
||||
apk.delete()
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ if not exist "assets\app-icon.ico" (
|
|||
)
|
||||
|
||||
REM --- 4. Compile resources + sources ---------------------------------------
|
||||
echo Building maturita.exe with MSVC...
|
||||
echo Building graduately.exe with MSVC...
|
||||
if not exist build mkdir build
|
||||
rc /nologo /fo build\maturita.res data\windows\maturita.rc
|
||||
if errorlevel 1 (
|
||||
|
|
@ -84,7 +84,7 @@ if errorlevel 1 (
|
|||
|
||||
cl /nologo /O2 /MD /W3 /std:c11 /I src /D_CRT_SECURE_NO_WARNINGS ^
|
||||
%GTK_CFLAGS% src\*.c build\maturita.res ^
|
||||
/Fe:maturita.exe /Fo:build\ ^
|
||||
/Fe:graduately.exe /Fo:build\ ^
|
||||
/link /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup %GTK_LIBS%
|
||||
|
||||
if errorlevel 1 (
|
||||
|
|
@ -96,6 +96,6 @@ if not exist icons\hicolor\512x512\apps mkdir icons\hicolor\512x512\apps
|
|||
copy /Y assets\app-icon.png icons\hicolor\512x512\apps\maturita.png >nul
|
||||
|
||||
echo.
|
||||
echo Built maturita.exe ^(icon embedded from assets\app-icon.ico^)
|
||||
echo Run it from this terminal with: maturita.exe
|
||||
echo Or use run-windows.bat / double-click maturita.exe.
|
||||
echo Built graduately.exe ^(icon embedded from assets\app-icon.ico^)
|
||||
echo Run it from this terminal with: graduately.exe
|
||||
echo Or use run-windows.bat / double-click graduately.exe.
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
--- 2026-09-23
|
||||
cs: Repozitář se jmenuje Graduately (GitHub i Forgejo); instalátory a updater míří tam
|
||||
cs: Balíčky a instalátory se jmenují graduately-* (už ne maturita-*)
|
||||
cs: Aplikace se jmenuje Graduately; úvod stále říká „Maturita? To dáme.“
|
||||
cs: Kompletní maturitní četba (82 knih) se zápisky, kvízem a sestavením děje
|
||||
cs: Studium knih: nejdřív procvičení (kvíz / sestavte děj), pak zápisky
|
||||
|
|
@ -16,6 +17,7 @@ cs: Větší a čitelnější rozhraní na Macu
|
|||
cs: Opravy výběru slov v dialogu a otevření knihy z vyhledávání
|
||||
cs: Oprava zrcadlení na Forgejo (edu/Graduately, plná historie, force-push)
|
||||
en: Repository renamed to Graduately (GitHub and Forgejo); installers and updater follow
|
||||
en: Packages and installers are now graduately-* (no more maturita-*)
|
||||
en: The app is now Graduately; the welcome line still says “Maturita? We've got this.”
|
||||
en: Full maturita reading list (82 books) with notes, quiz, and plot ordering
|
||||
en: Book study flow: practice first (quiz / order the plot), then notes
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ GenericName=Graduately study app
|
|||
GenericName[cs]=Příprava na maturitu
|
||||
Comment=Educational GTK app for Czech maturita exam preparation
|
||||
Comment[cs]=Vzdělávací GTK aplikace pro přípravu na maturitu
|
||||
Exec=maturita
|
||||
Exec=graduately
|
||||
Icon=maturita
|
||||
Terminal=false
|
||||
Categories=Education;GTK;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
/* Windows application icon embedded into maturita.exe.
|
||||
/* Windows application icon embedded into graduately.exe.
|
||||
* The first ICON resource becomes the Explorer / taskbar icon. */
|
||||
1 ICON "../../assets/app-icon.ico"
|
||||
|
|
|
|||
|
|
@ -31,14 +31,14 @@
|
|||
<p>Klepni na tlačítko. Až se APK stáhne, otevři ho a povol instalaci z neznámých zdrojů.</p>
|
||||
<p>
|
||||
<a class="btn" id="dl"
|
||||
href="https://raw.githubusercontent.com/pepaskopec-blip/Graduately/refs/heads/builds/maturita-android.apk">
|
||||
href="https://raw.githubusercontent.com/pepaskopec-blip/Graduately/refs/heads/builds/graduately-android.apk">
|
||||
Stáhnout APK
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
Když odkaz hlásí 404, otevři
|
||||
<a href="https://github.com/pepaskopec-blip/Graduately/tree/builds">větev builds</a>
|
||||
a stáhni <code>maturita-android.apk</code> odtud.
|
||||
a stáhni <code>graduately-android.apk</code> odtud.
|
||||
</p>
|
||||
<script>
|
||||
(function () {
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
.then(function (d) {
|
||||
if (d && d.sha) {
|
||||
document.getElementById("dl").href =
|
||||
"https://raw.githubusercontent.com/" + repo + "/" + d.sha + "/maturita-android.apk";
|
||||
"https://raw.githubusercontent.com/" + repo + "/" + d.sha + "/graduately-android.apk";
|
||||
}
|
||||
})
|
||||
.catch(function () {});
|
||||
BIN
installers/graduately-installer-android.zip
Normal file
BIN
installers/graduately-installer-android.zip
Normal file
Binary file not shown.
BIN
installers/graduately-installer-ios.zip
Normal file
BIN
installers/graduately-installer-ios.zip
Normal file
Binary file not shown.
|
|
@ -5,17 +5,17 @@
|
|||
# raw.githubusercontent.com, so this script looks up the tip of `builds`
|
||||
# and downloads that commit — not a stale AppImage from the last five minutes.
|
||||
#
|
||||
# Double-click the file (or run: sh maturita-installer-linux.sh).
|
||||
# Double-click the file (or run: sh graduately-installer-linux.sh).
|
||||
# The app updates itself from then on.
|
||||
|
||||
set -eu
|
||||
|
||||
REPO="pepaskopec-blip/Graduately"
|
||||
BRANCH="builds"
|
||||
ASSET="maturita-linux-x86_64.AppImage"
|
||||
ASSET="graduately-linux-x86_64.AppImage"
|
||||
|
||||
DEST_DIR="$HOME/Applications"
|
||||
DEST="$DEST_DIR/maturita.AppImage"
|
||||
DEST="$DEST_DIR/graduately.AppImage"
|
||||
DESKTOP_DIR="$HOME/.local/share/applications"
|
||||
ICON_DIR="$HOME/.local/share/icons/hicolor/512x512/apps"
|
||||
|
||||
|
|
@ -54,10 +54,13 @@ say "Looking up the latest build..."
|
|||
sha=$(builds_sha)
|
||||
[ ${#sha} -eq 40 ] || die "could not find the latest build on GitHub."
|
||||
URL="https://raw.githubusercontent.com/$REPO/$sha/$ASSET"
|
||||
LEGACY_URL="https://raw.githubusercontent.com/$REPO/$sha/maturita-linux-x86_64.AppImage"
|
||||
|
||||
say "Downloading build $(printf '%.7s' "$sha")..."
|
||||
curl -fL --progress-bar --max-time 1800 -o "$tmp/$ASSET" "$URL" ||
|
||||
die "the download failed. Check your internet connection."
|
||||
if ! curl -fL --progress-bar --max-time 1800 -o "$tmp/$ASSET" "$URL"; then
|
||||
curl -fL --progress-bar --max-time 1800 -o "$tmp/$ASSET" "$LEGACY_URL" ||
|
||||
die "the download failed. Check your internet connection."
|
||||
fi
|
||||
|
||||
say "Installing to $DEST"
|
||||
chmod +x "$tmp/$ASSET"
|
||||
BIN
installers/graduately-installer-linux.zip
Normal file
BIN
installers/graduately-installer-linux.zip
Normal file
Binary file not shown.
|
|
@ -11,7 +11,7 @@ set -eu
|
|||
|
||||
REPO="pepaskopec-blip/Graduately"
|
||||
BRANCH="builds"
|
||||
ASSET="maturita-macos-arm64.zip"
|
||||
ASSET="graduately-macos-arm64.zip"
|
||||
|
||||
# An .app has no TTY; show dialogs so a regular user never needs Terminal.
|
||||
GUI=0
|
||||
|
|
@ -97,13 +97,27 @@ fi
|
|||
sha=$(builds_sha)
|
||||
[ ${#sha} -eq 40 ] || die "Nepodařilo se najít aktuální verzi na GitHubu."
|
||||
URL="https://raw.githubusercontent.com/$REPO/$sha/$ASSET"
|
||||
LEGACY_ASSET="maturita-macos-arm64.zip"
|
||||
LEGACY_URL="https://raw.githubusercontent.com/$REPO/$sha/$LEGACY_ASSET"
|
||||
|
||||
download_ok=0
|
||||
if [ "$GUI" = 1 ]; then
|
||||
curl -fsSL --max-time 1800 -o "$tmp/$ASSET" "$URL" ||
|
||||
if curl -fsSL --max-time 1800 -o "$tmp/$ASSET" "$URL"; then
|
||||
download_ok=1
|
||||
elif curl -fsSL --max-time 1800 -o "$tmp/$ASSET" "$LEGACY_URL"; then
|
||||
download_ok=1
|
||||
fi
|
||||
[ "$download_ok" = 1 ] ||
|
||||
die "Stažení se nezdařilo. Zkontrolujte internet a zkuste to znovu."
|
||||
else
|
||||
say "Downloading build $(printf '%.7s' "$sha")..."
|
||||
curl -fL --progress-bar --max-time 1800 -o "$tmp/$ASSET" "$URL" ||
|
||||
if curl -fL --progress-bar --max-time 1800 -o "$tmp/$ASSET" "$URL"; then
|
||||
download_ok=1
|
||||
elif curl -fL --progress-bar --max-time 1800 -o "$tmp/$ASSET" "$LEGACY_URL"; then
|
||||
say "(legacy package name)"
|
||||
download_ok=1
|
||||
fi
|
||||
[ "$download_ok" = 1 ] ||
|
||||
die "Stažení se nezdařilo. Zkontrolujte internet a zkuste to znovu."
|
||||
say "Unpacking..."
|
||||
fi
|
||||
BIN
installers/graduately-installer-macos.zip
Normal file
BIN
installers/graduately-installer-macos.zip
Normal file
Binary file not shown.
|
|
@ -10,7 +10,7 @@ rem Double-click the file to run it. The app updates itself from then on.
|
|||
setlocal EnableDelayedExpansion
|
||||
set "REPO=pepaskopec-blip/Graduately"
|
||||
set "BRANCH=builds"
|
||||
set "ASSET=maturita-windows-x64.zip"
|
||||
set "ASSET=graduately-windows-x64.zip"
|
||||
set "DEST=%LOCALAPPDATA%\Programs\Graduately"
|
||||
|
||||
echo Installing Graduately
|
||||
|
|
@ -19,7 +19,7 @@ echo ---------------------
|
|||
where curl >nul 2>&1 || goto :no_tools
|
||||
where tar >nul 2>&1 || goto :no_tools
|
||||
|
||||
set "TMP_DIR=%TEMP%\maturita-installer"
|
||||
set "TMP_DIR=%TEMP%\graduately-installer"
|
||||
rmdir /s /q "%TMP_DIR%" 2>nul
|
||||
mkdir "%TMP_DIR%" || goto :fail_tmp
|
||||
|
||||
|
|
@ -28,9 +28,11 @@ set "SHA="
|
|||
for /f "usebackq delims=" %%S in (`powershell -NoProfile -ExecutionPolicy Bypass -Command "$r = & curl.exe -fsSL --max-time 20 'https://github.com/%REPO%/commits/%BRANCH%.atom'; if ($r -match 'Commit/([0-9a-f]{40})') { $Matches[1] }"`) do set "SHA=%%S"
|
||||
if not defined SHA goto :fail_download
|
||||
set "URL=https://raw.githubusercontent.com/%REPO%/%SHA%/%ASSET%"
|
||||
set "LEGACY_URL=https://raw.githubusercontent.com/%REPO%/%SHA%/maturita-windows-x64.zip"
|
||||
|
||||
echo Downloading build %SHA:~0,7%...
|
||||
curl -fL --progress-bar --max-time 1800 -o "%TMP_DIR%\%ASSET%" "%URL%" || goto :fail_download
|
||||
curl -fL --progress-bar --max-time 1800 -o "%TMP_DIR%\%ASSET%" "%URL%"
|
||||
if errorlevel 1 curl -fL --progress-bar --max-time 1800 -o "%TMP_DIR%\%ASSET%" "%LEGACY_URL%" || goto :fail_download
|
||||
|
||||
echo Installing to %DEST%
|
||||
if not exist "%DEST%" mkdir "%DEST%" || goto :fail_dest
|
||||
|
|
@ -40,13 +42,13 @@ tar -xf "%TMP_DIR%\%ASSET%" -C "%DEST%" || goto :fail_extract
|
|||
set "LNK=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Graduately.lnk"
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"$s=(New-Object -ComObject WScript.Shell).CreateShortcut('%LNK%');" ^
|
||||
"$s.TargetPath='%DEST%\maturita.exe';$s.WorkingDirectory='%DEST%';$s.Save()" >nul 2>&1
|
||||
"$s.TargetPath='%DEST%\graduately.exe';$s.WorkingDirectory='%DEST%';$s.Save()" >nul 2>&1
|
||||
|
||||
rmdir /s /q "%TMP_DIR%" 2>nul
|
||||
|
||||
echo.
|
||||
echo Done. Starting the app...
|
||||
start "" "%DEST%\maturita.exe"
|
||||
start "" "%DEST%\graduately.exe"
|
||||
exit /b 0
|
||||
|
||||
:no_tools
|
||||
BIN
installers/graduately-installer-windows.zip
Normal file
BIN
installers/graduately-installer-windows.zip
Normal file
Binary file not shown.
|
|
@ -46,14 +46,14 @@
|
|||
</p>
|
||||
<p>
|
||||
<a class="btn" id="dl"
|
||||
href="https://raw.githubusercontent.com/pepaskopec-blip/Graduately/refs/heads/builds/maturita-ios.ipa">
|
||||
href="https://raw.githubusercontent.com/pepaskopec-blip/Graduately/refs/heads/builds/graduately-ios.ipa">
|
||||
Stáhnout IPA
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
Když odkaz hlásí 404, otevři
|
||||
<a href="https://github.com/pepaskopec-blip/Graduately/tree/builds">větev builds</a>
|
||||
a stáhni <code>maturita-ios.ipa</code> odtud.
|
||||
a stáhni <code>graduately-ios.ipa</code> odtud.
|
||||
</p>
|
||||
<script>
|
||||
(function () {
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
.then(function (d) {
|
||||
if (d && d.sha) {
|
||||
document.getElementById("dl").href =
|
||||
"https://raw.githubusercontent.com/" + repo + "/" + d.sha + "/maturita-ios.ipa";
|
||||
"https://raw.githubusercontent.com/" + repo + "/" + d.sha + "/graduately-ios.ipa";
|
||||
}
|
||||
})
|
||||
.catch(function () {});
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -7,7 +7,7 @@ set -eu
|
|||
cd "$(dirname "$0")"
|
||||
here=$PWD
|
||||
|
||||
chmod +x maturita-installer-macos.command maturita-installer-linux.sh
|
||||
chmod +x graduately-installer-macos.command graduately-installer-linux.sh
|
||||
|
||||
tmp=$(mktemp -d)
|
||||
trap 'rm -rf "$tmp"' EXIT INT TERM
|
||||
|
|
@ -15,25 +15,25 @@ trap 'rm -rf "$tmp"' EXIT INT TERM
|
|||
app="$tmp/Nainstalovat Graduately.app"
|
||||
mkdir -p "$app/Contents/MacOS"
|
||||
cp macos/Info.plist "$app/Contents/Info.plist"
|
||||
cp maturita-installer-macos.command "$app/Contents/MacOS/installer"
|
||||
cp graduately-installer-macos.command "$app/Contents/MacOS/installer"
|
||||
chmod +x "$app/Contents/MacOS/installer"
|
||||
|
||||
rm -f "$here/maturita-installer-macos.zip"
|
||||
(cd "$tmp" && zip -r -q "$here/maturita-installer-macos.zip" \
|
||||
rm -f "$here/graduately-installer-macos.zip"
|
||||
(cd "$tmp" && zip -r -q "$here/graduately-installer-macos.zip" \
|
||||
"Nainstalovat Graduately.app")
|
||||
|
||||
zip -q -FS maturita-installer-windows.zip maturita-installer-windows.cmd
|
||||
zip -q -FS maturita-installer-linux.zip maturita-installer-linux.sh
|
||||
zip -q -FS graduately-installer-windows.zip graduately-installer-windows.cmd
|
||||
zip -q -FS graduately-installer-linux.zip graduately-installer-linux.sh
|
||||
|
||||
# Browsers download a zip; they render .html as a text tab on GitHub.
|
||||
# The page looks up the tip of `builds` so Fastly cannot serve a cached 404
|
||||
# for the branch-named APK URL.
|
||||
cp maturita-android.html "$tmp/Stahnout Graduately.html"
|
||||
rm -f "$here/maturita-installer-android.zip"
|
||||
(cd "$tmp" && zip -q -FS "$here/maturita-installer-android.zip" \
|
||||
cp graduately-android.html "$tmp/Stahnout Graduately.html"
|
||||
rm -f "$here/graduately-installer-android.zip"
|
||||
(cd "$tmp" && zip -q -FS "$here/graduately-installer-android.zip" \
|
||||
"Stahnout Graduately.html")
|
||||
|
||||
cp maturita-ios.html "$tmp/Jak nainstalovat Graduately.html"
|
||||
rm -f "$here/maturita-installer-ios.zip"
|
||||
(cd "$tmp" && zip -q -FS "$here/maturita-installer-ios.zip" \
|
||||
cp graduately-ios.html "$tmp/Jak nainstalovat Graduately.html"
|
||||
rm -f "$here/graduately-installer-ios.zip"
|
||||
(cd "$tmp" && zip -q -FS "$here/graduately-installer-ios.zip" \
|
||||
"Jak nainstalovat Graduately.html")
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ final class Updater {
|
|||
do {
|
||||
let atom = try self.get("https://github.com/\(self.repo)/commits/\(self.branch).atom")
|
||||
let tip = self.atomTip(atom) ?? ""
|
||||
let page = "https://github.com/\(self.repo)/raw/main/installers/maturita-ios.html"
|
||||
let page = "https://github.com/\(self.repo)/raw/main/installers/graduately-ios.html"
|
||||
DispatchQueue.main.async {
|
||||
if let url = URL(string: page) {
|
||||
UIApplication.shared.open(url)
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ final class Updater {
|
|||
let url = "https://raw.githubusercontent.com/\(self.repo)/\(tip)/\(zipName)"
|
||||
let cache = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first
|
||||
?? URL(fileURLWithPath: NSTemporaryDirectory())
|
||||
let staging = cache.appendingPathComponent("maturita-update-\(ProcessInfo.processInfo.processIdentifier)")
|
||||
let staging = cache.appendingPathComponent("graduately-update-\(ProcessInfo.processInfo.processIdentifier)")
|
||||
try? FileManager.default.removeItem(at: staging)
|
||||
try FileManager.default.createDirectory(at: staging, withIntermediateDirectories: true)
|
||||
let archive = staging.appendingPathComponent(zipName)
|
||||
|
|
@ -90,9 +90,9 @@ final class Updater {
|
|||
|
||||
private static func assetName() -> String {
|
||||
#if arch(arm64)
|
||||
return "maturita-macos-arm64.zip"
|
||||
return "graduately-macos-arm64.zip"
|
||||
#else
|
||||
return "maturita-macos-x86_64.zip"
|
||||
return "graduately-macos-x86_64.zip"
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ final class Updater {
|
|||
}
|
||||
|
||||
private func writeSwapScript() -> URL {
|
||||
let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("maturita-swift-update.sh")
|
||||
let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("graduately-swift-update.sh")
|
||||
let body = """
|
||||
#!/bin/sh
|
||||
if [ -z "$MATURITA_UPDATE_DETACHED" ]; then
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
@echo off
|
||||
setlocal
|
||||
|
||||
REM Launch a locally built maturita.exe with the GTK4 runtime on PATH, so the
|
||||
REM Launch a locally built graduately.exe with the GTK4 runtime on PATH, so the
|
||||
REM app can be started by double-clicking even when GTK is not installed
|
||||
REM system-wide.
|
||||
|
||||
if not defined GTK_ROOT set "GTK_ROOT=C:\gtk"
|
||||
set "PATH=%GTK_ROOT%\bin;%PATH%"
|
||||
|
||||
if not exist "%~dp0maturita.exe" (
|
||||
echo [error] maturita.exe not found next to this script.
|
||||
if not exist "%~dp0graduately.exe" (
|
||||
echo [error] graduately.exe not found next to this script.
|
||||
echo Build it first with build-windows.bat.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
start "" /D "%~dp0" "%~dp0maturita.exe"
|
||||
start "" /D "%~dp0" "%~dp0graduately.exe"
|
||||
|
|
|
|||
|
|
@ -33,5 +33,5 @@ fi
|
|||
|
||||
mkdir -p "$root/ios/Payload"
|
||||
cp -R "$app" "$root/ios/Payload/Graduately.app"
|
||||
(cd "$root/ios" && zip -r -q "$root/dist-ios/maturita-ios.ipa" Payload)
|
||||
echo "wrote $root/dist-ios/maturita-ios.ipa"
|
||||
(cd "$root/ios" && zip -r -q "$root/dist-ios/graduately-ios.ipa" Payload)
|
||||
echo "wrote $root/dist-ios/graduately-ios.ipa"
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@ case "$ARCH" in
|
|||
;;
|
||||
esac
|
||||
|
||||
OUT_NAME="maturita-linux-${ARCH}.AppImage"
|
||||
OUT_NAME="graduately-linux-${ARCH}.AppImage"
|
||||
APPDIR="$ROOT/dist/AppDir"
|
||||
TOOLS="$ROOT/dist/tools"
|
||||
# Real 512×512 PNG (assets/app-icon.png is 1024×1024 and linuxdeploy rejects it).
|
||||
ICON_512="$ROOT/data/share/icons/hicolor/512x512/apps/maturita.png"
|
||||
|
||||
echo "==> Building maturita"
|
||||
echo "==> Building graduately"
|
||||
make -C "$ROOT" clean
|
||||
make -C "$ROOT"
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ mkdir -p "$APPDIR/usr/bin" \
|
|||
"$APPDIR/icons/hicolor/512x512/apps" \
|
||||
"$APPDIR/share"
|
||||
|
||||
cp -f "$ROOT/maturita" "$APPDIR/usr/bin/maturita"
|
||||
cp -f "$ROOT/graduately" "$APPDIR/usr/bin/graduately"
|
||||
cp -f "$ROOT/data/style.css" "$APPDIR/style.css"
|
||||
cp -f "$ROOT/data/changelog.txt" "$APPDIR/changelog.txt"
|
||||
cp -f "$ICON_512" "$APPDIR/icons/hicolor/512x512/apps/maturita.png"
|
||||
|
|
@ -48,7 +48,7 @@ cp -f "$ROOT/data/share/applications/org.maturita.Maturita.desktop" \
|
|||
cp -f "$ROOT/data/share/applications/org.maturita.Maturita.desktop" \
|
||||
"$APPDIR/org.maturita.Maturita.desktop"
|
||||
# linuxdeploy expects Icon= without path and a matching PNG at AppDir root.
|
||||
sed -i.bak 's|^Exec=.*|Exec=maturita|' "$APPDIR/org.maturita.Maturita.desktop"
|
||||
sed -i.bak 's|^Exec=.*|Exec=graduately|' "$APPDIR/org.maturita.Maturita.desktop"
|
||||
sed -i.bak 's|^Icon=.*|Icon=maturita|' "$APPDIR/org.maturita.Maturita.desktop"
|
||||
rm -f "$APPDIR/org.maturita.Maturita.desktop.bak"
|
||||
|
||||
|
|
@ -92,7 +92,7 @@ export PATH="$TOOLS:$PATH"
|
|||
|
||||
run_linuxdeploy \
|
||||
--appdir "$APPDIR" \
|
||||
--executable "$APPDIR/usr/bin/maturita" \
|
||||
--executable "$APPDIR/usr/bin/graduately" \
|
||||
--desktop-file "$APPDIR/org.maturita.Maturita.desktop" \
|
||||
--icon-file "$APPDIR/maturita.png" \
|
||||
--plugin gtk \
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ case "$arch" in
|
|||
esac
|
||||
|
||||
dd="$root/macos/DerivedData"
|
||||
out_zip="maturita-macos-${arch_tag}.zip"
|
||||
out_zip="graduately-macos-${arch_tag}.zip"
|
||||
mkdir -p "$dd" "$root/dist"
|
||||
|
||||
xcodebuild \
|
||||
|
|
|
|||
|
|
@ -26,11 +26,11 @@ expect_zip() {
|
|||
bad "$zip missing $want (has: $(unzip -Z1 "$zip" | tr '\n' ' '))"
|
||||
fi
|
||||
}
|
||||
expect_zip installers/maturita-installer-macos.zip "Nainstalovat Graduately.app/Contents/MacOS/installer"
|
||||
expect_zip installers/maturita-installer-linux.zip "maturita-installer-linux.sh"
|
||||
expect_zip installers/maturita-installer-windows.zip "maturita-installer-windows.cmd"
|
||||
expect_zip installers/maturita-installer-android.zip "Stahnout Graduately.html"
|
||||
expect_zip installers/maturita-installer-ios.zip "Jak nainstalovat Graduately.html"
|
||||
expect_zip installers/graduately-installer-macos.zip "Nainstalovat Graduately.app/Contents/MacOS/installer"
|
||||
expect_zip installers/graduately-installer-linux.zip "graduately-installer-linux.sh"
|
||||
expect_zip installers/graduately-installer-windows.zip "graduately-installer-windows.cmd"
|
||||
expect_zip installers/graduately-installer-android.zip "Stahnout Graduately.html"
|
||||
expect_zip installers/graduately-installer-ios.zip "Jak nainstalovat Graduately.html"
|
||||
|
||||
say "Extract content.json"
|
||||
tmp=$(mktemp)
|
||||
|
|
@ -55,14 +55,14 @@ ok "content packs"
|
|||
rm -f "$tmp"
|
||||
|
||||
say "GTK binary"
|
||||
if [[ -x ./maturita ]]; then
|
||||
./maturita --help >/dev/null
|
||||
ok "maturita --help"
|
||||
if [[ -x ./graduately ]]; then
|
||||
./graduately --help >/dev/null
|
||||
ok "graduately --help"
|
||||
else
|
||||
say "Building GTK binary"
|
||||
make -j"$(sysctl -n hw.ncpu 2>/dev/null || nproc 2>/dev/null || echo 2)"
|
||||
./maturita --help >/dev/null
|
||||
ok "maturita --help after make"
|
||||
./graduately --help >/dev/null
|
||||
ok "graduately --help after make"
|
||||
fi
|
||||
|
||||
say "Published builds tip"
|
||||
|
|
@ -73,20 +73,29 @@ sha=$(curl -fsSL --max-time 20 \
|
|||
if [[ ${#sha} -eq 40 ]]; then
|
||||
ok "builds tip ${sha:0:7}"
|
||||
for asset in \
|
||||
maturita-macos-arm64.zip \
|
||||
maturita-windows-x64.zip \
|
||||
maturita-linux-x86_64.AppImage \
|
||||
maturita-android.apk \
|
||||
maturita-ios.ipa \
|
||||
graduately-macos-arm64.zip \
|
||||
graduately-windows-x64.zip \
|
||||
graduately-linux-x86_64.AppImage \
|
||||
graduately-android.apk \
|
||||
graduately-ios.ipa \
|
||||
VERSION
|
||||
do
|
||||
code=$(curl -sI -o /dev/null -w '%{http_code}' --max-time 30 \
|
||||
"https://raw.githubusercontent.com/$REPO/$sha/$asset")
|
||||
if [[ "$code" == "200" ]]; then
|
||||
ok "$asset ($code)"
|
||||
else
|
||||
bad "$asset HTTP $code"
|
||||
continue
|
||||
fi
|
||||
legacy="${asset/graduately/maturita}"
|
||||
if [[ "$legacy" != "$asset" ]]; then
|
||||
code2=$(curl -sI -o /dev/null -w '%{http_code}' --max-time 30 \
|
||||
"https://raw.githubusercontent.com/$REPO/$sha/$legacy")
|
||||
if [[ "$code2" == "200" ]]; then
|
||||
ok "$asset not yet; legacy $legacy still published ($code2)"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
bad "$asset HTTP $code"
|
||||
done
|
||||
else
|
||||
bad "could not resolve builds tip SHA"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
TMP="$(mktemp -d "${TMPDIR:-/tmp}/maturita-bundle-commit.XXXXXX")"
|
||||
TMP="$(mktemp -d "${TMPDIR:-/tmp}/graduately-bundle-commit.XXXXXX")"
|
||||
trap 'rm -rf "$TMP"' EXIT
|
||||
|
||||
fail() {
|
||||
|
|
|
|||
20
src/update.c
20
src/update.c
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
#define UPDATE_ATOM_URL "https://github.com/" UPDATE_REPO \
|
||||
"/commits/" UPDATE_BRANCH ".atom"
|
||||
#define UPDATE_STAGING_DIR ".maturita-update"
|
||||
#define UPDATE_STAGING_DIR ".graduately-update"
|
||||
|
||||
#ifdef _WIN32
|
||||
#define NULL_DEVICE "NUL"
|
||||
|
|
@ -215,15 +215,15 @@ static char *short_commit(const char *sha) {
|
|||
* none. Only arm64 macOS and x86_64 Linux / Windows are built. */
|
||||
static const char *asset_name(void) {
|
||||
#if defined(_WIN32)
|
||||
return "maturita-windows-x64.zip";
|
||||
return "graduately-windows-x64.zip";
|
||||
#elif defined(__APPLE__)
|
||||
#if defined(__aarch64__) || defined(__arm64__)
|
||||
return "maturita-macos-arm64.zip";
|
||||
return "graduately-macos-arm64.zip";
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
#elif defined(__x86_64__)
|
||||
return "maturita-linux-x86_64.AppImage";
|
||||
return "graduately-linux-x86_64.AppImage";
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
|
|
@ -250,7 +250,7 @@ static InstallKind install_target(char **target_out, char **parent_out) {
|
|||
#endif
|
||||
|
||||
#ifdef __APPLE__
|
||||
/* .../Graduately.app/Contents/MacOS/maturita -> .../Graduately.app */
|
||||
/* .../Graduately.app/Contents/MacOS/Graduately -> .../Graduately.app */
|
||||
if (!target && exe) {
|
||||
char *macos_dir = g_path_get_dirname(exe);
|
||||
char *contents = g_path_get_dirname(macos_dir);
|
||||
|
|
@ -329,7 +329,7 @@ void update_clear_staging(void) {
|
|||
char *target = NULL;
|
||||
char *parent = NULL;
|
||||
char *cache = g_build_filename(g_get_user_cache_dir(),
|
||||
"maturita-update", NULL);
|
||||
"graduately-update", NULL);
|
||||
|
||||
remove_tree(cache);
|
||||
g_free(cache);
|
||||
|
|
@ -571,7 +571,7 @@ static const char *swap_script_body(InstallKind kind) {
|
|||
" goto wait\r\n"
|
||||
")\r\n"
|
||||
"xcopy \"%SOURCE%\\*\" \"%TARGET%\\\" /E /I /Y /Q >nul\r\n"
|
||||
"start \"\" \"%TARGET%\\maturita.exe\"\r\n"
|
||||
"start \"\" \"%TARGET%\\graduately.exe\"\r\n"
|
||||
"rmdir /s /q \"%STAGING%\"\r\n"
|
||||
"del \"%~f0\"\r\n";
|
||||
case INSTALL_UNSUPPORTED:
|
||||
|
|
@ -582,8 +582,8 @@ static const char *swap_script_body(InstallKind kind) {
|
|||
|
||||
static gboolean write_swap_script(InstallKind kind) {
|
||||
const char *body = swap_script_body(kind);
|
||||
const char *name = kind == INSTALL_WINDOWS_DIR ? "maturita-update.cmd"
|
||||
: "maturita-update.sh";
|
||||
const char *name = kind == INSTALL_WINDOWS_DIR ? "graduately-update.cmd"
|
||||
: "graduately-update.sh";
|
||||
|
||||
if (!body)
|
||||
return FALSE;
|
||||
|
|
@ -765,7 +765,7 @@ static void update_start_download(void) {
|
|||
* from a GUI app even when the installer could put a .app there. */
|
||||
g_free(up.staging);
|
||||
up.staging = g_build_filename(g_get_user_cache_dir(),
|
||||
"maturita-update", NULL);
|
||||
"graduately-update", NULL);
|
||||
remove_tree(up.staging);
|
||||
if (g_mkdir_with_parents(up.staging, 0755) != 0 && parent) {
|
||||
g_free(up.staging);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue