#!/bin/sh -e
#
# # DASHT-DOCSETS-UPDATE 1        2020-05-16                            2.4.0
#
# ## NAME
#
# dasht-docsets-update - updates installed [Dash] docsets
#
# ## SYNOPSIS
#
# `dasht-docsets-update` [*NAME*...]
#
# ### Examples
#
# `dasht-docsets-update`
#   Updates all installed [Dash] docsets.
#
# `dasht-docsets-update` sh
#   Updates installed [Dash] docsets whose names contain "sh".
#
# `dasht-docsets-update` sh 'c$'
#   Updates installed [Dash] docsets whose names contain "sh" or end in "c".
#
# ## DESCRIPTION
#
# Updates installed [Dash] docsets whose names match the *NAME* regex(7)
# patterns.  If no *NAME*s are given, all available docsets are matched.
#
# ## ENVIRONMENT
#
# `DASHT_DOCSETS_DIR`
#   Defines the filesystem location where your [Dash] docsets are installed.
#   If undefined, its value is assumed to be `$XDG_DATA_HOME/dasht/docsets/`
#   or, if `XDG_DATA_HOME` is undefined, `$HOME/.local/share/dasht/docsets/`.
#
# ## SEE ALSO
#
# dasht-docsets-extract(1), dasht-docsets-install(1), dasht-docsets-remove(1),
# dasht-docsets(1), [Dash]
#
# [Dash]: https://kapeli.com/dash
#
# ## AUTHOR
#
# Written in 2016 by Suraj N. Kurapati <https://github.com/sunaku/dasht>
# Distributed under the terms of the ISC license (refer to README file).

: ${DASHT_DOCSETS_DIR:=${XDG_DATA_HOME:-$HOME/.local/share}/dasht/docsets}

dasht-docsets "$@" | while read -r docset; do
  ls "$DASHT_DOCSETS_DIR/$docset"*.tgz
done | sort -u | while read -r tgz; do
  last_modified_at="$tgz".last_modified_at
  url="https://kapeli.com/feeds/$(basename "$tgz")"

  touch -r "$tgz" "$last_modified_at"
  wget -P "$DASHT_DOCSETS_DIR" -N "$url"
  test "$tgz" -nt "$last_modified_at" && dasht-docsets-extract "$tgz"
  rm "$last_modified_at"
done