feat(tools): directed panspermia inspired colonization scripts
This commit is contained in:
parent
be750b005b
commit
75d11583e4
4 changed files with 426 additions and 0 deletions
199
tools/furnish_railiance_repo.sh
Normal file
199
tools/furnish_railiance_repo.sh
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
#!/usr/bin/env bash
|
||||
# tools/furnish_railiance_repo.sh
|
||||
# Idempotently "furnishes" the repo with license, readmes, and housekeeping files.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
ensure_file() { # ensure_file <path> <here-doc label> [mode]
|
||||
local path="$1"; shift
|
||||
local label="$1"; shift
|
||||
local mode="${1:-}"
|
||||
if [[ -f "${path}" ]]; then
|
||||
echo "[=] exists: ${path}"
|
||||
else
|
||||
echo "[+] create: ${path}"
|
||||
mkdir -p "$(dirname "${path}")"
|
||||
eval "cat <<'${label}' > '${path}'"
|
||||
if [[ -n "${mode}" ]]; then chmod "${mode}" "${path}"; fi
|
||||
fi
|
||||
}
|
||||
|
||||
append_once() { # append_once <path> <needle> <text>
|
||||
local path="$1" needle="$2" text="$3"
|
||||
grep -qF "${needle}" "${path}" 2>/dev/null || { echo "${text}" >> "${path}"; echo "[+] append → ${path}"; }
|
||||
}
|
||||
|
||||
# LICENSE (MIT)
|
||||
ensure_file "${repo_root}/LICENSE" LIC <<'LIC'
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Railiance Contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
LIC
|
||||
|
||||
# Root README with badge (only if missing)
|
||||
ensure_file "${repo_root}/README.md" RREAD <<'RREAD'
|
||||
# Railiance Bootstrap
|
||||
[](LICENSE)
|
||||
|
||||
Railiance is an opinionated **Infrastructure-as-Code framework** —
|
||||
think *Rails for Ops*: convention over configuration, reproducibility first.
|
||||
|
||||
This repo (`railiance-bootstrap`) is the **entry point**:
|
||||
from two bare Linux servers, a Git repo, and credentials, you can rebuild
|
||||
a fully automated Kubernetes-based environment.
|
||||
RREAD
|
||||
|
||||
# docs/README
|
||||
ensure_file "${repo_root}/docs/README.md" DREAD <<'DREAD'
|
||||
# Railiance Documentation
|
||||
|
||||
Welcome to **Railiance** — an opinionated framework for Infrastructure-as-Code.
|
||||
Think of it as *Rails for Ops*: convention over configuration, productivity first.
|
||||
DREAD
|
||||
|
||||
# CONTRIBUTING
|
||||
ensure_file "${repo_root}/docs/CONTRIBUTING.md" CONTRIB <<'CONTRIB'
|
||||
# Contributing to Railiance
|
||||
(…short rules: no secrets, LF endings, PRs w/ tests…)
|
||||
CONTRIB
|
||||
|
||||
# .editorconfig
|
||||
ensure_file "${repo_root}/.editorconfig" ECONF <<'ECONF'
|
||||
root = true
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.{yml,yaml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.sh]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.py]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
ECONF
|
||||
|
||||
# .gitattributes
|
||||
ensure_file "${repo_root}/.gitattributes" GATTR <<'GATTR'
|
||||
* text=auto eol=lf
|
||||
*.sh text eol=lf
|
||||
*.yml text eol=lf
|
||||
*.yaml text eol=lf
|
||||
*.md text eol=lf
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.jpeg binary
|
||||
*.gif binary
|
||||
*.svg binary
|
||||
*.ico binary
|
||||
*.pdf binary
|
||||
*.zip binary
|
||||
*.tar.gz binary
|
||||
*.tgz binary
|
||||
.gitattributes text eol=lf
|
||||
.editorconfig text eol=lf
|
||||
GATTR
|
||||
|
||||
# .gitignore
|
||||
ensure_file "${repo_root}/.gitignore" GIGN <<'GIGN'
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
*.swp
|
||||
*.swo
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
*.egg-info/
|
||||
.eggs/
|
||||
.venv/
|
||||
venv/
|
||||
env/
|
||||
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-debug.log
|
||||
yarn-error.log
|
||||
.pnpm-debug.log
|
||||
|
||||
*.retry
|
||||
inventory/
|
||||
hosts
|
||||
.secrets/
|
||||
.vault_pass.txt
|
||||
|
||||
charts/*.tgz
|
||||
.helm/
|
||||
kustomize-build/
|
||||
.kube/
|
||||
*.kubeconfig
|
||||
|
||||
.terraform/
|
||||
terraform.tfstate
|
||||
terraform.tfstate.backup
|
||||
*.tfvars
|
||||
|
||||
logs/
|
||||
*.log
|
||||
.coverage
|
||||
coverage.xml
|
||||
htmlcov/
|
||||
.junit/
|
||||
*.out
|
||||
*.err
|
||||
|
||||
.gitattributes.lock
|
||||
.editorconfig.lock
|
||||
|
||||
.railiance_gitea.conf
|
||||
|
||||
.vscode/
|
||||
.idea/
|
||||
*.iml
|
||||
GIGN
|
||||
|
||||
# tools/README
|
||||
ensure_file "${repo_root}/tools/README.md" TREAD <<'TREAD'
|
||||
# Railiance Tools
|
||||
- `create_railiance_repo.sh` — create a Gitea repo (user/org).
|
||||
- `furnish_railiance_repo.sh` — idempotently add license/housekeeping to this repo.
|
||||
- `build_spore.sh` — produce a portable seed bundle (see panspermia model).
|
||||
- `seed_node.sh` — run on a blank host to kick off biogenesis.
|
||||
TREAD
|
||||
|
||||
echo "[✓] Furnishing complete."
|
||||
Loading…
Add table
Add a link
Reference in a new issue