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