mirror of
https://github.com/gwebu-team/profile.d.git
synced 2025-12-11 12:15:47 +00:00
Compare commits
12 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 60e62585eb | |||
| 82d22c0bf0 | |||
| dbc138e82e | |||
| b31cb20161 | |||
| affb7ae553 | |||
|
|
dc39105663 | ||
| 8416585ac7 | |||
|
|
86034e3f02 | ||
|
|
df3199976e | ||
|
|
2f07d57c86 | ||
|
|
6271df868c | ||
|
|
b3f0f66356 |
14 changed files with 372 additions and 149 deletions
27
.editorconfig
Normal file
27
.editorconfig
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
# The POSIX standard requires the last line to end with a new line character.
|
||||
# All UNIX tools expect a new line at the end of files. Most text editors use this convention too.
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
max_line_length = 120
|
||||
|
||||
# Matches multiple files with brace expansion notation
|
||||
# Set default charset and 4 space indentation
|
||||
[*.{py,txt,md,rst,c,cxx,cpp,h,hpp,hxx,sh,cfg,ini}]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.{js,json,html,htm,xml,yaml,yml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# Tab indentation (no size specified)
|
||||
[{Makefile,*.go}]
|
||||
indent_style = tab
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.5.0
|
||||
rev: v6.0.0
|
||||
hooks:
|
||||
- id: check-added-large-files
|
||||
args: [ '--maxkb=64' ]
|
||||
|
|
|
|||
33
AGENTS.md
Normal file
33
AGENTS.md
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# AGENTS.md - Repository Guidelines for Agentic Coding
|
||||
|
||||
## Build & Development Commands
|
||||
- `make help` - Show all available targets
|
||||
- `make dist` - Create source distribution in dist/
|
||||
- `make rpm` - Build RPM package
|
||||
- `make podman_rpm` - Build RPM using podman (for MacOS)
|
||||
- `make changelog` - Add changelog entry via ./changelog.sh
|
||||
- `make check` - Run shellcheck on all shell scripts
|
||||
- `make fmt` - Format all shell scripts with shfmt
|
||||
- `make clean` - Clean generated files
|
||||
- Pre-commit hooks run automatically on commit (see .pre-commit-config.yaml)
|
||||
|
||||
## Code Style Guidelines
|
||||
- **Shell Scripts**: Use bash syntax, source-safe with `${BASH_SOURCE-}` guard
|
||||
- **File Permissions**: profile.d scripts must be 0644 (install -m 0644) - they are sourced, not executed
|
||||
- **Line Endings**: LF only (enforced by pre-commit, see .editorconfig)
|
||||
- **No trailing whitespace** (enforced by pre-commit, see .editorconfig)
|
||||
- **Error Handling**: Use `command -v` instead of `which` for portability, `set -euo pipefail`
|
||||
- **OS Compatibility**: Support both Linux and MacOS with conditional logic
|
||||
- **Naming**: Profile.d files use `z-<name>.sh` pattern for alphabetical loading
|
||||
- **Licensing**: The Unlicense unless explicitly stated otherwise
|
||||
- **Indentation**: 4 spaces for shell scripts (see .editorconfig)
|
||||
- **Large Files**: Max 64KB (enforced by pre-commit)
|
||||
|
||||
## Testing
|
||||
- No specific testing framework currently used
|
||||
- Use `make check` to lint shell scripts with shellcheck
|
||||
- Shell scripts should be tested with basic manual verification
|
||||
|
||||
## Cursor/Copilot Rules
|
||||
- No specific .cursorrules or .github/copilot-instructions.md found
|
||||
- Follow standard shell script best practices
|
||||
16
Dockerfile-build
Normal file
16
Dockerfile-build
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
FROM rockylinux:9 as build
|
||||
|
||||
WORKDIR /root/profile.d
|
||||
|
||||
COPY ./ .
|
||||
|
||||
# dnf -y update && \
|
||||
RUN \
|
||||
dnf -y install rpmdevtools make && \
|
||||
dnf -y clean all
|
||||
|
||||
# dnf -y install dnf-plugins-core epel-release && \
|
||||
# /usr/bin/crb enable && \
|
||||
# dnf -y clean all
|
||||
|
||||
RUN ./build.sh
|
||||
36
Makefile
36
Makefile
|
|
@ -1,8 +1,8 @@
|
|||
SHELL:=/bin/bash # Use bash syntax, mitigates dash's printf on Debian
|
||||
ver:=$(shell git describe --dirty --long --match='v[0-9]*.[0-9]*' | cut -c 2- | cut -d - -f 1,2,4)
|
||||
rpm_ver:=$(firstword $(subst -, ,$(ver)))
|
||||
rpm_rev:=$(subst $(rpm_ver)-,,$(ver))
|
||||
rpm_rev:=$(subst -,_,$(rpm_rev))
|
||||
name_rev:=$(subst $(rpm_ver)-,,$(ver))
|
||||
rpm_rev:=$(subst -,_,$(name_rev))
|
||||
|
||||
|
||||
help:
|
||||
|
|
@ -11,11 +11,14 @@ help:
|
|||
@echo "▀▀▀▀▀▀"
|
||||
@echo
|
||||
@echo "Available targets:"
|
||||
@echo " dist: create source distribution package in dist/"
|
||||
@echo " rpm: create an RPM package"
|
||||
@echo " changelog: Add a changelog entry to gwebu-profile.spec.in"
|
||||
@echo " dist: Create source distribution package in dist/."
|
||||
@echo " rpm: Create an RPM package."
|
||||
@echo " podman_rpm Create an RPM package using podman on MacOS."
|
||||
@echo " changelog: Add a changelog entry to gwebu-profile.spec.in."
|
||||
@echo " check: Run shellcheck on all shell scripts."
|
||||
@echo " fmt: Format all shell scripts with shfmt."
|
||||
@echo
|
||||
@echo " clean: clean all generated files"
|
||||
@echo " clean: Clean all generated files."
|
||||
@echo
|
||||
@echo "Version $(ver), rpm_ver=$(rpm_ver), rpm_rev=$(rpm_rev)."
|
||||
.PHONY: help
|
||||
|
|
@ -44,6 +47,27 @@ changelog:
|
|||
./changelog.sh
|
||||
|
||||
|
||||
.PHONY: check
|
||||
check:
|
||||
shellcheck --shell=bash --external-sources --source-path=etc/profile.d *.sh etc/profile.d/*.sh
|
||||
rpmlint *.spec.in
|
||||
|
||||
|
||||
.PHONY: fmt
|
||||
fmt:
|
||||
shfmt -w -i 4 -ci *.sh etc/profile.d/*.sh
|
||||
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf dist
|
||||
|
||||
|
||||
.PHONY: podman_rpm
|
||||
podman_rpm: dist
|
||||
podman buildx build -t podman_rpm_build -f Dockerfile-build . # --platform linux/amd64
|
||||
# Extract the RPMs from the container to ./dist/ locally.
|
||||
podman run --rm -d --name=build localhost/podman_rpm_build /usr/bin/bash -c "trap : TERM INT; sleep infinity & wait"
|
||||
podman cp build:/tmp/RPMS/. ./dist/
|
||||
podman stop build
|
||||
podman image rm localhost/podman_rpm_build
|
||||
|
|
|
|||
33
README.md
33
README.md
|
|
@ -3,16 +3,35 @@
|
|||
This is a collection of /etc/profile.d files used by the gwebu team.
|
||||
Unless explicitly stated in the file itself, the license is [The Unlicense](https://choosealicense.com/licenses/unlicense/).
|
||||
|
||||
## Hooks
|
||||
## Automation
|
||||
|
||||
Create the following hook in your local repository to update the RPM changelog for you:
|
||||
To update the RPM changelog run ./changelog.sh
|
||||
|
||||
Type `make` to see the available targets (dist, rpm, podman_rpm, changelog, clean).
|
||||
|
||||
```bash
|
||||
echo '#!/usr/bin/env bash
|
||||
## Releases
|
||||
|
||||
set -eu
|
||||
To create a new release first tag it:
|
||||
|
||||
./changelog.sh' > .git/hooks/post-commit
|
||||
chmod a+x .git/hooks/post-commit
|
||||
```shell
|
||||
git tag -a v1.0.0 -m "Release 1.0.0"
|
||||
```
|
||||
|
||||
then run `./release.sh`. At this point
|
||||
|
||||
```shell
|
||||
git commit -a --ammend
|
||||
git tag -a v1.0.0 -m "Release 1.0.0" --force
|
||||
```
|
||||
|
||||
This is a chicken and egg problem I have not decided how to solve yet.
|
||||
|
||||
Build the RPMs at this point with `make rpm` or `make podman_rpm`.
|
||||
Once everything is OK push code and the tag.
|
||||
|
||||
```shell
|
||||
git push
|
||||
git push --tags
|
||||
```
|
||||
|
||||
And draft a new release on GitHub.
|
||||
|
|
|
|||
46
build.sh
Executable file
46
build.sh
Executable file
|
|
@ -0,0 +1,46 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
shopt -s nullglob dotglob
|
||||
|
||||
if [ "$(uname -s)" != "Linux" ]; then
|
||||
echo "This script only works on Linux!" >&2
|
||||
exit 254
|
||||
fi
|
||||
set -x # debug
|
||||
|
||||
. /etc/os-release
|
||||
ARCH="${ARCH:-$(uname -m)}" #
|
||||
VER="${VER:-${VERSION_ID%%\.*}}" # 9
|
||||
DIST_PRE="${PLATFORM_ID##*:}" # el9
|
||||
DIST="${DIST:-${DIST_PRE%%[0-9]*}}" # el
|
||||
OUT_DIR="/tmp/RPMS"
|
||||
|
||||
export LANG='C.UTF-8'
|
||||
export LANGUAGE="${LANG}"
|
||||
export LC_ALL="${LANG}"
|
||||
export LC_MEASUREMENT="${LANG}"
|
||||
export LC_MONETARY="${LANG}"
|
||||
export LC_NUMERIC="${LANG}"
|
||||
export LC_TIME="${LANG}"
|
||||
|
||||
rm -rf "$OUT_DIR"
|
||||
mkdir "$OUT_DIR"
|
||||
|
||||
# Download all sources and patches.
|
||||
#spectool -g ./*.spec
|
||||
#
|
||||
# Install all build dependencies.
|
||||
#if [ "$UID" == "0" ]; then
|
||||
# dnf builddep -y --refresh ./*.spec
|
||||
#fi
|
||||
|
||||
# make dist
|
||||
|
||||
rpmbuild -ta ./dist/*.tar.xz \
|
||||
--define "_sourcedir $PWD/dist" \
|
||||
--define "_srcrpmdir $OUT_DIR" \
|
||||
--define "_rpmdir $OUT_DIR"
|
||||
|
||||
mv "$OUT_DIR"/*/*.rpm "$OUT_DIR/"
|
||||
rmdir "$OUT_DIR"/* 2>/dev/null || true
|
||||
|
|
@ -18,6 +18,6 @@ sed -i.bak "s/Version: .*/Version: ${rpm_ver}/" gwebu-profile.spec.in
|
|||
sed -i.bak "s/Release: .*/Release: ${rpm_numeric_rev}/" gwebu-profile.spec.in
|
||||
rm -f gwebu-profile.spec.in.bak
|
||||
|
||||
git add gwebu-profile.spec.in
|
||||
# git add gwebu-profile.spec.in
|
||||
|
||||
echo "gwebu-profile.spec.in changelog updated"
|
||||
|
|
|
|||
10
etc/profile.d/ssh_controlmasters.sh
Executable file → Normal file
10
etc/profile.d/ssh_controlmasters.sh
Executable file → Normal file
|
|
@ -3,7 +3,9 @@ if [ "${BASH_SOURCE-}" = "$0" ]; then
|
|||
exit 33
|
||||
fi
|
||||
|
||||
# SSH Control Masters tools (setup controlmasters to be in ~/.ssh/controlmasters).
|
||||
alias ssh_controlmasters_ls='(cd ~/.ssh/controlmasters; ls -A 2>/dev/null || echo "-- No control masters --")'
|
||||
alias ssh_controlmasters_check='(cd ~/.ssh/controlmasters; [ "$(ls -A)" ] && for i in *; do echo -n "$i: "; ssh -O check "${i%:*}" -p "${i##*:}"; done)'
|
||||
alias ssh_controlmasters_stop='(cd ~/.ssh/controlmasters; [ "$(ls -A)" ] && for i in *; do echo -n "$i: "; ssh -O stop "${i%:*}" -p "${i##*:}"; done)'
|
||||
# SSH Control Masters tools (setup controlmasters to be in ~/.ssh/c).
|
||||
alias ssh_controlmasters_ls='(cd ~/.ssh/c; ls -A 2>/dev/null || echo "-- No control masters --")'
|
||||
# shellcheck disable=SC2154
|
||||
alias ssh_controlmasters_check='(cd ~/.ssh/c; [ "$(ls -A)" ] && for i in *; do echo -n "$i: "; ssh -O check "${i%:*}" -p "${i##*:}"; done)'
|
||||
# shellcheck disable=SC2154
|
||||
alias ssh_controlmasters_stop='(cd ~/.ssh/c; [ "$(ls -A)" ] && for i in *; do echo -n "$i: "; ssh -O stop "${i%:*}" -p "${i##*:}"; done)'
|
||||
|
|
|
|||
3
etc/profile.d/z-aliases.sh
Executable file → Normal file
3
etc/profile.d/z-aliases.sh
Executable file → Normal file
|
|
@ -17,6 +17,8 @@ if [[ "$OSTYPE" != darwin* ]]; then
|
|||
# long format with ISO dates
|
||||
alias lll='ls --color=auto -Al "--time-style=+%Y-%m-%d %H:%M:%S GMT%z"'
|
||||
|
||||
# if there is iproute installed
|
||||
if command -v ip >/dev/null; then
|
||||
# color ip route
|
||||
if ip -V | grep '^ip utility, iproute2-.*, libbpf' &>/dev/null; then
|
||||
# EL 8+ - "ip utility, iproute2-6.2.0, libbpf 0.5.0"
|
||||
|
|
@ -25,6 +27,7 @@ if [[ "$OSTYPE" != darwin* ]]; then
|
|||
# EL 7 - "ip utility, iproute2-ss170501"
|
||||
alias ip='ip -c'
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# MacOS aliases
|
||||
alias ll='ls --color=auto -l'
|
||||
|
|
|
|||
0
etc/profile.d/z-env.sh
Executable file → Normal file
0
etc/profile.d/z-env.sh
Executable file → Normal file
57
etc/profile.d/z-ps-twtty-7.sh
Executable file → Normal file
57
etc/profile.d/z-ps-twtty-7.sh
Executable file → Normal file
|
|
@ -11,6 +11,10 @@
|
|||
# alternatively write to the Free Software Foundation, Inc.,
|
||||
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# z-ps-twtty-7.sh - Nice bash prompt and history archiver
|
||||
# by Doncho Gunchev <dgunchev@gmail.com>, 2025-11-02 16:27:00 EET
|
||||
# Improve python virtual environments support.
|
||||
#
|
||||
# z-ps-twtty-7.sh - Nice bash prompt and history archiver
|
||||
# by Doncho Gunchev <dgunchev@gmail.com>, 2024-01-27 15:58 EET
|
||||
# Show PIPESTATUS instead of just $?. Cleanup.
|
||||
|
|
@ -52,7 +56,8 @@ if [ "$PS1" ] ; then # interactive shell detection
|
|||
# Log the logout event.
|
||||
function prompt_command_exit() {
|
||||
trap - EXIT
|
||||
local now=$(date --rfc-3339=ns 2> /dev/null || date -Iseconds)
|
||||
local now
|
||||
now=$(date --rfc-3339=ns 2>/dev/null || date -Iseconds)
|
||||
local HistFile
|
||||
HistFile="$HOME/bash_history/$(date '+%Y-%m/%Y-%m-%d')"
|
||||
mkdir -p "${HistFile%/*}"
|
||||
|
|
@ -61,10 +66,12 @@ function prompt_command_exit() {
|
|||
|
||||
# Executed before each prompt. Fill the variables needed by PS1 here.
|
||||
function prompt_command() {
|
||||
local now=$(date --rfc-3339=ns 2> /dev/null || date -Iseconds)
|
||||
local now
|
||||
now=$(date --rfc-3339=ns 2>/dev/null || date -Iseconds)
|
||||
|
||||
# Manage the history
|
||||
local HistFile="$HOME/bash_history/$(date '+%Y-%m/%Y-%m-%d')"
|
||||
local HistFile
|
||||
HistFile="$HOME/bash_history/$(date '+%Y-%m/%Y-%m-%d')"
|
||||
mkdir -p "${HistFile%/*}"
|
||||
|
||||
if [ -z "$my_LoginTime" ]; then
|
||||
|
|
@ -78,16 +85,25 @@ function prompt_command() {
|
|||
# Add all the accessories below ...
|
||||
my_D="$(date '+%Y-%m-%d %H:%M:%S')"
|
||||
# This is for string size calculations only. The variable my_P is set, see PROMPT_COMMAND below.
|
||||
if [ -z "$my_P" ]; then my_P="ERROR"; fi # make shellcheck happy.
|
||||
local prompt="--($my_D, Err ${my_P[*]}, $my_TTY)---($PWD)--"
|
||||
|
||||
if [ -n "${VIRTUAL_ENV:-}" ] && [ -n "$_OLD_VIRTUAL_PS1" ]; then
|
||||
my_VENV="${VIRTUAL_ENV_PROMPT}"
|
||||
prompt="--($my_D, Err ${my_P[*]}, $my_TTY, $my_VENV)---($PWD)--"
|
||||
if [ "${PS1:1:${#VIRTUAL_ENV_PROMPT}}" == "$VIRTUAL_ENV_PROMPT" ]; then
|
||||
# PS1 will be restored by virtual environment's deactivate script.
|
||||
# Yeah, that has to be done better, 172 is correct but magic number.
|
||||
export PS1="${_OLD_VIRTUAL_PS1:0:172}, ${my_VENV}${_OLD_VIRTUAL_PS1:172}"
|
||||
if [ -n "$VIRTUAL_ENV_PROMPT" ]; then
|
||||
my_VENV="${VIRTUAL_ENV_PROMPT%\ }"
|
||||
my_VENV="${my_VENV%\)}"
|
||||
my_VENV="${my_VENV#\(}"
|
||||
else
|
||||
# Best guess
|
||||
export my_VENV="${VIRTUAL_ENV##*/}"
|
||||
fi
|
||||
prompt="--($my_D, Err ${my_P[*]}, $my_TTY, Venv $my_VENV)---($PWD)--"
|
||||
# local ps1_prefix
|
||||
ps1_prefix="${_OLD_VIRTUAL_PS1%\$\{my_TTY\}*}\${my_TTY}"
|
||||
ps1_suffix="${_OLD_VIRTUAL_PS1#"$ps1_prefix"}"
|
||||
# The magic with numbers copies the comma with the colors around it.
|
||||
export PS1="${ps1_prefix}${ps1_prefix:${#ps1_prefix}-39:30}\
|
||||
${ps1_prefix:${#ps1_prefix}-81:14}Venv${ps1_prefix:${#ps1_prefix}-63:14} ${my_VENV}${ps1_suffix}"
|
||||
fi
|
||||
|
||||
local fill_size=0
|
||||
|
|
@ -107,7 +123,8 @@ function prompt_command() {
|
|||
fi
|
||||
|
||||
local OldCmdNo="$CmdNo" # See if we got new command later.
|
||||
local Cmd="$(history 1)"
|
||||
local Cmd
|
||||
Cmd="$(history 1)"
|
||||
CmdNo="${Cmd:0:7}"
|
||||
if [[ -z "$OldCmdNo" ]]; then
|
||||
Cmd="login"
|
||||
|
|
@ -121,18 +138,28 @@ function prompt_command() {
|
|||
|
||||
function twtty {
|
||||
# The special "\[" and "\]" are telling bash that the text enclosed will not move the caret.
|
||||
# shellcheck disable=SC2034
|
||||
local GRAY='\[\033[1;30m\]'
|
||||
# shellcheck disable=SC2034
|
||||
local LIGHT_GRAY='\[\033[0;37m\]'
|
||||
# shellcheck disable=SC2034
|
||||
local WHITE='\[\033[1;37m\]'
|
||||
# shellcheck disable=SC2034
|
||||
local NO_COLOUR='\[\033[0m\]'
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
local LIGHT_BLUE='\[\033[1;34m\]'
|
||||
# shellcheck disable=SC2034
|
||||
local YELLOW='\[\033[1;33m\]'
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
local RED='\[\033[0;31m\]'
|
||||
# shellcheck disable=SC2034
|
||||
local LIGHT_RED='\[\033[1;31m\]'
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
local GREEN='\[\033[0;32m\]'
|
||||
# shellcheck disable=SC2034
|
||||
local LIGHT_GREEN='\[\033[1;32m\]'
|
||||
|
||||
if [ "${UID}" -ne '0' ]; then
|
||||
|
|
@ -156,8 +183,7 @@ function twtty {
|
|||
;;
|
||||
esac
|
||||
|
||||
export PS1="$TITLEBAR\
|
||||
${C1}┌${C2}─(\
|
||||
export PS1="$TITLEBAR${C1}┌${C2}─(\
|
||||
${C1}\${my_D}${C2}, ${C1}Err ${C3}\${my_P[*]}${C2}, ${C3}\${my_TTY}\
|
||||
${C2})─${C1}─\${my_FILL}${C2}─(\
|
||||
${C1}\${my_PWD}\
|
||||
|
|
@ -169,15 +195,19 @@ ${C2})${C3}\$${NO_COLOUR} "
|
|||
|
||||
export PS2="${C2}─${C1}─${C1}─${NO_COLOUR} \[\033[K\]"
|
||||
# Set my_P to the exit codes of the last command pipe.
|
||||
# shellcheck disable=SC2016
|
||||
local P='my_P=("${PIPESTATUS[@]}");prompt_command'
|
||||
if declare -p PROMPT_COMMAND &>/dev/null; then
|
||||
local re='^declare -a '
|
||||
if [[ "$(declare -p PROMPT_COMMAND)" =~ $re ]]; then # Array, supported since bash 5.1
|
||||
PROMPT_COMMAND=("$P" "${PROMPT_COMMAND[@]}")
|
||||
else # String
|
||||
# shellcheck disable=SC2178
|
||||
# shellcheck disable=SC2128
|
||||
PROMPT_COMMAND="$P;${PROMPT_COMMAND}"
|
||||
fi
|
||||
else
|
||||
# shellcheck disable=SC2178
|
||||
PROMPT_COMMAND="$P"
|
||||
fi
|
||||
unset P
|
||||
|
|
@ -194,6 +224,7 @@ if [ ! -d "$HOME/bash_history" ]; then
|
|||
fi
|
||||
|
||||
# call and unset
|
||||
twtty; unset twtty
|
||||
twtty
|
||||
unset twtty
|
||||
|
||||
fi
|
||||
|
|
|
|||
0
etc/profile.d/z-time_style.sh
Executable file → Normal file
0
etc/profile.d/z-time_style.sh
Executable file → Normal file
|
|
@ -1,6 +1,6 @@
|
|||
Summary: Gwebu profile.d - cool date, prompt with history, aliases
|
||||
Name: gwebu-profile
|
||||
Version: 1.0.3
|
||||
Version: 1.0.9
|
||||
Release: 0
|
||||
BuildArch: noarch
|
||||
License: GPLv2
|
||||
|
|
@ -41,6 +41,28 @@ install -m 0644 etc/profile.d/*.sh %{buildroot}%{_sysconfdir}/profile.d/
|
|||
|
||||
|
||||
%changelog
|
||||
* Sun Nov 30 2025 Doncho N. Gunchev <dgunchev@gmail.com> - 1.0.9-0
|
||||
- Format the code, add fmt and check targets
|
||||
|
||||
* Sun Nov 02 2025 Doncho N. Gunchev <dgunchev@gmail.com> - 1.0.8-0
|
||||
- Fixing VENV again...
|
||||
|
||||
* Tue May 27 2025 Doncho Gunchev <doncho.gunchev@flyr.com> - 1.0.7-1
|
||||
- Shorten ~/.ssh/controlmasters to ~/.ssh/c (104 char limit on mac).
|
||||
|
||||
* Sun Mar 09 2025 Doncho N. Gunchev <dgunchev@gmail.com> - 1.0.7-0
|
||||
- Improve python virtual environment support (uv) take 2.
|
||||
|
||||
* Sat Feb 15 2025 Doncho Gunchev <doncho.gunchev@flyrlabs.com> - 1.0.6-0
|
||||
- Improve python virtual environment support (uv).
|
||||
|
||||
* Wed Oct 16 2024 Doncho Gunchev <doncho.gunchev@flyrlabs.com> - 1.0.5-0
|
||||
- fix: Don't alias ip if iproute is not installed.
|
||||
|
||||
* Mon Jul 15 2024 Doncho Gunchev <doncho.gunchev@flyrlabs.com> - 1.0.4-0
|
||||
- Fix python virtual environment support.
|
||||
This works on MacOS with python 3.9, 3.10, 3.11 and 3.12.
|
||||
|
||||
* Sun Jul 14 2024 Doncho Gunchev <doncho.gunchev@flyrlabs.com> - 1.0.3-0
|
||||
- Initial python virtual environment support.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue