# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing,
#   software distributed under the License is distributed on an
#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#   KIND, either express or implied.  See the License for the
#   specific language governing permissions and limitations
#   under the License.
---
name: couchdb
version: 3.3.3
type: app
base: core22
license: Apache-2.0
summary: Official Apache CouchDB snap - a clustering document oriented database
description: |
  CouchDB is a database that completely embraces the web. Store your data with
  JSON documents. Access your documents and query your indexes with your web
  browser, via HTTP. Index, combine, and transform your documents with
  JavaScript.
assumes: [command-chain, common-data-dir]
grade: stable
confinement: strict

architectures:
  - build-on: [amd64]
  - build-on: [armhf]
  - build-on: [arm64]
  - build-on: [s390x]
  - build-on: [ppc64el]

parts:
  erl-iex:
    plugin: dump
    build-environment:
      - ASDF_ERLANG_VERSION: "24.3.4.17"
      - ASDF_ELIXIR_VERSION: "1.15.7-otp-24"
    source: https://github.com/asdf-vm/asdf.git
    source-branch: v0.13.1
    source-type: git
    build-packages:
      - libncurses-dev
      - unzip
      - curl
    override-build: |
      source "./asdf.sh"
      
      # Install Erlang
      asdf plugin add erlang
      asdf install erlang "$ASDF_ERLANG_VERSION"
      asdf global erlang "$ASDF_ERLANG_VERSION"
      
      # Install Erlang
      asdf plugin add elixir
      asdf install elixir "$ASDF_ELIXIR_VERSION"
      asdf global elixir "$ASDF_ELIXIR_VERSION"
  couchdb:
    after: [erl-iex]
    plugin: make
    build-environment:
      - SPIDERMONKEY_VERSION: "91"
    source: https://dlcdn.apache.org/couchdb/source/3.3.3/apache-couchdb-3.3.3.tar.gz
    source-type: tar
    override-build: |
      # Use the version of erlang/elixir we configured before
      source "$(pwd)/../../erl-iex/build/asdf.sh"
      
      # Configure, build and release CouchDB binaries
      ./configure --spidermonkey-version "$SPIDERMONKEY_VERSION" && make release && cp -r rel/couchdb/* $SNAPCRAFT_PART_INSTALL
      
      # Verifying that all is working
      #make check
    build-packages:
      - gcc
      - g++
      - libc6-dev
      - libicu-dev
      - libssl-dev
      # Mozilla JS engine
      - libmozjs-91-dev
      # For Fauxton
      - npm
    stage-packages:
      - libicu70
      - libssl3
      - libmozjs-91-0
    stage:
      - -usr/share/doc
      - -usr/share/man
      - -var

environment:
  COUCHDB_ARGS_FILE: ${SNAP_DATA}/etc/vm.args
  COUCHDB_FAUXTON_DOCROOT: ${SNAP}/share/www
  COUCHDB_QUERY_SERVER_JAVASCRIPT: ${SNAP}/bin/couchjs ${COUCHJS_ARGS} ${SNAP}/share/server/main.js
  COUCHDB_QUERY_SERVER_COFFEESCRIPT: ${SNAP}/bin/couchjs ${COUCHJS_ARGS} ${SNAP}/share/server/main-coffee.js
  COUCHDB_INI_FILES: ${SNAP}/etc/default.ini ${SNAP}/etc/default.d ${SNAP_DATA}/etc/local.ini ${SNAP_DATA}/etc/local.d

apps:
  couchdb:
    command: bin/couchdb
    plugs: [network, network-bind, mount-observe]
  server:
    daemon: simple
    command: bin/couchdb
    plugs: [network, network-bind, mount-observe]
  remsh:
    command: bin/remsh
    plugs: [network, network-bind]
  couchjs:
    command: bin/couchjs
    plugs: [network, network-bind]
