name: overseerr
adopt-info: overseerr
license: MIT
summary: Request management and media discovery tool for the Plex ecosystem.
description: >
  Overseerr is a free and open source software application for managing requests for your media library.
  It integrates with your existing services such as Sonarr, Radarr and Plex!
base: core18
confinement: strict

architectures:
  - build-on: amd64
  - build-on: arm64
  - build-on: armhf

parts:
  overseerr:
    plugin: nodejs
    nodejs-version: '16.17.0'
    nodejs-package-manager: 'yarn'
    nodejs-yarn-version: v1.22.17
    build-packages:
      - git
      - on arm64:
          - build-essential
          - automake
          - python-gi
          - python-gi-dev
      - on armhf:
          - libatomic1
          - build-essential
          - automake
          - python-gi
          - python-gi-dev
    source: .
    override-pull: |
      snapcraftctl pull
      # Get information to determine snap grade and version
      git config --global --add safe.directory /data/parts/overseerr/src
      #setup yarn.rc
      echo "--install.frozen-lockfile\n--install.network-timeout 1000000" > .yarnrc
      BRANCH=$(git rev-parse --abbrev-ref HEAD)
      COMMIT=$(git rev-parse HEAD)
      COMMIT_SHORT=$(git rev-parse --short HEAD)
      VERSION='v'$(cat package.json | grep 'version' | head -1 | sed 's/.*"\(.*\)"\,/\1/')
      if [ "$VERSION" = "v0.1.0" ]; then
        SNAP_VERSION=$COMMIT_SHORT
        GRADE=stable
      else
        SNAP_VERSION=$VERSION
        GRADE=stable
      fi
      # Write COMMIT_TAG as it is needed durring the build process
      echo $COMMIT > commit.txt
      # Print debug info for build version
      echo "{\"commitShort\": \"$COMMIT_SHORT\", \
      \"version\": \"$VERSION\", \
      \"snapVersion\": \"$SNAP_VERSION\", \
      \"snapGrade\": \"$GRADE\", \
      \"branch\": \"$BRANCH\", \
      \"commit\": \"$COMMIT\"}"
      echo "{\"commitTag\": \"$COMMIT\"}" > committag.json
      # Set snap version and grade
      snapcraftctl set-version "$SNAP_VERSION"
      snapcraftctl set-grade "$GRADE"
    build-environment:
      - PATH: '$SNAPCRAFT_PART_BUILD/node_modules/.bin:$SNAPCRAFT_PART_BUILD/../npm/bin:$PATH'
      - CYPRESS_INSTALL_BINARY: '0'
    override-build: |
      set -e
      # Set COMMIT_TAG before the build begins
      export COMMIT_TAG=$(cat $SNAPCRAFT_PART_BUILD/commit.txt)
      snapcraftctl build
      yarn build
      # Copy files needed for staging
      cp $SNAPCRAFT_PART_BUILD/committag.json $SNAPCRAFT_PART_INSTALL/
      cp -R $SNAPCRAFT_PART_BUILD/.next $SNAPCRAFT_PART_INSTALL/
      cp -R $SNAPCRAFT_PART_BUILD/dist $SNAPCRAFT_PART_INSTALL/
      cp -R $SNAPCRAFT_PART_BUILD/node_modules $SNAPCRAFT_PART_INSTALL/
      # Remove .github and gitbook as it will fail snap lint
      rm -rf $SNAPCRAFT_PART_INSTALL/.github && rm $SNAPCRAFT_PART_INSTALL/.gitbook.yaml
    stage-packages:
      - on armhf:
          - libatomic1
    stage: [.next, ./*]
    prime: [.next, ./*]

apps:
  daemon:
    command: /bin/sh -c "cd $SNAP && node dist/index.js"
    daemon: simple
    restart-condition: on-failure
    restart-delay: 5s
    plugs:
      - home
      - network
      - network-bind
    environment:
      PATH: '$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH'
      OVERSEERR_SNAP: 'True'
      CONFIG_DIRECTORY: $SNAP_USER_COMMON
      LOG_LEVEL: 'debug'
      NODE_ENV: 'production'
