Skip to content
Snippets Groups Projects
Verified Commit 6cae56ec authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

fix: test ci

parent 09ef0b37
No related branches found
No related tags found
No related merge requests found
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
image: docker-registry.schukai.com:443/nixos-ci-devenv:latest
services:
......@@ -42,4 +43,4 @@ release:
script:
- devenv shell deploy-app
#- cd source; goreleaser release --clean
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
......@@ -4,7 +4,6 @@ This tool helps to increment the version number of a project.
You can download the tool here: [download.schukai.com/tools/version/](http://download.schukai.com/tools/version/).
```bash
echo "1.0.0" | version patch
# 1.0.1
......@@ -53,7 +52,6 @@ version patch --git
With the command build the current build date can be output.
```bash
version build
```
......@@ -100,7 +98,6 @@ this command does not write the result to a file or tag the git repository.
version predict
```
**Makefile**
```makefile
......
/nix/store/lfy3spmspb2bnzwg8359nn58q1hzdyv5-Taskfile.yaml
\ No newline at end of file
/nix/store/4bvalx54rgxmryi1jx7k70aq4ccr7phq-Taskfile.yaml
\ No newline at end of file
#!/usr/bin/env bash
set -x
SOURCE_PATH=$1
BUILD_PATH=$2
COMPONENT_SLUG=$3
......
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
crossorigin="anonymous"
/>
<style>
body {
background-color: #ffffff;
}
</style>
<title>Version | Download Portal schukai GmbH</title>
</head>
<body>
<div class="d-flex flex-column align-items-center justify-content-center"
style="height:100vh;">
<div
class="d-flex flex-column align-items-center justify-content-center"
style="height: 100vh"
>
<div class="text-center">
<a href="https://www.schukai.com" class="text-decoration-none text-white text-decoration"><img
src="https://cdn.alvine.io/image/logo/schukai-rot.svg" width="300px"></a>
<br>
<a
href="https://www.schukai.com"
class="text-decoration-none text-white text-decoration"
><img
src="https://cdn.alvine.io/image/logo/schukai-rot.svg"
width="300px"
/></a>
<br />
<div class="card mt-5">
<div class="card-header">
Version
</div>
<div class="card-header">Version</div>
<ul class="list-group">
<li class="list-group-item"><a class="text-decoration-none link-danger" href="./version-linux-386">version-linux-386</a></li>
<li class="list-group-item"><a class="text-decoration-none link-danger" href="./version-linux-amd64">version-linux-amd64</a></li>
<li class="list-group-item"><a class="text-decoration-none link-danger" href="./version-linux-arm">version-linux-arm</a></li>
<li class="list-group-item"><a class="text-decoration-none link-danger" href="./version-linux-arm64">version-linux-arm64</a></li>
<li class="list-group-item"><a class="text-decoration-none link-danger" href="./version-windows">version-windows</a></li>
<li class="list-group-item">
<a
class="text-decoration-none link-danger"
href="./version-linux-386"
>version-linux-386</a
>
</li>
<li class="list-group-item">
<a
class="text-decoration-none link-danger"
href="./version-linux-amd64"
>version-linux-amd64</a
>
</li>
<li class="list-group-item">
<a
class="text-decoration-none link-danger"
href="./version-linux-arm"
>version-linux-arm</a
>
</li>
<li class="list-group-item">
<a
class="text-decoration-none link-danger"
href="./version-linux-arm64"
>version-linux-arm64</a
>
</li>
<li class="list-group-item">
<a
class="text-decoration-none link-danger"
href="./version-windows"
>version-windows</a
>
</li>
</ul>
</div>
<p class="mt-5">
<a href="https://about.schukai.com/de/impressum/" class="text-decoration-none text-decoration"
style="color:#c10000">Imprint</a></p>
<a
href="https://about.schukai.com/de/impressum/"
class="text-decoration-none text-decoration"
style="color: #c10000"
>Imprint</a
>
</p>
</div>
</div>
<!--
<div class="d-flex flex-column align-items-center justify-content-center"
style="height:100vh;">
......@@ -73,10 +108,10 @@
</div>
</div> -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"></script>
crossorigin="anonymous"
></script>
</body>
</html>
# See full reference at https://devenv.sh/reference/options/
{ pkgs, inputs, phps, lib, config, modulesPath,... }:
let
{
pkgs,
inputs,
phps,
lib,
config,
modulesPath,
...
}: let
taskfileYaml = pkgs.writeTextFile {
name = "Taskfile.yaml";
text = ''
## THIS FILE IS AUTOGENERATED. DO NOT EDIT THIS FILE DIRECTLY.
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
version: '3'
tasks:
......@@ -34,12 +39,69 @@ tasks:
- task --list
silent: true
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
'';
};
treefmtConfig = pkgs.writeTextFile {
name = "Taskfile.yaml";
text = ''
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
[formatter.nix]
command = "${pkgs.alejandra}/bin/alejandra"
options = []
includes = [ "*.nix" ]
excludes = []
[formatter.go]
command = "${pkgs.go}/bin/gofmt"
options = ["-w"]
includes = [ "*.go" ]
excludes = []
#[formatter.php]
#command = "${pkgs.php83Packages.php-cs-fixer}/bin/php-cs-fixer"
#options = ["fix"]
#includes = [ "*.php" ]
#excludes = []
[formatter.shell]
command = "${pkgs.shfmt}/bin/shfmt"
options = ["-w"]
includes = [ "*.sh", "*.bash" ]
excludes = []
[formatter.prettier]
command = "${pkgs.nodePackages.prettier}/bin/prettier"
options = ["--write","--plugin=${pkgs.nodePackages.prettier-plugin-toml}/lib/node_modules/prettier-plugin-toml/lib/api.js"]
includes = [
"*.css",
"*.html",
"*.js",
"*.mjs",
"*.json",
"*.xml",
"*.toml",
"*.jsx",
"*.md",
"*.mdx",
"*.scss",
"*.ts",
"*.yml",
"*.yaml"]
excludes = ["treefmt.toml", "Taskfile.yml", "node_modules"]
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
'';
};
gitlabCiYaml = pkgs.writeTextFile {
name = ".gitlab-ci.yml";
text = ''
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
image: docker-registry.schukai.com:443/nixos-ci-devenv:latest
services:
......@@ -84,15 +146,14 @@ tasks:
script:
- devenv shell deploy-app
#- cd source; goreleaser release --clean
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
'';
};
goReleaserYaml = pkgs.writeTextFile {
name = ".goreleaser.yml";
text = ''
# .goreleaser.yml
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
gitlab_urls:
api: https://gitlab.schukai.com/api/v4
download: https://gitlab.schukai.com
......@@ -110,10 +171,10 @@ project_name: version
builds:
- id: version
# goos:
# - linux
## - darwin
## - windows
goos:
- linux
- darwin
- windows
# goarch:
# - amd64
## - arm64
......@@ -124,35 +185,23 @@ builds:
## - hardfloat
## goamd64:
## - v1
targets:
# targets:
# - linux_amd64_v1
- linux_arm64
# - linux_386
# - linux_arm64
## - linux_386
# - darwin_amd64_v1
# - darwin_arm64
# - windows_amd64_v1
# - windows_arm64
# - windows_386
dir: ${config.devenv.root}/source
# main: ${config.devenv.root}/source/main.go
# binary: version
# builder: go
# gobinary: go
# command: build
ldflags:
- -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.build={{.Date}}
## DO NOT EDIT THIS FILE MANUALLY, IT IS GENERATED BY NIX
'';
};
in
{
in {
env.APP_NAME = "version";
# https://devenv.sh/packages/
......@@ -187,6 +236,7 @@ builds:
gnused
go-task
graphviz
treefmt
gum
httpie
hurl
......@@ -222,11 +272,17 @@ builds:
util-linux
wget
zlib
];
scripts.tag-version.exec = ''
#!${pkgs.bash}/bin/bash
if [[ -z "''${CI_JOB_TOKEN}" ]]; then
echo " ✖ Not in gitlab ci."
exit 0
fi
set -x
${pkgs.git}/bin/git config user.email "''${GITLAB_USER_EMAIL}"
${pkgs.git}/bin/git config user.name "''${GITLAB_USER_NAME:-"Gitlab CI"}"
......@@ -238,10 +294,25 @@ builds:
${pkgs.git}/bin/git reset --hard origin/master
${pkgs.git}/bin/git checkout $CI_COMMIT_REF_NAME
${pkgs.git}/bin/git pull origin $CI_COMMIT_REF_NAME
${inputs.version.defaultPackage."${builtins.currentSystem}"}/bin/version auto --git --verbose
NEWVERSION=$(${inputs.version.defaultPackage."${builtins.currentSystem}"}/bin/version predict --git exit-code-if-no-bump)
if [[ $? -eq 0 ]]; then
echo " ✖ No bump wanted."
exit 0
fi
if [[ -z "''${NEWVERSION}" ]]; then
echo " ✖ No version found."
exit 0
fi
sed -i "s/version\s*=\s*\".*\"/version=\"''${NEWVERSION}\"/" ${config.devenv.root}/project.nix
${pkgs.git}/bin/git add ${config.devenv.root}/project.nix
${pkgs.git}/bin/git commit -m "chore: Bump version to ''${NEWVERSION}"
${pkgs.git}/bin/git log --decorate=short --pretty=oneline
${pkgs.git}/bin/git tag -a "''${NEWVERSION}" -m "chore: Release ''${NEWVERSION}"
${pkgs.git}/bin/git push origin $CI_COMMIT_REF_NAME --tags
'';
......@@ -269,506 +340,38 @@ builds:
# Usage for Taskfile.yaml
update_symlink "${config.devenv.root}/Taskfile.yaml" "${taskfileYaml}"
update_symlink "${config.devenv.root}/.goreleaser.yml" "${goReleaserYaml}"
update_symlink "${config.devenv.root}/treefmt.toml" "${treefmtConfig}"
cat ${gitlabCiYaml} > "${config.devenv.root}/.gitlab-ci.yml"
'';
# https://devenv.sh/languages/
# languages.nix.enable = true;
languages = {
go = {enable = true;};
};
difftastic.enable = true;
scripts.build-app.exec = ''
#!${pkgs.bash}/bin/bash
${pkgs.treefmt}/bin/treefmt
${pkgs.nix}/bin/nix build .#version
'';
scripts.deploy-app.exec = ''
#!${pkgs.bash}/bin/bash
${pkgs.eza}/bin/eza -T#
cat ${config.devenv.root}/.goreleaser.yml
${pkgs.goreleaser}/bin/goreleaser release --clean --config ${config.devenv.root}/.goreleaser.yml
'';
# # This script is executed when the app is built
# # You can use it to build the app
# scripts.build-app.exec = ''
##!${pkgs.bash}/bin/bash
#
#set -x
#
#PATH="''${PATH}":${pkgs.coreutils}/bin
#PATH="''${PATH}":${pkgs.findutils}/bin
#PATH="''${PATH}":${pkgs.jq}/bin/
#PATH="''${PATH}":${pkgs.rsync}/bin/
#PATH="''${PATH}":${pkgs.bash}/bin/
#PATH="''${PATH}":${pkgs.curl}/bin/
#PATH="''${PATH}":${pkgs.moreutils}/bin/
#PATH="''${PATH}":${pkgs.gnutar}/bin
#PATH="''${PATH}":${pkgs.gzip}/bin/
#PATH="''${PATH}":${pkgs.procps}/bin/
#PATH="''${PATH}":${pkgs.eza}/bin/
#PATH="''${PATH}":${pkgs.git}/bin/
#PATH="''${PATH}":${pkgs.gnugrep}/bin/
#PATH="''${PATH}":${inputs.version.defaultPackage."${builtins.currentSystem}"}/bin/
#
#export PATH
#
#
#if [ -z "'CI_JOB_TOKEN" ]; then
# version=''$(git describe --tags --always --dirty)
# buildDate=''$(date -u +"%Y-%m-%dT%H:%M:%SZ")
#else
# version=''$(version predict --git)
# buildDate=''$(version date)
#fi
#
#${config.devenv.root}/bin/go-compile.sh \
# "${config.devenv.root}/source/" \
# "${config.devenv.root}/dist"/ \
# "version" \
# "main" \
# "''${version}" \
# "''${buildDate}"
#
#
#'';
#
# # This scritp is used to deploy the app to the gitlab registry
# # It is used by the gitlab-ci.yml file
# # The environment variables are set in the gitlab project settings
# scripts.deploy-app.exec = ''
##!${pkgs.bash}/bin/bash
#
#PATH="''${PATH}":${pkgs.coreutils}/bin
#PATH="''${PATH}":${pkgs.jq}/bin/
#PATH="''${PATH}":${pkgs.curl}/bin/
#PATH="''${PATH}":${pkgs.moreutils}/bin/
#PATH="''${PATH}":${pkgs.gnutar}/bin
#PATH="''${PATH}":${pkgs.gzip}/bin/
#PATH="''${PATH}":${pkgs.eza}/bin/
#PATH="''${PATH}":${pkgs.git}/bin/
#PATH="''${PATH}":${inputs.version.defaultPackage."${builtins.currentSystem}"}/bin/
#
#export -f PATH
#
#if [[ -f .env-gitlab-ci ]]; then
# source .env-gitlab-ci
# rm .env-gitlab-ci
#fi
#
#set -x
### if $HOME not set, set it to current directory
#if [[ -z "''${HOME}" ]]; then
# HOME=$(pwd)
#fi
#
#export HOME
#
#git config user.email "''${GITLAB_USER_EMAIL}"
#git config user.name "''${GITLAB_USER_NAME:-"Gitlab CI"}"
#git config pull.rebase true
#git config http.sslVerify "false"
#git remote set-url origin https://pad:''${GITLAB_TOKEN}@''${CI_REPOSITORY_URL#*@}
#
#git fetch --all --tags --unshallow
#git reset --hard origin/master
#git checkout $CI_COMMIT_REF_NAME
#git pull origin $CI_COMMIT_REF_NAME
#
#
#if [ ! -z "''${CI_PROJECT_DIR}" ]; then
# echo "CI_PROJECT_DIR is set, using it as project root."
# project_root=$(realpath "''${CI_PROJECT_DIR}")/
#elif [ ! -z "''${DEVENV_ROOT}" ]; then
# echo "DEVENV_ROOT is set, using it as project root."
# project_root=$(realpath "''${DEVENV_ROOT}")/
#else
# echo "Error: DEVENV_ROOT or CI_PROJECT_DIR environment variables are not set."
# exit 1
#fi
#
#if [ ! -d "''${project_root}" ]; then
# echo "Error: Project root directory does not seem to be valid."
# echo "Check the DEVENV_ROOT or CI_PROJECT_DIR environment variables."
# exit 1
#fi
#
#if [ -z "'CI_JOB_TOKEN" ]; then
# echo "Error: CI_JOB_TOKEN variable is not set."
# exit 1
#fi
#
#git --no-pager log --decorate=short --pretty=oneline
#
### the version should be the same as in the build task
#if ! version auto --git --verbose --exit-code-if-no-bump
#then
# echo "ERROR: Could not update version."
# exit 1
#fi
#
#git --no-pager log --decorate=short --pretty=oneline
#
#gitVersion=$(version print --git)
#
#
#for file in $(eza "''${project_root}"dist/*); do
# filname=$(basename ''${file})
# curl -v --insecure -H "JOB-TOKEN: ''${CI_JOB_TOKEN}" --upload-file \
# ''${file} \
# https://gitlab.schukai.com/api/v4/projects/''${CI_PROJECT_ID}/packages/generic/${config.env.APP_NAME}/''${gitVersion}/''${filname}
#done
#
#git push -o ci.skip origin ''${CI_COMMIT_REF_NAME} --tags
#
#echo "done"
#
# '';
#
# scripts.do-git-commit.exec = ''
# #!${pkgs.bash}/bin/bash
#
# # Define colors if the terminal supports it
# if [ -t 1 ]; then
# RED='\033[0;31m'
# GREEN='\033[0;32m'
# RESET='\033[0m'
# BOLD='\033[1m'
# else
# RED=""
# GREEN=""
# RESET=""
# fi
#
# step=1
#
# reset
# clear
#
# # create random log file
# LOGFILE="$(mktemp)"
# if [ $? -ne 0 ]; then
# echo -e "''${RED}✖ Could not create temporary log file. Exiting.''${RESET}"
# exit 1
# fi
#
# log_and_display() {
# echo -e "''${GREEN}==> $step. $1''${RESET}" | tee -a $LOGFILE
# step=$((step + 1))
# }
#
# log_error_and_display() {
# echo -e "''${RED}==> $step. $1''${RESET}" | tee -a $LOGFILE
# }
#
# printLogfileAndExit() {
# exit_code=$1
# echo -e "\n\n========================================\n\n\n"
#
# echo -e "\n\n''${BOLD}Git and GitLab Automation Script''${RESET}\n\nI have performed the following actions:\n\n"
# cat "$LOGFILE"
#
# # Optional: Remove log file
# ${pkgs.coreutils}/bin/rm -f "$LOGFILE"
#
# if [ $exit_code -eq 0 ]; then
# echo -e "\n''${GREEN}✔''${RESET} All actions were successful" | tee -a $LOGFILE
# elif [ $exit_code -eq -1 ]; then
# echo -e "\n''${RED}✖''${RESET} The script was manually cancelled" | tee -a $LOGFILE
# exit_code=0
# else
# echo -e "\n''${RED}✖''${RESET} Some actions failed" | tee -a $LOGFILE
# fi
#
# exit $exit_code
# }
#
# print_headline() {
# local title=$1
# local underline=$(printf '─%.0s' $(seq 1 ''${#title}))
# echo -e "\n\n''${BOLD}''${title}\n''${underline}''${RESET}\n"
# }
#
# do_cancel() {
# echo -e "''${RED}==> ✖ Cancelled.''${RESET}" | tee -a $LOGFILE
# printLogfileAndExit -1
# }
#
# # Function for unified logging and display
# log_action() {
# if [ $? -eq 0 ]; then
# echo -e " ''${GREEN}✔''${RESET} $1: Successful" | tee -a $LOGFILE
# else
# echo -e " ''${RED}✖''${RESET} $1: Failed" | tee -a $LOGFILE
# printLogfileAndExit 1
# fi
# }
#
# print_what_to_do() {
# echo -e "\n\nWhat do you want to do?\n"
# }
#
# git_status=$(git status --porcelain)
# if [[ -z "$git_status" ]]; then
# log_error_and_display "No changes to commit. Exiting."
# printLogfileAndExit 0
# fi
#
# print_headline "Choose commit type"
# selection=$(gum choose "feat: (new feature for the user, not a new feature for build script)" "fix: (bug fix for the user, not a fix to a build script)" "chore: (updating grunt tasks etc.; no production code change)" "docs: (changes to the documentation)" "style: (formatting, missing semi colons, etc; no production code change)" "refactor: (refactoring production code, eg. renaming a variable)" "test: (adding missing tests, refactoring tests; no production code change)" "Cancel")
#
# commit_type=$(echo "$selection" | awk -F':' '{print $1}')
#
# if [[ "$commit_type" == "Cancel" ]]; then
# do_cancel
# fi
#
# log_and_display "You chose the commit type: $commit_type"
#
# # NEXT STEP ISSUE HANDLING ############################################################################################################
# #log_and_display "Issue handling"
#
# gitlabIssues=()
# while IFS= read -r line; do
# if [[ $line =~ ^# ]]; then
# id=$(echo "$line" | awk '{print substr($1, 2)}')
# title=$(echo "$line" | awk -F'about' '{print $1}' | awk '{$1=$2=""; print substr($0, 3)}')
# gitlabIssues+=("$id > $title")
# fi
# done < <(gum spin --spinner dot --show-output --title "Ask gitlab ..." -- glab issue list --output-format=details)
#
# ## if issues are available, ask if user wants to use an existing issue or create a new one
# createOption="Create new issue"
# existingOption="Use existing issue"
# cancelOption="Cancel"
#
# print_headline "Choose issue handling"
# if [ ''${#gitlabIssues[@]} -eq 0 ]; then
# log_and_display "There are no issues available."
#
# print_what_to_do
# choice=$(gum choose "$createOption" "$cancelOption")
#
# else
# log_and_display "There are ''${#gitlabIssues[@]} issues available."
# print_what_to_do
# choice=$(gum choose "$createOption" "$existingOption" "$cancelOption")
# fi
#
# if [[ "$choice" == "$cancelOption" ]]; then
# do_cancel
# fi
#
# ## array of issue ids
# work_on_issue_ids=()
#
# issue_text=""
#
# if [[ "$choice" == "$createOption" ]]; then
# print_headline "Create new issue"
# 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
# fi
#
# log_and_display "You entered the issue title: $issue_text"
# log_and_display "You entered the issue description: $issue_description"
# echo -e "\n"
#
# gum confirm "Do you want to create this issue?"
# # gum confirm exits with status 0 if confirmed and status 1 if cancelled.
# if [ $? -eq 1 ]; then
# do_cancel
# fi
#
# issue_output=$(glab issue create -t"$issue_text" --no-editor --description "$issue_description")
# issue_id=$(echo "$issue_output" | grep -oP '(?<=/issues/)\d+')
#
# work_on_issue_ids+=("$issue_id")
#
# log_action "glab issue with id $issue_id created"
#
# else
#
# print_headline "Use existing issue"
# echo -e "Select issue with arrow keys and press tab or space to select. Press enter to confirm.\n"
# issue_ids=$(gum choose --no-limit "''${gitlabIssues[@]}")
#
# # assign issue_ids to work_on_issue_ids. iterate over lines and take integer from beginning of line
# while IFS= read -r line; do
# work_on_issue_ids+=($(echo "$line" | grep -oP '^\d+'))
# done <<<"$issue_ids"
#
# fi
#
# if [ ''${#work_on_issue_ids[@]} -eq 0 ]; then
# log_and_display "No issue selected. Exiting."
# printLogfileAndExit 0
# fi
#
# # NEXT STEP COMMIT MESSAGE ############################################################################################################
# # print work_on_issue_ids
# work_on_issue_ids_string=""
# for i in "''${work_on_issue_ids[@]}"; do
# work_on_issue_ids_string+="#$i "
# done
#
# log_and_display "You chose to work on the following issues: ''${work_on_issue_ids_string}"
#
#
# print_headline "Check for changes to commit"
#
# # ' ' = unmodified
# # M = modified
# # T = file type changed (regular file, symbolic link or submodule)
# # A = added
# # D = deleted
# # R = renamed
# # C = copied (if config option status.renames is set to "copies")
# # U = updated but unmerged
# # https://man.freebsd.org/cgi/man.cgi?query=git-status&sektion=1&manpath=freebsd-release-ports
#
# count_all_changes=$(echo "$git_status" | wc -l)
# count_staged_changes=$(echo "$git_status" | grep -c '^M')
# count_new_staged_files=$(echo "$git_status" | grep -c '^A')
# count_staged_changes=$((count_staged_changes + count_new_staged_files))
#
# git_options_all="All $count_all_changes changes"
# git_options_staged="Only the $count_staged_changes staged changes"
# git_options_select_files="Select files"
# git_options_cancel="Cancel"
#
# git_options_array=()
# if [[ $count_all_changes -gt 0 ]]; then
# git_options_array+=("$git_options_all")
# fi
#
# if [[ $count_staged_changes -gt 0 ]]; then
# git_options_array+=("$git_options_staged")
# fi
#
# git_options_array+=( "$git_options_select_files" )
# git_options_array+=( "$git_options_cancel" )
#
#
# selection=$(gum choose "''${git_options_array[@]}")
# if [[ "$selection" == "$git_options_cancel" ]]; then
# do_cancel
# fi
#
# if [[ "$selection" == "$git_options_all" ]]; then
# git add -A
# echo "1"
# elif [[ "$selection" == "$git_options_select_files" ]]; then
#
# files=()
# 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."
# printLogfileAndExit 0
# fi
#
# # add selected files
# while IFS= read -r line; do
# ## git proclimne could have letter, ? or ! at the beginning of the line
# file=$(echo "$line" | awk '{print $2}')
# if [[ -z "$file" || ! -f "$file" ]]; then
# log_and_display "No file found in line: $line"
# continue
# fi
#
# git add "$file"
# done <<<"$selected_files"
#
# fi
#
# ## count staged changes again and print
# count_staged_changes=$(echo "$git_status" | grep -c '^M')
# count_new_staged_files=$(echo "$git_status" | grep -c '^A')
# count_staged_changes=$((count_staged_changes + count_new_staged_files))
#
# log_and_display "You have $count_staged_changes staged changes to commit."
#
# # NEXT STEP COMMIT MESSAGE ############################################################################################################
#
# print_headline "Enter commit message"
# commit_message=$(gum input --placeholder "Enter commit message" --value "$commit_type: $issue_text $work_on_issue_ids_string")
#
# if [[ -z "$commit_message" ]]; then
# log_error_and_display "Commit message is empty. Exiting."
# printLogfileAndExit 1
# fi
#
# log_and_display "You entered the commit message: $commit_message"
#
# gum confirm "Do you want to commit with this message?"
# if [ $? -eq 1 ]; then
# do_cancel
# fi
#
# # NEXT STEP COMMIT ####################################################################################################################
# print_headline "Committing changes"
#
# if ! git commit -m "$commit_message" ; then
# log_error_and_display "Commit failed. Exiting."
# printLogfileAndExit 1
# fi
#
# log_and_display "Commit successful."
#
# # NEXT STEP PUSH ######################################################################################################################
#
# print_headline "Pushing changes"
#
# if ! git push ; then
# log_error_and_display "Push failed. Exiting."
# printLogfileAndExit 1
# fi
#
# log_and_display "Push successful."
#
# # Close issue ######################################################################################################################
#
# 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."
# fi
# done
#
# printLogfileAndExit 0
# '';
scripts.update-hashes.exec = ''
#!${pkgs.bash}/bin/bash
set -x
sed -i 's/vendorHash\s*=\s*".*"/vendorHash="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="/' ${config.devenv.root}/project.nix
HASH=$(${pkgs.nix}/bin/nix build 2>&1 | grep 'got:' | awk '{print $2}')
sed -i "s/vendorHash\s*=\s*\".*\"/vendorHash=\"''${HASH}\"/" ${config.devenv.root}/project.nix
'';
enterShell = ''
update-files
'';
}
......@@ -4,14 +4,17 @@
# Nixpkgs / NixOS version to use.
inputs.nixpkgs.url = "nixpkgs/nixos-23.05";
outputs = { self, nixpkgs }:
let
outputs = {
self,
nixpkgs,
}: let
# to work with older version of flakes
lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101";
rootPath = ./.;
project = import "${rootPath}/project.nix";
# System types to support.
supportedSystems = ["x86_64-linux" "x86_64-windows" "x86_64-darwin"];
......@@ -20,15 +23,10 @@
# Nixpkgs instantiated for supported system types.
nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;});
in
{
packages = forAllSystems (system:
let
in {
packages = forAllSystems (system: let
pkgs = nixpkgsFor.${system};
in
{
in {
version = pkgs.buildGoModule {
name = "version";
......@@ -37,18 +35,8 @@
src = ././source;
tags = []; # add your tags here (eq "netgo" "osusergo" "static_build")
# This hash locks the dependencies of this package. It is
# necessary because of how Go requires network access to resolve
# VCS. See https://www.tweag.io/blog/2021-03-04-gomod2nix/ for
# details. Normally one can build with a fake sha256 and rely on native Go
# mechanisms to tell you what the hash should be or determine what
# it should be "out-of-band" with other tooling (eg. gomod2nix).
# To begin with it is recommended to set this, but one must
# remeber to bump this hash when your dependencies change.
#vendorSha256 = pkgs.lib.fakeSha256;
#vendorHash = pkgs.lib.fakeHash;
vendorHash = "sha256-j3gYTLV+EvGILC1qWiLCPEaSF+XKVwd27pwjckXsT9Q=";
vendorHash = project.vendorHash;
meta = with nixpkgs.legacyPackages.${system}.lib; {
description = "Version is a program that automates and simplifies the process of incrementing version numbers for software projects.";
......@@ -56,19 +44,15 @@
license = licenses.mit;
maintainers = with maintainers; ["schukai GmbH"];
};
};
default = self.packages.${system}.version;
});
# Add dependencies that are only needed for development
devShells = forAllSystems (system:
let
devShells = forAllSystems (system: let
pkgs = nixpkgsFor.${system};
in
{
in {
default = pkgs.mkShell {
buildInputs = with pkgs; [go gopls gotools go-tools];
};
......
{
name = "Version";
mnemonic = "version";
description = "Manage version information";
supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
compileForSystems = ["linux/arm64" "linux/amd64" "darwin/amd64" "windows/amd64"];
modulePath = "gitlab.schukai.com/oss/utilities/version";
version = "0.1.7";
vendorHash = "sha256-uyWI6Gnko1J62XDk6jjRdqZ8TSFtwsTOlDwdR9Xc+ic=";
}
......@@ -34,6 +34,7 @@ type commandLineOptions struct {
ExitCode bool `short:"e" long:"exit-code-if-no-bump" description:"exit code to use if no notable changes are found"`
} `command:"auto" description:"check the git repository and increase the version if necessary. This implies --git"`
Predict struct {
ExitCode bool `short:"e" long:"exit-code-if-no-bump" description:"exit code to use if no notable changes are found"`
} `command:"predict" description:"predict the next version based on the git history. This implies --git"`
Print struct {
} `command:"print" description:"print the current version, you can combine this with --git to print the last tag"`
......@@ -188,7 +189,7 @@ func executeCommand() {
exitCode := 0
printMessage := true
if arguments.Auto.ExitCode {
if arguments.Auto.ExitCode || arguments.Predict.ExitCode {
if !arguments.Verbose {
printMessage = false
......
/nix/store/7fz761spzs45g2kdvpa6fk9j21slwmdv-Taskfile.yaml
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment