# THIS FILE IS AUTOGENERATED BY THE DEVENVSHELL
    # DO NOT EDIT THIS FILE MANUALLY
    # INSTEAD EDIT THE DEVENVSHELL CONFIGURATION FILE devenv.nix 
    # AND OPEN A SHELL WITH THE COMMAND devenv shell
    #
    # Information about the task runner can be found here:
    # https://taskfile.dev

    version: '3'

    tasks:
      default:
        cmds:
          - task --list
        silent: true
        
      test:
        desc: Execute unit tests in Go.
        cmds:
          - echo "Execute unit tests in Go."
          - go test -cover -v ./...
          - go test -bench -v ./...
          - go test -race -v ./...

      test-fuzz:
        desc: Conduct fuzzing tests.#
        cmds:  
          - echo "Conduct fuzzing tests."
          - go test -v -fuzztime=30s -fuzz=Fuzz ./...

      add-licenses:
        desc: Attach license headers to Go files.
        cmds:
          - echo "Attach license headers to Go files."
          - go install github.com/google/addlicense@latest
          - addlicense -c "schukai GmbH" -s -l "AGPL-3.0" ./*.go
        silent: true
        
      check-licenses:
        desc: Check license headers of Go files.
        silent: true
        cmds:
          - go-licenses save "$(get-go-default-packages)"  --ignore "gitlab.schukai.com"  --force --save_path ${DEVENV_ROOT}/licenses/

      check:
        desc: Confirm repository status.
        cmds:
          - git diff-index --quiet HEAD || (echo "There are uncommitted changes after running make. Please commit or stash them before running make."; exit 1)
        silent: true

      commit:
        desc: Commit changes to the repository.
        aliases:
          - c
          - ci
          - git-commit
        cmds:
          - do-git-commit
    EOF

    cat <<'EOF' > .gitlab-ci.yml

    # THIS FILE IS AUTOGENERATED BY THE DEVENVSHELL
    # DO NOT EDIT THIS FILE MANUALLY
    # INSTEAD EDIT THE DEVENVSHELL CONFIGURATION FILE devenv.nix
    # AND OPEN A SHELL WITH THE COMMAND devenv shell
    #

    image: docker-registry.schukai.com:443/nixos-ci-devenv:latest

#    services:
#      - docker:dind
        

    variables:
      # The repo name as used in
      # https://github.com/nix-community/NUR/blob/master/repos.json
      NIXOS_VERSION: "23.05"
      NIXPKGS_ALLOW_UNFREE: "1"
      NIXPKGS_ALLOW_INSECURE: "1"
      DOCKER_DRIVER: overlay2
      DOCKER_HOST: unix:///var/run/docker.sock
      GIT_DEPTH: 10

    stages:
      - test
      - deploy 

    before_script:
      - unset DOCKER_TLS_VERIFY
      - nix shell nixpkgs#coreutils -c mkdir -p /certs/client/
      - nix shell nixpkgs#coreutils -c ln -fs /etc/ssl/certs/ca-bundle.crt /certs/client/ca.pem
      - echo > .env-gitlab-ci
      - variables=("HOME=$HOME" "CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME" "CI_REPOSITORY_URL=$CI_REPOSITORY_URL" "GITLAB_TOKEN=$GITLAB_TOKEN" "CI_JOB_TOKEN=$CI_JOB_TOKEN" "GITLAB_USER_EMAIL=$GITLAB_USER_EMAIL" "GITLAB_USER_NAME=\"$GITLAB_USER_NAME\"" "CI_REGISTRY_USER=$CI_REGISTRY_USER" "CI_PROJECT_ID=$CI_PROJECT_ID" "CI_PROJECT_DIR=$CI_PROJECT_DIR" "CI_API_V4_URL=$CI_API_V4_URL" "CI_PROJECT_NAME=$CI_PROJECT_NAME" "CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA"); for var in "${variables[@]}"; do echo "$var" >> .env-gitlab-ci; done
      - cat .env-gitlab-ci
      - env 
      - nix shell nixpkgs#docker-client -c docker info

    after_script:
      - if [ -f .env-gitlab-ci ]; then rm .env-gitlab-ci; fi

    test:
      stage: test
      tags:
        - nixos
      script:
        - devenv shell test-lib

      cache:
        - key: nixos
          paths:
            - /nix/store
      
      artifacts:
        paths:
          - dist

    deploy:
      stage: deploy
      tags:
        - nixos
      script:
        - devenv shell -c deploy-lib

      when: on_success

      cache:
        - key: nixos
          paths:
            - /nix/store


      artifacts:
        paths:
          - dist   
    EOF

       
        

export PS1="\[\e[0;34m\](devenv)\[\e[0m\] ${PS1-}"

# set path to locales on non-NixOS Linux hosts
if [ -z "${LOCALE_ARCHIVE-}" ]; then
  export LOCALE_ARCHIVE=/nix/store/0g0c6sbrqxmywr636qzxni44wrqqrbdp-glibc-locales-2.37-45/lib/locale/locale-archive
fi


# note what environments are active, but make sure we don't repeat them
if [[ ! "${DIRENV_ACTIVE-}" =~ (^|:)"$PWD"(:|$) ]]; then
  export DIRENV_ACTIVE="$PWD:${DIRENV_ACTIVE-}"
fi

# devenv helper
if [ ! type -p direnv &>/dev/null && -f .envrc ]; then
  echo "You have .envrc but direnv command is not installed."
  echo "Please install direnv: https://direnv.net/docs/installation.html"
fi

mkdir -p .devenv
rm -f .devenv/profile
ln -s /nix/store/5ji01c0jsm65gs0xmn0mfnjjphgdgsnz-devenv-profile .devenv/profile