%YAML 1.1
---
# Snapcraft Recipe for gallery-dl
# ------------------------------
# This file is in the YAML data serialization format:
# http://yaml.org
# For the spec. of writing this file refer the following documentation:
# * The snapcraft format
#   https://docs.snapcraft.io/the-snapcraft-format/8337
# * Snap Documentation
#   https://docs.snapcraft.io
# * Topics under the doc category in the Snapcraft Forum
#   https://forum.snapcraft.io/c/doc
# For support refer to the snapcraft section in the Snapcraft Forum:
# https://forum.snapcraft.io/c/snapcraft
name: gallery-dl
license: GPL-2.0
base: core22
summary: Download image-galleries and -collections from several image hosting sites
description: |
  `gallery-dl` is a command-line program to download image-galleries and -collections from several image hosting sites (see [Supported Sites][1]). It is a cross-platform tool with many configuration options and powerful filenaming capabilities.

  [1]: https://github.com/mikf/gallery-dl/blob/master/docs/supportedsites.rst

adopt-info: gallery-dl
confinement: strict
grade: stable

# Configuration access
plugs:
  config-gallery-dl:
    interface: personal-files
    read:
    - $HOME/.config/gallery-dl
    - $HOME/.gallery-dl.conf
  etc-gallery-dl:
    interface: system-files
    read:
    - /etc/gallery-dl.conf
  dot-netrc:
    interface: personal-files
    read:
    - $HOME/.netrc

parts:
  # Launcher programs to fix problems at runtime
  launchers:
    source: snap/local/launchers
    plugin: dump
    organize:
      '*': bin/

  gallery-dl:
    source: .
    override-pull: |
      craftctl default
      ${CRAFT_PROJECT_DIR}/snap/local/scriptlets/selective-checkout

    plugin: python
    build-packages:
    - make

    # selective-checkout scriptlet dependencies
    - curl
    - git
    - jq
    - sed
    python-packages:
    - yt-dlp[default]
    override-build: |
      # build manpages and bash completion
      make man completion

      craftctl default

  ffmpeg:
    plugin: nil
    stage-packages:
    - ffmpeg
    - libslang2

apps:
  gallery-dl:
    command-chain:
    - bin/gallery-dl-launch
    command: bin/gallery-dl
    completer: share/bash-completion/completions/gallery-dl
    plugs:
      # For `xdg-open` command access for opening OAuth authentication webpages
      - desktop
      # Storage access
      - home
      - removable-media
      # Network access
      - network
      # For network service for receiving OAuth callback tokens
      - network-bind
    environment:
      LANG: C.UTF-8
      LC_ALL: C.UTF-8

      # Satisfy FFmpeg's libpulsecommon dependency
      LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pulseaudio
