10 changed files with 222 additions and 3 deletions
@ -0,0 +1,4 @@
|
||||
#!/bin/sh |
||||
set -eu |
||||
export PYTHONPATH="/app/share/cellar${PYTHONPATH:+:$PYTHONPATH}" |
||||
exec python3 /app/share/cellar/cellar-gtk.py "$@" |
||||
@ -0,0 +1,11 @@
|
||||
[Desktop Entry] |
||||
Type=Application |
||||
Name=Cellar |
||||
Comment=Browse and restore Bottle archives from a Cellar server |
||||
Exec=cellar |
||||
Icon=net.enne2.Cellar |
||||
Terminal=false |
||||
Categories=Utility;Archiving;GTK; |
||||
Keywords=bottles;backup;archive;restore;wine; |
||||
StartupNotify=true |
||||
StartupWMClass=net.enne2.Cellar |
||||
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<component type="desktop-application"> |
||||
<id>net.enne2.Cellar</id> |
||||
<name>Cellar</name> |
||||
<summary>Browse and restore Bottle archives from a self-hosted server</summary> |
||||
<metadata_license>CC0-1.0</metadata_license> |
||||
<project_license>LicenseRef-proprietary</project_license> |
||||
<developer id="net.enne2"> |
||||
<name>Matteo Benedetto</name> |
||||
</developer> |
||||
<launchable type="desktop-id">net.enne2.Cellar.desktop</launchable> |
||||
<url type="homepage">https://git.enne2.net/enne2/cellar</url> |
||||
<url type="bugtracker">https://git.enne2.net/enne2/cellar/issues</url> |
||||
<provides> |
||||
<binary>cellar</binary> |
||||
</provides> |
||||
<description> |
||||
<p>Cellar is a small GTK application for browsing and restoring archives stored on a self-hosted Bottle archive server.</p> |
||||
<p>It can refresh the remote catalog, search archives locally, and reinstall archived Bottles environments with progress feedback.</p> |
||||
</description> |
||||
<categories> |
||||
<category>Utility</category> |
||||
<category>Archiving</category> |
||||
</categories> |
||||
<screenshots> |
||||
<screenshot type="default"> |
||||
<caption>Cellar application artwork</caption> |
||||
<image type="source" width="1024" height="1024">https://git.enne2.net/enne2/cellar/raw/branch/master/cellar.jpg</image> |
||||
</screenshot> |
||||
</screenshots> |
||||
<branding> |
||||
<color type="primary" scheme_preference="light">#5b0f11</color> |
||||
<color type="primary" scheme_preference="dark">#d8b27d</color> |
||||
</branding> |
||||
<content_rating type="oars-1.1" /> |
||||
<releases> |
||||
<release version="1.0.0" date="2026-03-08" /> |
||||
</releases> |
||||
</component> |
||||
|
After Width: | Height: | Size: 739 KiB |
@ -0,0 +1,27 @@
|
||||
app-id: net.enne2.Cellar |
||||
branch: stable |
||||
runtime: org.gnome.Platform |
||||
runtime-version: '47' |
||||
sdk: org.gnome.Sdk |
||||
command: cellar |
||||
finish-args: |
||||
- --share=ipc |
||||
- --share=network |
||||
- --socket=wayland |
||||
- --socket=fallback-x11 |
||||
- --device=dri |
||||
- --filesystem=home |
||||
modules: |
||||
- name: cellar |
||||
buildsystem: simple |
||||
build-commands: |
||||
- install -Dm755 flatpak/cellar-launcher.sh /app/bin/cellar |
||||
- install -Dm644 cellar-gtk.py /app/share/cellar/cellar-gtk.py |
||||
- install -Dm644 client.py /app/share/cellar/client.py |
||||
- install -Dm644 cellar.jpg /app/share/cellar/cellar.jpg |
||||
- install -Dm644 flatpak/net.enne2.Cellar.desktop /app/share/applications/net.enne2.Cellar.desktop |
||||
- install -Dm644 flatpak/net.enne2.Cellar.metainfo.xml /app/share/metainfo/net.enne2.Cellar.metainfo.xml |
||||
- install -Dm644 flatpak/net.enne2.Cellar.png /app/share/icons/hicolor/512x512/apps/net.enne2.Cellar.png |
||||
sources: |
||||
- type: dir |
||||
path: . |
||||
@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash |
||||
set -euo pipefail |
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
||||
APP_ID="net.enne2.Cellar" |
||||
BRANCH="stable" |
||||
MANIFEST="${ROOT_DIR}/net.enne2.Cellar.yaml" |
||||
BUILD_DIR="${ROOT_DIR}/flatpak-build" |
||||
REPO_DIR="${ROOT_DIR}/flatpak-repo" |
||||
BUNDLE_PATH="${ROOT_DIR}/dist/${APP_ID}.flatpak" |
||||
|
||||
if ! command -v flatpak-builder >/dev/null 2>&1; then |
||||
echo "flatpak-builder not found. Install it first." >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
if ! command -v flatpak >/dev/null 2>&1; then |
||||
echo "flatpak not found. Install it first." >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
mkdir -p "${ROOT_DIR}/dist" |
||||
rm -rf "${BUILD_DIR}" |
||||
mkdir -p "${REPO_DIR}" |
||||
|
||||
flatpak-builder \ |
||||
--force-clean \ |
||||
--repo="${REPO_DIR}" \ |
||||
"${BUILD_DIR}" \ |
||||
"${MANIFEST}" |
||||
|
||||
flatpak build-bundle "${REPO_DIR}" "${BUNDLE_PATH}" "${APP_ID}" "${BRANCH}" |
||||
|
||||
cat <<EOF |
||||
|
||||
Flatpak repository ready: |
||||
${REPO_DIR} |
||||
|
||||
Flatpak bundle ready: |
||||
${BUNDLE_PATH} |
||||
|
||||
Example private remote setup: |
||||
flatpak remote-add --if-not-exists --user --no-gpg-verify brain-local http://brain.local/flatpak/cellar |
||||
flatpak install --user brain-local ${APP_ID} |
||||
EOF |
||||
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash |
||||
set -euo pipefail |
||||
|
||||
if [[ $# -lt 2 || $# -gt 3 ]]; then |
||||
echo "Usage: $0 <host> <remote-path> [public-url]" >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
||||
REPO_DIR="${ROOT_DIR}/flatpak-repo" |
||||
HOST="$1" |
||||
REMOTE_PATH="$2" |
||||
PUBLIC_URL="${3:-}" |
||||
|
||||
if [[ ! -d "${REPO_DIR}" ]]; then |
||||
echo "Repository not found at ${REPO_DIR}. Run ./scripts/build-flatpak-repo.sh first." >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
if ! command -v rsync >/dev/null 2>&1; then |
||||
echo "rsync not found. Install it first." >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
rsync -av --delete "${REPO_DIR}/" "${HOST}:${REMOTE_PATH%/}/" |
||||
|
||||
if [[ -n "${PUBLIC_URL}" ]]; then |
||||
cat <<EOF |
||||
|
||||
Published to ${HOST}:${REMOTE_PATH} |
||||
|
||||
Clients can add the remote with: |
||||
flatpak remote-add --if-not-exists --user --no-gpg-verify brain-local ${PUBLIC_URL} |
||||
EOF |
||||
else |
||||
echo |
||||
echo "Published to ${HOST}:${REMOTE_PATH}" |
||||
fi |
||||
Loading…
Reference in new issue