# 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: tika-app
version: '2.0.0-SNAPSHOT'
summary: Tika Application for metadata discovery and extraction
description: Apache Tika is a content detection and analysis framework, written 
      in Java, stewarded at the Apache Software Foundation.It detects and extracts 
      metadata and text from over a thousand different file types, and as well as 
      providing a Java library, has server and command-line editions suitable for 
      use from other programming languages.
   
grade: stable
confinement: strict

apps:
   run:
    command: java -jar  -Duser.home=$SNAP_USER_DATA $SNAP/jar/tika-app-$SNAP_VERSION.jar
    plugs: [home, removable-media]
    environment:
      JAVA_HOME: $SNAP/usr/lib/jvm/java-8-openjdk-amd64
      PATH: $JAVA_HOME/jre/bin:$PATH
      XDG_DATA_HOME: $SNAP/usr/share
      FONTCONFIG_PATH: $SNAP/etc/fonts/config.d
      FONTCONFIG_FILE: $SNAP/etc/fonts/fonts.conf

parts:
  compile-tika:
    source: ../../tika-app
    plugin: maven
    maven-options: [-DskipTests]
