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

{ pkgs, lib, depot, ... }:
let
  secretsync = pkgs.buildGoModule rec {
    pname = "secretsync";
    version = "0.0.1";

    src = ./.;
    vendorHash = "sha256:0n8dvdgn6izb4qcjdcsqjzximkkpf5i2xb4ap5aa2n8c36w2dn5h";

    subPackages = [ "." ];

    meta = with lib; {
      description = "Simple package for dumping secret files from disk to GitLab variables";
    };
  };
in secretsync // {
  configure = baseConfig:
    let
      config = {
        name = "secretsync";
        pkg = secretsync;
        gitlabAccessToken = "";
        gitlabEndpoint = "https://hg.lukegb.com";
        gitlabProject = "lukegb/depot";
        variablesToFile = {};
        manifestVariable = "";
        workingDir = "";
        logToStderr = true;
      } // baseConfig;
      args = {
        gitlab_access_token = config.gitlabAccessToken;
        gitlab_endpoint = config.gitlabEndpoint;
        gitlab_project = config.gitlabProject;
        variable_to_file = lib.mapAttrsToList (name: value: "${name}=${value}") config.variablesToFile;
        logtostderr = config.logToStderr;
      } // (if config.manifestVariable == "" then {} else { manifest_variable = config.manifestVariable; });
    in
    pkgs.writeShellScriptBin config.name ''
      cd "${config.workingDir}"
      exec "${config.pkg}/bin/secretsync" ${lib.cli.toGNUCommandLineShell {} args}
    '';
}