mirror of
https://github.com/getnora-io/nora.git
synced 2026-04-12 06:50:31 +00:00
chore: repo cleanup — remove dead crates from workspace, stale files, duplicate assets
- Remove nora-cli and nora-storage from workspace (stub crates, not used) - Remove root install.sh (duplicate of dist/install.sh) - Remove root logo.jpg (duplicate of ui/logo.jpg) - Remove committed SBOM .cdx.json files (generated by CI in release) - Remove stale .githooks/ (real hook is in .git/hooks/) - Update version in docs-ru to 0.2.32 - Add *.cdx.json to .gitignore
This commit is contained in:
@@ -1,142 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Pre-commit hook to prevent accidental commits of sensitive files
|
|
||||||
# Enable: git config core.hooksPath .githooks
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
RED='\033[0;31m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
# Allowed file extensions (whitelist)
|
|
||||||
ALLOWED_EXTENSIONS=(
|
|
||||||
'\.rs$'
|
|
||||||
'\.toml$'
|
|
||||||
'\.lock$'
|
|
||||||
'\.yml$'
|
|
||||||
'\.yaml$'
|
|
||||||
'\.json$'
|
|
||||||
'\.sh$'
|
|
||||||
'\.html$'
|
|
||||||
'\.css$'
|
|
||||||
'\.js$'
|
|
||||||
'\.gitignore$'
|
|
||||||
'\.dockerignore$'
|
|
||||||
'Dockerfile$'
|
|
||||||
'LICENSE$'
|
|
||||||
'Makefile$'
|
|
||||||
)
|
|
||||||
|
|
||||||
# Extensions that trigger a warning (not blocked)
|
|
||||||
WARN_EXTENSIONS=(
|
|
||||||
'\.md$'
|
|
||||||
)
|
|
||||||
|
|
||||||
# Always blocked patterns (regardless of extension)
|
|
||||||
BLOCKED_PATTERNS=(
|
|
||||||
'\.env$'
|
|
||||||
'\.env\.'
|
|
||||||
'\.key$'
|
|
||||||
'\.pem$'
|
|
||||||
'\.p12$'
|
|
||||||
'\.pfx$'
|
|
||||||
'\.htpasswd$'
|
|
||||||
'secret'
|
|
||||||
'credential'
|
|
||||||
'password'
|
|
||||||
'\.bak$'
|
|
||||||
'\.swp$'
|
|
||||||
'\.swo$'
|
|
||||||
'node_modules/'
|
|
||||||
'target/debug/'
|
|
||||||
'\.DS_Store'
|
|
||||||
)
|
|
||||||
|
|
||||||
# Get staged files (only NEW files, not already tracked)
|
|
||||||
STAGED_FILES=$(git diff --cached --name-only --diff-filter=A)
|
|
||||||
|
|
||||||
if [ -z "$STAGED_FILES" ]; then
|
|
||||||
# No new files, only modifications to existing - allow
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Build patterns
|
|
||||||
ALLOWED_PATTERN=$(IFS='|'; echo "${ALLOWED_EXTENSIONS[*]}")
|
|
||||||
WARN_PATTERN=$(IFS='|'; echo "${WARN_EXTENSIONS[*]}")
|
|
||||||
BLOCKED_PATTERN=$(IFS='|'; echo "${BLOCKED_PATTERNS[*]}")
|
|
||||||
|
|
||||||
# Check for blocked patterns first
|
|
||||||
BLOCKED_FILES=$(echo "$STAGED_FILES" | grep -iE "$BLOCKED_PATTERN" || true)
|
|
||||||
|
|
||||||
if [ -n "$BLOCKED_FILES" ]; then
|
|
||||||
echo -e "${RED}BLOCKED: Suspicious files detected in commit${NC}"
|
|
||||||
echo ""
|
|
||||||
echo -e "${YELLOW}Files:${NC}"
|
|
||||||
echo "$BLOCKED_FILES" | sed 's/^/ - /'
|
|
||||||
echo ""
|
|
||||||
echo "If intentional, use: git commit --no-verify"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for files with unknown extensions
|
|
||||||
UNKNOWN_FILES=""
|
|
||||||
WARN_FILES=""
|
|
||||||
|
|
||||||
while IFS= read -r file; do
|
|
||||||
[ -z "$file" ] && continue
|
|
||||||
|
|
||||||
if echo "$file" | grep -qE "$BLOCKED_PATTERN"; then
|
|
||||||
continue # Already handled above
|
|
||||||
elif echo "$file" | grep -qE "$WARN_PATTERN"; then
|
|
||||||
WARN_FILES="$WARN_FILES$file"$'\n'
|
|
||||||
elif ! echo "$file" | grep -qE "$ALLOWED_PATTERN"; then
|
|
||||||
UNKNOWN_FILES="$UNKNOWN_FILES$file"$'\n'
|
|
||||||
fi
|
|
||||||
done <<< "$STAGED_FILES"
|
|
||||||
|
|
||||||
# Warn about .md files
|
|
||||||
if [ -n "$WARN_FILES" ]; then
|
|
||||||
echo -e "${YELLOW}WARNING: Markdown files in commit:${NC}"
|
|
||||||
echo "$WARN_FILES" | sed '/^$/d' | sed 's/^/ - /'
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Block unknown extensions
|
|
||||||
if [ -n "$UNKNOWN_FILES" ]; then
|
|
||||||
echo -e "${RED}BLOCKED: Files with unknown extensions:${NC}"
|
|
||||||
echo "$UNKNOWN_FILES" | sed '/^$/d' | sed 's/^/ - /'
|
|
||||||
echo ""
|
|
||||||
echo "Allowed extensions: rs, toml, lock, yml, yaml, json, sh, html, css, js, md"
|
|
||||||
echo "If intentional, use: git commit --no-verify"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for large files (>5MB)
|
|
||||||
LARGE_FILES=$(echo "$STAGED_FILES" | while read f; do
|
|
||||||
if [ -f "$f" ]; then
|
|
||||||
size=$(stat -f%z "$f" 2>/dev/null || stat -c%s "$f" 2>/dev/null || echo 0)
|
|
||||||
if [ "$size" -gt 5242880 ]; then
|
|
||||||
echo "$f ($(numfmt --to=iec $size 2>/dev/null || echo "${size}B"))"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done)
|
|
||||||
|
|
||||||
if [ -n "$LARGE_FILES" ]; then
|
|
||||||
echo -e "${YELLOW}WARNING: Large files (>5MB) in commit:${NC}"
|
|
||||||
echo "$LARGE_FILES" | sed 's/^/ - /'
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Run cargo fmt check if Rust files changed
|
|
||||||
if git diff --cached --name-only | grep -q '\.rs$'; then
|
|
||||||
if command -v cargo &> /dev/null; then
|
|
||||||
if ! cargo fmt --check &> /dev/null; then
|
|
||||||
echo -e "${RED}BLOCKED: cargo fmt check failed${NC}"
|
|
||||||
echo "Run: cargo fmt"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -20,3 +20,9 @@ docs/
|
|||||||
## Internal files
|
## Internal files
|
||||||
.internal/
|
.internal/
|
||||||
examples/
|
examples/
|
||||||
|
|
||||||
|
# Generated by CI
|
||||||
|
*.cdx.json
|
||||||
|
|
||||||
|
# Dead crates (kept in repo for reference but excluded from workspace)
|
||||||
|
# nora-cli/ and nora-storage/ remain in git but are not built
|
||||||
|
|||||||
6
Cargo.lock
generated
6
Cargo.lock
generated
@@ -1269,7 +1269,7 @@ checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nora-cli"
|
name = "nora-cli"
|
||||||
version = "0.2.31"
|
version = "0.2.32"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
"flate2",
|
"flate2",
|
||||||
@@ -1291,7 +1291,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nora-registry"
|
name = "nora-registry"
|
||||||
version = "0.2.31"
|
version = "0.2.32"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"axum",
|
"axum",
|
||||||
@@ -1329,7 +1329,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nora-storage"
|
name = "nora-storage"
|
||||||
version = "0.2.31"
|
version = "0.2.32"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
"base64",
|
"base64",
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
resolver = "2"
|
resolver = "2"
|
||||||
members = [
|
members = [
|
||||||
"nora-registry",
|
"nora-registry",
|
||||||
"nora-storage",
|
|
||||||
"nora-cli",
|
|
||||||
"fuzz",
|
"fuzz",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
9031
dist/nora.cdx.json
vendored
9031
dist/nora.cdx.json
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
# Руководство администратора NORA
|
# Руководство администратора NORA
|
||||||
|
|
||||||
**Версия:** 1.0
|
**Версия:** 0.2.32
|
||||||
**Дата:** 2026-03-16
|
**Дата:** 2026-03-16
|
||||||
**Правообладатель:** ООО «ТАИАРС» (торговая марка АРТАИС)
|
**Правообладатель:** ООО «ТАИАРС» (торговая марка АРТАИС)
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Программа «NORA — Реестр артефактов»
|
## Программа «NORA — Реестр артефактов»
|
||||||
|
|
||||||
**Версия документа:** 1.0
|
**Версия документа:** 0.2.32
|
||||||
**Дата:** 2026-03-16
|
**Дата:** 2026-03-16
|
||||||
**Правообладатель:** ООО «ТАИАРС» (торговая марка АРТАИС)
|
**Правообладатель:** ООО «ТАИАРС» (торговая марка АРТАИС)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Руководство пользователя NORA
|
# Руководство пользователя NORA
|
||||||
|
|
||||||
**Версия:** 1.0
|
**Версия:** 0.2.32
|
||||||
**Дата:** 2026-03-16
|
**Дата:** 2026-03-16
|
||||||
**Правообладатель:** ООО «ТАИАРС» (торговая марка АРТАИС)
|
**Правообладатель:** ООО «ТАИАРС» (торговая марка АРТАИС)
|
||||||
|
|
||||||
|
|||||||
98
install.sh
98
install.sh
@@ -1,98 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
# NORA installer — https://getnora.io/install.sh
|
|
||||||
# Usage: curl -fsSL https://getnora.io/install.sh | sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
REPO="getnora-io/nora"
|
|
||||||
BINARY="nora"
|
|
||||||
INSTALL_DIR="/usr/local/bin"
|
|
||||||
|
|
||||||
# ── Detect OS and architecture ──────────────────────────────────────────────
|
|
||||||
|
|
||||||
OS="$(uname -s)"
|
|
||||||
ARCH="$(uname -m)"
|
|
||||||
|
|
||||||
case "$OS" in
|
|
||||||
Linux) os="linux" ;;
|
|
||||||
Darwin) os="darwin" ;;
|
|
||||||
*)
|
|
||||||
echo "Unsupported OS: $OS"
|
|
||||||
echo "Please download manually: https://github.com/$REPO/releases/latest"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$ARCH" in
|
|
||||||
x86_64 | amd64) arch="amd64" ;;
|
|
||||||
aarch64 | arm64) arch="arm64" ;;
|
|
||||||
*)
|
|
||||||
echo "Unsupported architecture: $ARCH"
|
|
||||||
echo "Please download manually: https://github.com/$REPO/releases/latest"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
ASSET="${BINARY}-${os}-${arch}"
|
|
||||||
|
|
||||||
# ── Get latest release version ──────────────────────────────────────────────
|
|
||||||
|
|
||||||
VERSION="$(curl -fsSL "https://api.github.com/repos/$REPO/releases/latest" \
|
|
||||||
| grep '"tag_name"' \
|
|
||||||
| sed 's/.*"tag_name": *"\([^"]*\)".*/\1/')"
|
|
||||||
|
|
||||||
if [ -z "$VERSION" ]; then
|
|
||||||
echo "Failed to get latest version"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Installing NORA $VERSION ($os/$arch)..."
|
|
||||||
|
|
||||||
# ── Download binary and checksum ────────────────────────────────────────────
|
|
||||||
|
|
||||||
BASE_URL="https://github.com/$REPO/releases/download/$VERSION"
|
|
||||||
TMP_DIR="$(mktemp -d)"
|
|
||||||
trap 'rm -rf "$TMP_DIR"' EXIT
|
|
||||||
|
|
||||||
echo "Downloading $ASSET..."
|
|
||||||
curl -fsSL "$BASE_URL/$ASSET" -o "$TMP_DIR/$BINARY"
|
|
||||||
curl -fsSL "$BASE_URL/$ASSET.sha256" -o "$TMP_DIR/$ASSET.sha256"
|
|
||||||
|
|
||||||
# ── Verify checksum ─────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
echo "Verifying checksum..."
|
|
||||||
EXPECTED="$(awk '{print $1}' "$TMP_DIR/$ASSET.sha256")"
|
|
||||||
ACTUAL="$(sha256sum "$TMP_DIR/$BINARY" | awk '{print $1}')"
|
|
||||||
|
|
||||||
if [ "$EXPECTED" != "$ACTUAL" ]; then
|
|
||||||
echo "Checksum mismatch!"
|
|
||||||
echo " Expected: $EXPECTED"
|
|
||||||
echo " Actual: $ACTUAL"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Checksum OK"
|
|
||||||
|
|
||||||
# ── Install ─────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
chmod +x "$TMP_DIR/$BINARY"
|
|
||||||
|
|
||||||
if [ -w "$INSTALL_DIR" ]; then
|
|
||||||
mv "$TMP_DIR/$BINARY" "$INSTALL_DIR/$BINARY"
|
|
||||||
elif command -v sudo >/dev/null 2>&1; then
|
|
||||||
sudo mv "$TMP_DIR/$BINARY" "$INSTALL_DIR/$BINARY"
|
|
||||||
else
|
|
||||||
# Fallback to ~/.local/bin
|
|
||||||
INSTALL_DIR="$HOME/.local/bin"
|
|
||||||
mkdir -p "$INSTALL_DIR"
|
|
||||||
mv "$TMP_DIR/$BINARY" "$INSTALL_DIR/$BINARY"
|
|
||||||
echo "Installed to $INSTALL_DIR/$BINARY"
|
|
||||||
echo "Make sure $INSTALL_DIR is in your PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ── Done ────────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "NORA $VERSION installed to $INSTALL_DIR/$BINARY"
|
|
||||||
echo ""
|
|
||||||
nora --version 2>/dev/null || true
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user