Osobista konfiguracja środowiska powłoki. Ładowana z ~/.bashrc przez wskazanie na main.sh tego repozytorium.
git clone <repo >~/.koziolek-configurationW ~/.bashrc dodaj:
if [ -d $HOME/.koziolek-configuration/ ]; then
. $HOME/.koziolek-configuration/main.sh
fiNastępnie skonfiguruj hooki w repozytorium projektu:
git i # odpowiednik: git fun git_initSekrety (klucze API, hasła) trafiają do ~/.senv — plik tworzony automatycznie przy pierwszym załadowaniu z
uprawnieniami 400. Wzorzec zmiennych: .senv.template.
main.sh
├── bash/main.sh → konfiguracja powłoki
├── git/main.sh → aliasy i funkcje git
└── services/main.sh → konfiguracje serwisów (Docker, Nginx, Postgres…)
main.sh eksportuje trzy zmienne środowiskowe: MAIN_CONFIGURATION_DIR, BASH_CONFIGURATION_DIR,
GIT_CONFIGURATION_DIR, SERVICES_CONFIGURATION_DIR.
Każdy plik [0-9][0-9][0-9]_*.sh jest ładowany automatycznie w kolejności alfabetycznej przez source_directory().
| Plik | Odpowiedzialność |
|---|---|
000_functions_startup.sh |
inicjalizacja, tmux, fullscreen, neofetch |
010_function_log.sh |
log_info, log_error, log_warn, log_man |
015_function_prompt.sh |
PS1, parse_git_branch |
020_function_process.sh |
helpery procesów |
030_function_java.sh |
helpery JVM |
040_function_docker.sh |
helpery Docker |
085_function_text.sh |
manipulacja tekstem |
090_function_image.sh |
operacje na obrazach |
095_function_misc.sh |
install_lib, weather, generate_month_dirs |
100_get_and_build.sh |
system get_and_build (patrz niżej) |
110_git-context.sh |
git_context (patrz niżej) |
120_net_diag.sh |
diagnostyka sieci |
Klonuje repozytorium narzędzia do $WORKSPACE_TOOLS/<nazwa> jeśli jeszcze nie istnieje, opcjonalnie sourcuje wskazany
plik.
install_lib -r <repo_url >[-t <katalog >] [-e <plik >] [-x]
# -x sourcuje plik wskazany przez -eKolejne wywołania przy istniejącym katalogu są pomijane (fast-path bez parsowania getopts).
Przy starcie okna sprawdza, czy terminal jest fullscreen; jeśli nie — wysyła F11. Obsługuje X11 i Wayland (GNOME/Sway).
Wynik xrandr jest cachowany w ~/.cache/display_max_size_<display> — usuń plik po zmianie monitora lub
rozdzielczości.
System pluginów: git pull → wykryj system budowania → zbuduj.
get_and_build [opcje] [katalog]
-s, --skip-pull pomiń git pull
-d, --dry-run tylko wykryj system, nie buduj
-l, --list wylistuj dostępne pluginy
-p, --plugin DIR użyj innego katalogu pluginówPluginy w bash/functions.d/gab_plugins/ — każdy definiuje trzy zmienne:
PLUGIN_NAME="maven"
PLUGIN_DETECT="pom.xml"
PLUGIN_CMD="mvn clean verify"Dostępne pluginy: Maven (pom.xml), Gradle (build.gradle), Mix (mix.exs), npm (package.json), Cargo (
Cargo.toml). Pierwszy pasujący wygrywa (kolejność numeryczna).
Interaktywne przełączanie user.name/user.email git per-repozytorium. Konfiguracja w ~/.config/git-context (format
INI):
[praca]
name = Jan Kowalski
email = jan@firma.pl
[prywatny]
name = Koziolek
email = koziolek@example.com| Alias | Polecenie |
|---|---|
g |
git (przez hub) |
gst |
git status |
ll |
ls -al |
la |
ls -alt |
workspace |
cd $HOME/workspace |
.. / cd.. |
cd .. |
in-window |
xdg-open |
fix-net |
naprawa DNS w kontenerach |
pack-repo / unpack-repo |
pakowanie repo do base64 |
order66 / omega-protocol |
alias do exterminatus |
Konfiguracja stosuje lazy-loading tam, gdzie to możliwe:
- bash-completion — ładowana dopiero przy pierwszym naciśnięciu Tab (
complete -D) - dopełnianie
g— stub_git_lazyładuje prawdziwe dopełnianie git przy pierwszym użyciu - asdf completion — cachowane w
~/.cache/asdf_bash_completion, regenerowane tylko gdy plik binarny jest nowszy - SDKMAN —
sdkman-init.shsourcowany przed pierwszym promptem przez_sdkman_initwPROMPT_COMMAND - neofetch — uruchamiany asynchronicznie w tle, wynik wyświetlany przed pierwszym promptem
| Alias | Działanie |
|---|---|
g st |
git status |
g ci |
git commit |
g co |
git checkout |
g br |
git branch |
g df |
git diff |
g lg |
git log -p |
g nb |
nowa gałąź feature |
g nv |
nowa gałąź version |
g nf |
nowa gałąź fix |
g ne |
nowa gałąź experimental |
g push-upstream |
push z ustawieniem upstream |
g slow-merge |
merge bez auto-commit i fast-forward |
g lsd |
log z grafem gałęzi |
g p |
pull --prune |
g fuck |
reset --soft HEAD~ |
g exterminatus |
reset repo do stanu origin |
g la |
lista wszystkich aliasów |
g mrg <branch> |
merge podanej gałęzi do bieżącej |
g compress |
gc --prune=now |
Aliasy wymagające funkcji powłoki korzystają z wzorca git fun <nazwa_funkcji> (zmienna $GIT_FUNCTIONS,
SUPPRESS_SOURCING=1).
multihooks-template.sh deleguje hooki do katalogów <hookname>.d/, umożliwiając wiele skryptów na jeden typ hooka.
Instalacja przez git i w katalogu projektu.
Szablon globalnej konfiguracji git. Model include: szablon jest renderowany do ~/.gitconfig.generated
(nadpisywany swobodnie, gdy szablon jest nowszy — nigdy nie edytuj go ręcznie), a ~/.gitconfig to
stały "stub" z jednym wpisem [include] path = ~/.gitconfig.generated, tworzony tylko raz. Dzięki temu
ręczne git config --global ... lądują w stubie i przeżywają aktualizacje repo, zamiast być cicho
nadpisywane. Maszyny ze starym modelem (jeden w pełni generowany plik) migrują przez
bash git/migrate_gitconfig.sh — bezpieczne do wielokrotnego uruchomienia, robi kopię zapasową
i przenosi ręczne zmiany do nowego stuba.
Funcje do uruchamiania serwisów przez Docker Compose. Dane serwisów w $WORKSPACE_TOOLS/_data/:
| Serwis | Katalog danych |
|---|---|
| Nginx | _data/nginx_data |
| PostgreSQL | _data/postgres_data |
| Nexus | _data/nexus_data |
Zmienne środowiskowe: SERVICES_DATA, NGINX_DATA, POSTGRES_DATA, NEXUS_DATA, DOCKER_COMPOSE.
Diagnostykę sprzętu, logów i stanu systemu należy prowadzić przez dedykowany projekt FIX:
git clone git@github.com:Koziolek/fix-comp.gitProjekt zawiera skrypty diagnostyczne, raporty i narzędzia do analizy stanu stacji roboczej. Funkcja 120_net_diag.sh w tej konfiguracji odpowiada wyłącznie za podstawową diagnostykę sieci w powłoce.
./test/run.sh # testy unit + integration (Docker na Linux)
./test/run.sh --native # bezpośrednio na hoście, bez Dockera (wymagane na macOS)
./test/run.sh --e2e # dodatkowo e2e: initial_packages.sh w Ubuntu 24.04
./test/run.sh --all # wszystkoTesty jednostkowe/integracyjne (shunit2) w test/unit/ i test/integration/, e2e w test/e2e/.
Wyniki w test/results/. Uruchamiane automatycznie w CI (.github/workflows/test.yml).