From c590eec877f569594ed0ba16ab81cd0e7b6cc96b Mon Sep 17 00:00:00 2001
From: Volker Schukai <volker.schukai@schukai.com>
Date: Sat, 28 Oct 2023 15:32:33 +0200
Subject: [PATCH] fix: update go libs #3

---
 .gitlab-ci.yml  |  10 --
 CONTRIBUTING.md |  58 ++++++++
 LICENSE         |   5 +-
 Taskfile.yml    |  15 +-
 devenv.lock     |  24 ++--
 devenv.nix      | 353 +++++++++++++++++++++++++++++-------------------
 6 files changed, 298 insertions(+), 167 deletions(-)
 create mode 100644 CONTRIBUTING.md

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4339280..1bc73eb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,16 +7,12 @@
 
 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
   GIT_DEPTH: 10
 
 stages:
@@ -24,8 +20,6 @@ stages:
   - deploy 
 
 before_script:
-  - nix shell nixpkgs#coreutils-full -c mkdir -p /certs/client/
-  - nix shell nixpkgs#coreutils-full -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
@@ -63,7 +57,3 @@ deploy:
       paths:
         - /nix/store
 
-
-  artifacts:
-    paths:
-      - dist   
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..2713a85
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,58 @@
+# Contributing to schukai GmbH Projects
+
+## Code of Conduct
+
+Be a human, not an asshole. Common sense and basic human decency apply.
+
+## Getting Started
+
+### Setting up the Project
+
+1. Fork the project on GitLab.
+2. Clone your fork locally. Replace `[your-username]` with your GitLab username and `[project-name]` with the actual project name:
+    ```bash
+    git clone $(git config --get remote.origin.url)
+    ```
+3. Add the upstream repository. Replace `[original-username]` and `[project-name]` with the original repository's username and project name:
+    ```bash
+    git remote add upstream https://gitlab.schukai.com/[original-username]/[project-name].git
+    ```
+
+### Making Changes
+
+1. Create a new branch:
+    ```bash
+    git checkout -b new-feature-branch
+    ```
+2. Make your changes.
+3. Commit your changes:
+    ```bash
+    git commit -m "Description of change"
+    ```
+
+### Submitting a Merge Request
+
+1. Push your changes to your fork:
+    ```bash
+    git push origin new-feature-branch
+    ```
+2. Navigate to the original project repository on `gitlab.schukai.com`.
+3. Open a Merge Request and provide a clear description of the changes.
+
+## Coding Guidelines
+
+- Follow the coding style used in the project.
+- Write unit tests for new features.
+- Ensure that all tests pass before submitting a Merge Request.
+
+## Reporting Issues
+
+If you find an issue, please create a new issue on `gitlab.schukai.com`.
+
+## Additional Resources
+
+- [GitLab Flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html)
+- [GitLab Merge Request Guidelines](https://docs.gitlab.com/ee/user/project/merge_requests/)
+
+Thank you for your contribution! 
+    
diff --git a/LICENSE b/LICENSE
index f335543..5694d30 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (C) 2022 by schukai GmbH. 
+Copyright (C) 2023 schukai GmbH 
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Affero General Public License as published
@@ -10,4 +10,5 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU Affero General Public License for more details.
 
 You should have received a copy of the GNU Affero General Public License
-along with this program.  If not, see <https://www.gnu.org/licenses/>.
\ No newline at end of file
+along with this program.  If not, see <https://www.gnu.org/licenses/>.  
+    
diff --git a/Taskfile.yml b/Taskfile.yml
index b7313f4..b48a18a 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -10,24 +10,29 @@
 version: '3'
 
 tasks:
-  default:
+  default: 
     cmds:
       - task --list
     silent: true
     
   test:
     desc: Execute unit tests in Go.
+    env:
+      TEST_BY_TASK: true
     cmds:
       - echo "Execute unit tests in Go."
-      - go test -cover -v ./...
-      - go test -bench -v ./...
-      - go test -race -v ./...
+      - gosec .
+      - go test -tags=runOnTask -cover -v ./...
+      - go test -tags=runOnTask -bench -v ./...
+      - go test -tags=runOnTask -race -v ./...
 
   test-fuzz:
     desc: Conduct fuzzing tests.#
+    env:
+      TEST_BY_TASK: true
     cmds:  
       - echo "Conduct fuzzing tests."
-      - go test -v -fuzztime=30s -fuzz=Fuzz ./...
+      - go test -tags=runOnTask -v -fuzztime=30s -fuzz=Fuzz ./...
 
   add-licenses:
     desc: Attach license headers to Go files.
diff --git a/devenv.lock b/devenv.lock
index 8993ca8..a9b3b22 100644
--- a/devenv.lock
+++ b/devenv.lock
@@ -3,11 +3,11 @@
     "devenv": {
       "locked": {
         "dir": "src/modules",
-        "lastModified": 1692003204,
-        "narHash": "sha256-gO2DXwXuArjpywgtRTDb3aKscWMbnI7YwFaqvV46yv0=",
+        "lastModified": 1698243190,
+        "narHash": "sha256-n+SbyNQRhUcaZoU00d+7wi17HJpw/kAUrXOL4zRcqE8=",
         "owner": "cachix",
         "repo": "devenv",
-        "rev": "ade3ae522baf366296598e232b7b063d81740bbb",
+        "rev": "86f476f7edb86159fd20764489ab4e4df6edb4b6",
         "type": "github"
       },
       "original": {
@@ -74,11 +74,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1691950488,
-        "narHash": "sha256-iUNEeudc4dGjx+HsHccnGiuZUVE/nhjXuQ1DVCsHIUY=",
+        "lastModified": 1698288402,
+        "narHash": "sha256-jIIjApPdm+4yt8PglX8pUOexAdEiAax/DXW3S/Mb21E=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "720e61ed8de116eec48d6baea1d54469b536b985",
+        "rev": "60b9db998f71ea49e1a9c41824d09aa274be1344",
         "type": "github"
       },
       "original": {
@@ -106,11 +106,11 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1691950488,
-        "narHash": "sha256-iUNEeudc4dGjx+HsHccnGiuZUVE/nhjXuQ1DVCsHIUY=",
+        "lastModified": 1698288402,
+        "narHash": "sha256-jIIjApPdm+4yt8PglX8pUOexAdEiAax/DXW3S/Mb21E=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "720e61ed8de116eec48d6baea1d54469b536b985",
+        "rev": "60b9db998f71ea49e1a9c41824d09aa274be1344",
         "type": "github"
       },
       "original": {
@@ -130,11 +130,11 @@
         "nixpkgs-stable": "nixpkgs-stable"
       },
       "locked": {
-        "lastModified": 1691747570,
-        "narHash": "sha256-J3fnIwJtHVQ0tK2JMBv4oAmII+1mCdXdpeCxtIsrL2A=",
+        "lastModified": 1698227354,
+        "narHash": "sha256-Fi5H9jbaQLmLw9qBi/mkR33CoFjNbobo5xWdX4tKz1Q=",
         "owner": "cachix",
         "repo": "pre-commit-hooks.nix",
-        "rev": "c5ac3aa3324bd8aebe8622a3fc92eeb3975d317a",
+        "rev": "bd38df3d508dfcdff52cd243d297f218ed2257bf",
         "type": "github"
       },
       "original": {
diff --git a/devenv.nix b/devenv.nix
index efd4d9b..5fdd16f 100644
--- a/devenv.nix
+++ b/devenv.nix
@@ -1,4 +1,4 @@
-{ pkgs, inputs, phps, lib, config, modulesPath, ... }:
+{ pkgs ? import <nixpkgs> {}, inputs, phps, lib, config, modulesPath, ... }:
 
 {
   # https://devenv.sh/packages/
@@ -9,12 +9,14 @@
     blackbox-terminal
     coreutils-full
     dbeaver
+    dbeaver
     delve
     dialog
     drill
     exa
     fd
     fd
+    feh
     gcc12
     gdlv
     git
@@ -23,6 +25,7 @@
     gnumake
     gnused
     go-licenses
+    gosec
     go-task
     gum
     httpie
@@ -34,6 +37,8 @@
     memcached
     netcat
     nixfmt
+    nodePackages.mermaid-cli
+    openssh
     procps
     ranger
     unixtools.xxd
@@ -48,7 +53,7 @@
   languages = { go = { enable = true; }; };
 
   difftastic.enable = true;
-
+  
   scripts.get-go-default-packages.exec = ''
     #!${pkgs.bash}/bin/bash
     echo $(awk -F ' ' '/^module / { print $2 }' go.mod)
@@ -60,7 +65,7 @@
     #!${pkgs.bash}/bin/bash
     #set -euo pipefail
     set -x
-
+    
     PATH="''${PATH}":${pkgs.coreutils}/bin
     PATH="''${PATH}":${pkgs.findutils}/bin
     PATH="''${PATH}":${pkgs.jq}/bin/
@@ -161,142 +166,213 @@
   '';
 
   enterShell = ''
-        
-    cat <<'EOF' > Taskfile.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
-    #
-    # 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
-      GIT_DEPTH: 10
-
-    stages:
-      - test
-      - deploy 
-
-    before_script:
-      - nix shell nixpkgs#coreutils-full -c mkdir -p /certs/client/
-      - nix shell nixpkgs#coreutils-full -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
-
-    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
-
        
+cat <<'EOF' > CONTRIBUTING.md
+# Contributing to schukai GmbH Projects
+
+## Code of Conduct
+
+Be a human, not an asshole. Common sense and basic human decency apply.
+
+## Getting Started
+
+### Setting up the Project
+
+1. Fork the project on GitLab.
+2. Clone your fork locally. Replace `[your-username]` with your GitLab username and `[project-name]` with the actual project name:
+    ```bash
+    git clone $(git config --get remote.origin.url)
+    ```
+3. Add the upstream repository. Replace `[original-username]` and `[project-name]` with the original repository's username and project name:
+    ```bash
+    git remote add upstream https://gitlab.schukai.com/[original-username]/[project-name].git
+    ```
+
+### Making Changes
+
+1. Create a new branch:
+    ```bash
+    git checkout -b new-feature-branch
+    ```
+2. Make your changes.
+3. Commit your changes:
+    ```bash
+    git commit -m "Description of change"
+    ```
+
+### Submitting a Merge Request
+
+1. Push your changes to your fork:
+    ```bash
+    git push origin new-feature-branch
+    ```
+2. Navigate to the original project repository on `gitlab.schukai.com`.
+3. Open a Merge Request and provide a clear description of the changes.
+
+## Coding Guidelines
+
+- Follow the coding style used in the project.
+- Write unit tests for new features.
+- Ensure that all tests pass before submitting a Merge Request.
+
+## Reporting Issues
+
+If you find an issue, please create a new issue on `gitlab.schukai.com`.
+
+## Additional Resources
+
+- [GitLab Flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html)
+- [GitLab Merge Request Guidelines](https://docs.gitlab.com/ee/user/project/merge_requests/)
+
+Thank you for your contribution! 
+    
+EOF
+    
+cat <<'EOF' > LICENSE
+Copyright (C) 2023 schukai GmbH 
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published
+by the Free Software Foundation, either version 3 of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program.  If not, see <https://www.gnu.org/licenses/>.  
+    
+EOF
+ 
+cat <<'EOF' > Taskfile.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
+#
+# 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.
+    env:
+      TEST_BY_TASK: true
+    cmds:
+      - echo "Execute unit tests in Go."
+      - gosec .
+      - go test -tags=runOnTask -cover -v ./...
+      - go test -tags=runOnTask -bench -v ./...
+      - go test -tags=runOnTask -race -v ./...
+
+  test-fuzz:
+    desc: Conduct fuzzing tests.#
+    env:
+      TEST_BY_TASK: true
+    cmds:  
+      - echo "Conduct fuzzing tests."
+      - go test -tags=runOnTask -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
+
+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"
+  GIT_DEPTH: 10
+
+stages:
+  - test
+  - deploy 
+
+before_script:
+  - 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
+
+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
+
+EOF
         
   '';
 
@@ -635,4 +711,5 @@
     printLogfileAndExit 0
   '';
 
+
 }
-- 
GitLab