73 lines
3.0 KiB
Plaintext
Executable File
73 lines
3.0 KiB
Plaintext
Executable File
#/bin/sh
|
||
|
||
SYSTEM_DIR="/calista"
|
||
REGISTRY_FILE="$SYSTEM_DIR/registry.db"
|
||
USER=$(whoami)
|
||
|
||
# Проверяем, существует ли файл реестра
|
||
if [ -f "$REGISTRY_FILE" ]; then
|
||
echo "Ошибка: Файл реестра уже существует: $REGISTRY_FILE"
|
||
echo "Инициализация запрещена. Если вы хотите пересоздать реестр, удалите файл вручную."
|
||
exit 1
|
||
fi
|
||
|
||
# Файла нет — создаём директорию (если её нет)
|
||
if [ ! -d "$SYSTEM_DIR" ]; then
|
||
mkdir -p "$SYSTEM_DIR"
|
||
if [ ! -d "$SYSTEM_DIR" ]; then
|
||
echo "Критическая ошибка: Не удалось создать системную директорию"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
# Создаём базу данных и таблицы
|
||
echo "Создаём файл реестра: $REGISTRY_FILE"
|
||
|
||
#Calista log
|
||
sqlite3 "$REGISTRY_FILE" <<EOF
|
||
CREATE TABLE IF NOT EXISTS calista_log (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
type TEXT NOT NULL, -- 'error', 'info'
|
||
user TEXT NOT NULL,
|
||
details TEXT, -- дополнительная информация
|
||
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
EOF
|
||
|
||
sqlite3 "$REGISTRY_FILE" <<EOF
|
||
INSERT INTO calista_log (type, user, details) VALUES ('info', '$USER', 'Регистр Calista инициализирован успешно');
|
||
INSERT INTO calista_log (type, user, details) VALUES ('info', '$USER', 'Путь к реестру - $REGISTRY_FILE');
|
||
EOF
|
||
|
||
#Создание таблицы компонентов
|
||
sqlite3 "$REGISTRY_FILE" <<EOF
|
||
CREATE TABLE IF NOT EXISTS components (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
name TEXT UNIQUE NOT NULL, -- уникальный идентификатор компонента (cpm, cgl)
|
||
version TEXT, -- версия
|
||
source TEXT, -- git / local
|
||
description TEXT, -- описание
|
||
installed_at TIMESTAMP -- время установки
|
||
);
|
||
EOF
|
||
|
||
#Создание таблицы устройств
|
||
sqlite3 "$REGISTRY_FILE" <<EOF
|
||
-- Таблица устройств (текущее состояние системы)
|
||
CREATE TABLE IF NOT EXISTS devices (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
bus TEXT NOT NULL, -- 'pci', 'usb'
|
||
vendor TEXT NOT NULL, -- '0x8086'
|
||
device TEXT NOT NULL, -- '0x4222'
|
||
subvendor TEXT, -- '0x1179' (опционально)
|
||
subdevice TEXT, -- '0xff10' (опционально)
|
||
name TEXT DEFAULT 'unknown', -- 'Intel 3945ABG Wi-Fi'
|
||
status TEXT DEFAULT 'unknown', -- 'installed', 'not_installed', 'builtin', 'unknown'
|
||
driver TEXT, -- 'wpi', 'nvidia', 'snd_hda'
|
||
module_path TEXT, -- путь к модулю (если известен)
|
||
detected_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
UNIQUE(bus, vendor, device, subvendor, subdevice)
|
||
);
|
||
EOF
|