x-kalamar-export-setup: &export-setup
  entrypoint: []
  command: >
    sh -c '
      if [ "$$KALAMAR_EXPORT" != "false" ]; then
        echo "Hacking in selective CSP policy...";
        if ! grep -q "script-src.*unsafe-inline" /kalamar/kalamar.production.conf; then
          cat /kalamar/kalamar.production.conf | perl -pe "s/\\{/\\{CSP=>{q!frame-src!=>[q!self!]},/" > /kalamar/kalamar.production.tmp.conf;
          mv /kalamar/kalamar.production.tmp.conf /kalamar/kalamar.production.conf;
        fi;
        # Should better be retrieved by the export plugin service using curl
        PLUGINJSON="{ name => \"Export\", desc => \"Exports Kalamar results\", embed => [{ panel => \"result\", title => \"exports KWICs and snippets\" , icon => \"\134x{f019}\", classes => [\"button-icon\",\"plugin\"], onClick => { action => \"addWidget\", template => \"/plugin/export/export\", permissions => [\"forms\",\"scripts\", \"downloads\" ]}}]},";
        PLUGINPROXY="{ root_path => \"/plugin/export/\", mount => \"http://kalamar-export:7777/\", service => \"export-plugin-proxy\" },";
        if ! grep -F -q "/plugin/export/export" /kalamar/kalamar.production.conf; then
          cat /kalamar/kalamar.production.conf | perl -pe "s!\047PLUGIN_STUB\047!$$PLUGINJSON\047PLUGIN_STUB\047!;" > /kalamar/kalamar.production.tmp.conf;
          mv /kalamar/kalamar.production.tmp.conf /kalamar/kalamar.production.conf
        fi;
        if ! grep -F -q "export-plugin-proxy" /kalamar/kalamar.production.conf; then
          cat /kalamar/kalamar.production.conf | perl -pe "s!\047PROXY_STUB\047!$$PLUGINPROXY\047PROXY_STUB\047!;" > /kalamar/kalamar.production.tmp.conf;
          mv /kalamar/kalamar.production.tmp.conf /kalamar/kalamar.production.conf
        fi;
        cat /kalamar/kalamar.production.conf;
      fi || true; perl script/kalamar daemon -l http://0.0.0.0:64543'
volumes:
  example-index:
services:
  examplecontainer:
    image: "korap/example-index:0.1"
    profiles:
      - example
    volumes:
      - "example-index:/kustvakt/index"
    restart: "no"
  kalamar:
    image: ${KALAMAR_IMAGE:-korap/kalamar:0.65}
    ports:
      - "64543:64543"
    environment:
      KALAMAR_API: "http://kustvakt:8089/api/"
      KALAMAR_EXPORT: ${KALAMAR_EXPORT:-true}
    volumes:
      # Templates describing your own corpus; see custom/README.md.
      - ${KALAMAR_TEMPLATES:-./custom}:/kalamar/templates/custom:ro
    depends_on:
      - kustvakt
    profiles:
      - open
    <<: *export-setup
    restart: "unless-stopped"
  auth-init:
    image: "korap/kalamar:latest"
    command: super_client_info kalamar /kalamar/data/super_client_info
    volumes:
      - type: bind
        source: "${PWD}/data/"
        target: "/kalamar/data"
    profiles:
      - auth
      - init
    user: root
    restart: "no"
  kalamar-auth:
    image: "korap/kalamar:latest"
    ports:
      - "64543:64543"
    environment:
      KALAMAR_API: "http://kustvakt-auth:8089/api/"
      KALAMAR_PLUGINS: "Auth"
      KALAMAR_CLIENT_FILE: "/kalamar/super_client_info"
      KALAMAR_EXPORT: ${KALAMAR_EXPORT:-true}
    volumes:
      - ${PWD}/data/super_client_info:/kalamar/super_client_info:z
      # Templates describing your own corpus; see custom/README.md.
      - ${KALAMAR_TEMPLATES:-./custom}:/kalamar/templates/custom:ro
    depends_on:
      kustvakt-auth:
        condition: service_started
      auth-init:
        condition: service_completed_successfully
    profiles:
      - auth
    <<: *export-setup
    restart: "unless-stopped"
    user: root
  kalamar-export:
    image: "korap/kalamar-plugin-export:0.4.1"
    environment:
      KALAMAR_EXPORT_API_HOST: "kustvakt-api"
      KALAMAR_EXPORT_API_PORT: "8089"
      KALAMAR_EXPORT_API_SCHEME: "http"
      KALAMAR_EXPORT_SERVER_SCHEME: "http"
      KALAMAR_EXPORT_SERVER_HOST: "0.0.0.0"
      KALAMAR_EXPORT_SERVER_PORT: "7777"
    profiles:
      - open
      - auth
      - export
    restart: "unless-stopped"
  kustvakt:
    image: "korap/kustvakt:latest"
    expose:
      - 8089
    volumes:
      - "${INDEX}:/kustvakt/index:z"
    profiles:
      - open
    networks:
      default:
        aliases:
          - kustvakt-api
    restart: "unless-stopped"
  kustvakt-auth:
    image: "korap/kustvakt:latest-full"
    expose:
      - 8089
    user: root
    volumes:
      - "${INDEX}:/kustvakt/index:z"
      - type: bind
        source: "${PWD}/data/"
        target: /kustvakt/data/
    profiles:
      - auth
    depends_on:
      auth-init:
        condition: service_completed_successfully
    networks:
      default:
        aliases:
          - kustvakt-api
    restart: "unless-stopped"
configs:
  super_client_info:
    external: true
