# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description   "Start the fingerprint study webserver"
author        "chromium-os-dev@chromium.org"

start on started system-services
stop on stopping system-services
respawn
respawn limit 3 10  # if the job respawns 3 times in 10 seconds, stop trying.

# Study parameters
env FINGER_COUNT=2
env ENROLLMENT_COUNT=20
env VERIFICATION_COUNT=15

env LOG_DIR=/var/log/fingerprints

env PICTURE_DIR=/usr/local/fingers

pre-start script
  mkdir -m 755 -p ${LOG_DIR}
  mkdir -m 700 -p ${PICTURE_DIR}
end script

exec /opt/google/fingerprint_study/study_serve \
    --finger_count=${FINGER_COUNT}             \
    --enrollment_count=${ENROLLMENT_COUNT}     \
    --verification_count=${VERIFICATION_COUNT} \
    --log_dir=${LOG_DIR}                       \
    --picture_dir=${PICTURE_DIR}               \
    >${LOG_DIR}/server.out 2>&1
