diff --git a/README.md b/README.md index 0dbefd7dd3f8c700f3a317ab811338c8ff7c055f..b52d1c35ff22dce86411cedd13658a26ce388655 100644 --- a/README.md +++ b/README.md @@ -48,9 +48,6 @@ packages = [ ]; ``` - - - ## Usage ### Template diff --git a/flake.nix b/flake.nix index 750757e65c5c3cd7f5b488ed05e7461a82980f9b..3d3a0eef641b59d4a693db6acc65c4f9498ff5de 100644 --- a/flake.nix +++ b/flake.nix @@ -46,11 +46,11 @@ tags = []; # add your tags here (eq "netgo" "osusergo" "static_build") ldflags = [ - "-X 'main.version=${goPkgVersion}'" - "-X 'main.commit=${goPkgHash}'" - "-X 'main.build=${lastModifiedDate}'" - "-X 'main.name=${goPkgName}'" - "-X 'main.mnemonic=${goPkgMnemonic}'" + "-X 'gitlab.schukai.com/oss/bob/release.version=${goPkgVersion}'" + "-X 'gitlab.schukai.com/oss/bob/release.commit=${goPkgHash}'" + "-X 'gitlab.schukai.com/oss/bob/release.buildDate=${lastModifiedDate}'" + "-X 'gitlab.schukai.com/oss/bob/release.name=${goPkgName}'" + "-X 'gitlab.schukai.com/oss/bob/release.mnemonic=${goPkgMnemonic}'" ]; #vendorHash = pkgs.lib.fakeHash; diff --git a/source/bob b/source/bob deleted file mode 100755 index ec143ed55d1fcedc8014e9c8d4e93072d3f58de2..0000000000000000000000000000000000000000 Binary files a/source/bob and /dev/null differ 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 94ce670ebfd9c774411ace593c3f4a251d3da2d7..5fdd16fc881ee44b44ef65da1bde82d539b83d8a 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,12 +1,6 @@ +{ 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}" @@ -56,22 +50,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/ @@ -147,7 +141,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 @@ -163,7 +157,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 @@ -172,214 +166,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 = '' @@ -526,7 +520,7 @@ 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 @@ -565,7 +559,7 @@ 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 @@ -628,9 +622,9 @@ 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." @@ -645,10 +639,10 @@ log_and_display "No file found in line: $line" continue fi - + git add "$file" done <<<"$selected_files" - + fi ## count staged changes again and print @@ -701,19 +695,21 @@ 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 94ce670ebfd9c774411ace593c3f4a251d3da2d7..5fdd16fc881ee44b44ef65da1bde82d539b83d8a 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,12 +1,6 @@ +{ 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}" @@ -56,22 +50,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/ @@ -147,7 +141,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 @@ -163,7 +157,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 @@ -172,214 +166,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 = '' @@ -526,7 +520,7 @@ 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 @@ -565,7 +559,7 @@ 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 @@ -628,9 +622,9 @@ 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." @@ -645,10 +639,10 @@ log_and_display "No file found in line: $line" continue fi - + git add "$file" done <<<"$selected_files" - + fi ## count staged changes again and print @@ -701,19 +695,21 @@ 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 ''; + + }