From 0747ca641f12d92beb56ac3aea618049c694d6df Mon Sep 17 00:00:00 2001 From: Volker Schukai <volker.schukai@schukai.com> Date: Sun, 19 May 2024 18:29:07 +0200 Subject: [PATCH] feat: update libs #8 --- flake.nix | 23 +- .../go/application/xflags/devenv.nix | 458 +++++++++--------- .../go/utilities/pathfinder/devenv.nix | 458 +++++++++--------- 3 files changed, 473 insertions(+), 466 deletions(-) diff --git a/flake.nix b/flake.nix index f95bc32..86d8049 100644 --- a/flake.nix +++ b/flake.nix @@ -8,7 +8,6 @@ flake-root.url = "github:srid/flake-root"; treefmt-nix.url = "github:numtide/treefmt-nix"; versions-tool.url = "git+https://gitlab.schukai.com/oss/utilities/version.git"; - }; nixConfig = { @@ -56,14 +55,14 @@ projectDefinition = import ./project.nix; sourcePath = ./source; -timestamp = let - pkgs = import inputs.nixpkgs { }; -in -builtins.readFile ( - pkgs.runCommand "timestamp" - {when = builtins.currentTime;} - "echo -n `date -d @$when +%Y-%m-%d_%H-%M-%S` > $out" -); + timestamp = let + pkgs = import inputs.nixpkgs {}; + in + builtins.readFile ( + pkgs.runCommand "timestamp" + {when = builtins.currentTime;} + "echo -n `date -d @$when +%Y-%m-%d_%H-%M-%S` > $out" + ); in # https://nixos.wiki/wiki/Go pkgs.buildGoModule { @@ -176,9 +175,9 @@ builtins.readFile ( ]; languages.javascript = { - enable = true; - package = pkgs.nodejs_21; - corepack.enable = true; + enable = true; + package = pkgs.nodejs_21; + corepack.enable = true; }; languages.nix.enable = true; languages = {go = {enable = true;};}; diff --git a/source/vendor/gitlab.schukai.com/oss/libraries/go/application/xflags/devenv.nix b/source/vendor/gitlab.schukai.com/oss/libraries/go/application/xflags/devenv.nix index 5fdd16f..94ce670 100644 --- a/source/vendor/gitlab.schukai.com/oss/libraries/go/application/xflags/devenv.nix +++ b/source/vendor/gitlab.schukai.com/oss/libraries/go/application/xflags/devenv.nix @@ -1,6 +1,12 @@ -{ pkgs ? import <nixpkgs> {}, inputs, phps, lib, config, modulesPath, ... }: - { + pkgs ? import <nixpkgs> {}, + inputs, + phps, + lib, + config, + modulesPath, + ... +}: { # https://devenv.sh/packages/ packages = with pkgs; [ inputs.version.defaultPackage."${builtins.currentSystem}" @@ -50,22 +56,22 @@ # https://devenv.sh/languages/ # languages.nix.enable = true; - languages = { go = { enable = true; }; }; + 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) ''; # This script is executed when the app is built - # You can use it to build the app + # You can use it to build the app scripts.test-lib.exec = '' #!${pkgs.bash}/bin/bash #set -euo pipefail set -x - + PATH="''${PATH}":${pkgs.coreutils}/bin PATH="''${PATH}":${pkgs.findutils}/bin PATH="''${PATH}":${pkgs.jq}/bin/ @@ -141,7 +147,7 @@ project_root=$(realpath "''${DEVENV_ROOT}")/ else echo "Error: DEVENV_ROOT or CI_PROJECT_DIR environment variables are not set." - exit 1 + exit 1 fi if [ ! -d "''${project_root}" ]; then @@ -157,7 +163,7 @@ git --no-pager log --decorate=short --pretty=oneline gitVersion=v$(version predict) - git tag -a $gitVersion -m"chore: bump version" + git tag -a $gitVersion -m"chore: bump version" git --no-pager log --decorate=short --pretty=oneline git push -o ci.skip origin ''${CI_COMMIT_REF_NAME} --tags @@ -166,214 +172,214 @@ ''; enterShell = '' - -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 - + + 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 + ''; scripts.do-git-commit.exec = '' @@ -520,7 +526,7 @@ EOF issue_text=$(gum input --placeholder "Enter issue title") echo -e "Enter issue description. ''${RED}End with Ctrl+D''${RESET}\n" issue_description=$(gum write --placeholder "Enter issue description. End with Ctrl+D") - + if [[ -z "$issue_text" ]]; then log_error_and_display "Issue title is empty. Exiting." printLogfileAndExit 1 @@ -559,7 +565,7 @@ EOF if [ ''${#work_on_issue_ids[@]} -eq 0 ]; then log_and_display "No issue selected. Exiting." printLogfileAndExit 0 - fi + fi # NEXT STEP COMMIT MESSAGE ############################################################################################################ # print work_on_issue_ids @@ -622,9 +628,9 @@ EOF while IFS= read -r line; do files+=("$line") done <<<"$git_status" - + selected_files=$(gum choose --no-limit "''${files[@]}") - + # no files selected if [[ -z "$selected_files" ]]; then log_and_display "No files selected. Exiting." @@ -639,10 +645,10 @@ EOF log_and_display "No file found in line: $line" continue fi - + git add "$file" done <<<"$selected_files" - + fi ## count staged changes again and print @@ -695,21 +701,19 @@ EOF print_headline "Closing issues" for issue_id in "''${work_on_issue_ids[@]}"; do - + gum confirm "Do you want to close issue #$issue_id?" if [ $? -eq 1 ]; then continue fi - + if ! glab issue close "$issue_id" ; then log_error_and_display "Closing issue $issue_id failed. Exiting." else - log_and_display "Closing issue $issue_id successful." + log_and_display "Closing issue $issue_id successful." fi done printLogfileAndExit 0 ''; - - } diff --git a/source/vendor/gitlab.schukai.com/oss/libraries/go/utilities/pathfinder/devenv.nix b/source/vendor/gitlab.schukai.com/oss/libraries/go/utilities/pathfinder/devenv.nix index 5fdd16f..94ce670 100644 --- a/source/vendor/gitlab.schukai.com/oss/libraries/go/utilities/pathfinder/devenv.nix +++ b/source/vendor/gitlab.schukai.com/oss/libraries/go/utilities/pathfinder/devenv.nix @@ -1,6 +1,12 @@ -{ pkgs ? import <nixpkgs> {}, inputs, phps, lib, config, modulesPath, ... }: - { + pkgs ? import <nixpkgs> {}, + inputs, + phps, + lib, + config, + modulesPath, + ... +}: { # https://devenv.sh/packages/ packages = with pkgs; [ inputs.version.defaultPackage."${builtins.currentSystem}" @@ -50,22 +56,22 @@ # https://devenv.sh/languages/ # languages.nix.enable = true; - languages = { go = { enable = true; }; }; + 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) ''; # This script is executed when the app is built - # You can use it to build the app + # You can use it to build the app scripts.test-lib.exec = '' #!${pkgs.bash}/bin/bash #set -euo pipefail set -x - + PATH="''${PATH}":${pkgs.coreutils}/bin PATH="''${PATH}":${pkgs.findutils}/bin PATH="''${PATH}":${pkgs.jq}/bin/ @@ -141,7 +147,7 @@ project_root=$(realpath "''${DEVENV_ROOT}")/ else echo "Error: DEVENV_ROOT or CI_PROJECT_DIR environment variables are not set." - exit 1 + exit 1 fi if [ ! -d "''${project_root}" ]; then @@ -157,7 +163,7 @@ git --no-pager log --decorate=short --pretty=oneline gitVersion=v$(version predict) - git tag -a $gitVersion -m"chore: bump version" + git tag -a $gitVersion -m"chore: bump version" git --no-pager log --decorate=short --pretty=oneline git push -o ci.skip origin ''${CI_COMMIT_REF_NAME} --tags @@ -166,214 +172,214 @@ ''; enterShell = '' - -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 - + + 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 + ''; scripts.do-git-commit.exec = '' @@ -520,7 +526,7 @@ EOF issue_text=$(gum input --placeholder "Enter issue title") echo -e "Enter issue description. ''${RED}End with Ctrl+D''${RESET}\n" issue_description=$(gum write --placeholder "Enter issue description. End with Ctrl+D") - + if [[ -z "$issue_text" ]]; then log_error_and_display "Issue title is empty. Exiting." printLogfileAndExit 1 @@ -559,7 +565,7 @@ EOF if [ ''${#work_on_issue_ids[@]} -eq 0 ]; then log_and_display "No issue selected. Exiting." printLogfileAndExit 0 - fi + fi # NEXT STEP COMMIT MESSAGE ############################################################################################################ # print work_on_issue_ids @@ -622,9 +628,9 @@ EOF while IFS= read -r line; do files+=("$line") done <<<"$git_status" - + selected_files=$(gum choose --no-limit "''${files[@]}") - + # no files selected if [[ -z "$selected_files" ]]; then log_and_display "No files selected. Exiting." @@ -639,10 +645,10 @@ EOF log_and_display "No file found in line: $line" continue fi - + git add "$file" done <<<"$selected_files" - + fi ## count staged changes again and print @@ -695,21 +701,19 @@ EOF print_headline "Closing issues" for issue_id in "''${work_on_issue_ids[@]}"; do - + gum confirm "Do you want to close issue #$issue_id?" if [ $? -eq 1 ]; then continue fi - + if ! glab issue close "$issue_id" ; then log_error_and_display "Closing issue $issue_id failed. Exiting." else - log_and_display "Closing issue $issue_id successful." + log_and_display "Closing issue $issue_id successful." fi done printLogfileAndExit 0 ''; - - } -- GitLab