id: com.ccswitch.desktop

runtime: org.gnome.Platform
runtime-version: '46'
sdk: org.gnome.Sdk

command: cc-switch

finish-args:
  - --share=ipc
  - --share=network
  - --socket=wayland
  - --socket=fallback-x11
  - --device=dri
  # Tray icon permissions (required by Tauri tray-icon)
  - --talk-name=org.kde.StatusNotifierWatcher
  - --filesystem=xdg-run/tray-icon:create
  # GitHub Releases scenario: Users download and install manually.
  # For "download and run" convenience (needs read/write access to ~/.cc-switch, ~/.claude, ~/.claude.json, ~/.codex, ~/.gemini,
  # and supports custom directory overrides), we grant full Home access by default.
  # If you plan to publish on Flathub or prefer minimal permissions, replace this with more precise directory grants (see flatpak/README.md).
  - --filesystem=home

modules:
  # Required for libdbusmenu build (intltool was removed from GNOME SDK since 2019)
  - name: intltool
    cleanup:
      - "*"
    sources:
      - type: archive
        url: https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz
        sha256: 67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd

  # Required for tray icon support
  - name: libayatana-ido
    buildsystem: cmake-ninja
    config-opts:
      - -DENABLE_TESTS=NO
    sources:
      - type: git
        url: https://github.com/AyatanaIndicators/ayatana-ido.git
        tag: 0.10.4

  - name: libdbusmenu-gtk3
    buildsystem: autotools
    build-options:
      cflags: -Wno-error
    config-opts:
      - --with-gtk=3
      - --disable-dumper
      - --disable-static
      - --disable-nls
    sources:
      - type: archive
        url: https://launchpad.net/libdbusmenu/16.04/16.04.0/+download/libdbusmenu-16.04.0.tar.gz
        sha256: b9cc4a2acd74509435892823607d966d424bd9ad5d0b00938f27240a1bfa878a

  - name: libayatana-indicator
    buildsystem: cmake-ninja
    config-opts:
      - -DENABLE_TESTS=NO
      - -DENABLE_IDO=YES
    sources:
      - type: git
        url: https://github.com/AyatanaIndicators/libayatana-indicator.git
        tag: 0.9.4

  - name: libayatana-appindicator
    buildsystem: cmake-ninja
    config-opts:
      - -DENABLE_BINDINGS_MONO=NO
      - -DENABLE_BINDINGS_VALA=NO
    sources:
      - type: git
        url: https://github.com/AyatanaIndicators/libayatana-appindicator.git
        tag: 0.5.93

  - name: cc-switch
    buildsystem: simple
    sources:
      # Placed in flatpak/ directory by CI or local build script
      - type: file
        path: cc-switch.deb
      - type: file
        path: com.ccswitch.desktop.desktop
      - type: file
        path: com.ccswitch.desktop.metainfo.xml
      - type: file
        path: ../src-tauri/icons/128x128.png
    build-commands:
      - ar -x *.deb
      - tar -xf data.tar.*
      - cp -a usr/* /app/
      # Use our own desktop/metainfo/icon to align with Flatpak app id
      - rm -f /app/share/applications/*.desktop
      - install -Dm644 com.ccswitch.desktop.desktop /app/share/applications/com.ccswitch.desktop.desktop
      - install -Dm644 com.ccswitch.desktop.metainfo.xml /app/share/metainfo/com.ccswitch.desktop.metainfo.xml
      - install -Dm644 128x128.png /app/share/icons/hicolor/128x128/apps/com.ccswitch.desktop.png
