# SPDX-FileCopyrightText: 2020 Luke Granger-Brown <depot@lukegb.com>
#
# SPDX-License-Identifier: Apache-2.0

{ pkgs, ... }:

let
  inherit (pkgs) lib;
  inherit (builtins) elemAt match length;
  hgRelativePath = path: elemAt (match ".*/\\.hg/(.*)$" path) 0;
  hgDepth = path: length (lib.splitString "/" (hgRelativePath path));
  hgRepo = builtins.path {
    path = ./.hg;
    name = "depot-hg";
    filter = path: type: (type == "directory" && (
        hgRelativePath path == "store" ||
        hgRelativePath path == "merge" ||
        hgRelativePath path == "cache")) ||
      (type == "regular" && hgDepth path == 1) ||
      (type == "regular" && hgDepth path == 2);
  };
  changesetDeriv = pkgs.runCommandLocal "depot-version" {
    HG_REPO = hgRepo;
    MERCURIAL = pkgs.mercurial;
  } ''
    export HGPLAIN=
    mytmp=$(mktemp -d)
    pushd $mytmp
    ln -s $HG_REPO .hg
    echo -n "depot-$($MERCURIAL/bin/hg id --id -r.)" > $out
    popd
    rm -rf $mytmp
  '';
in
  builtins.readFile changesetDeriv