{ stdenv, consul, ruby, bundlerEnv, zip }:

let
  # `sass` et al
  gems = bundlerEnv {
    name = "consul-ui-deps";
    gemdir = ./.;
  };
in

stdenv.mkDerivation {
  name = "consul-ui-${consul.version}";

  src = consul.src;

  buildInputs = [ ruby gems zip ];

  patchPhase = "patchShebangs ./ui/scripts/dist.sh";

  buildPhase = ''
    # Build ui static files
    cd ui
    make dist
  '';

  installPhase = ''
    # Install ui static files
    mkdir -p $out
    mv ../pkg/web_ui/* $out
  '';

  meta = with stdenv.lib; {
    homepage    = https://www.consul.io/;
    description = "A tool for service discovery, monitoring and configuration";
    maintainers = with maintainers; [ cstrahan wkennington ];
    license     = licenses.mpl20 ;
    platforms   = platforms.unix;
  };
}
