#!/usr/bin/env bash

set -euo pipefail

readonly BATTERY="BAT1"
readonly THRESHOLD_FILE="/sys/class/power_supply/${BATTERY}/charge_control_end_threshold"

if (( $# != 1 )); then
    echo "Usage : batlimit-set SEUIL" >&2
    exit 2
fi

readonly THRESHOLD="$1"

if [[ ! "$THRESHOLD" =~ ^[0-9]+$ ]]; then
    echo "Erreur : le seuil doit être un entier." >&2
    exit 2
fi

if (( THRESHOLD < 40 || THRESHOLD > 100 )); then
    echo "Erreur : le seuil doit être compris entre 40 et 100." >&2
    exit 2
fi

if [[ ! -e "$THRESHOLD_FILE" ]]; then
    echo "Erreur : seuil de charge introuvable pour ${BATTERY}." >&2
    exit 1
fi

printf '%s\n' "$THRESHOLD" > "$THRESHOLD_FILE"

read -r CURRENT_THRESHOLD < "$THRESHOLD_FILE"

if [[ "$CURRENT_THRESHOLD" != "$THRESHOLD" ]]; then
    echo "Erreur : seuil demandé ${THRESHOLD} %, valeur appliquée ${CURRENT_THRESHOLD} %." >&2
    exit 1
fi
