Добавлена сборка в пакет для Debian дистрибутива
This commit is contained in:
parent
a74579d709
commit
2ad04b4603
15 changed files with 610 additions and 0 deletions
84
CMakeLists.txt
Normal file
84
CMakeLists.txt
Normal file
|
@ -0,0 +1,84 @@
|
|||
cmake_minimum_required(VERSION 3.14)
|
||||
|
||||
project(snag)
|
||||
set(PROJECT_VERSION_MAJOR 0)
|
||||
set(PROJECT_VERSION_MINOR 1)
|
||||
set(PROJECT_VERSION_PATCH 0)
|
||||
string(TIMESTAMP PROJECT_VERSION_BUILD "%y%j.%H%M")
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
include(snag_git)
|
||||
include(snag_platforms)
|
||||
set(PROJECT_VERSION_SUFFIX "-${GIT_VERSION_SUFFIX}")
|
||||
|
||||
# Overwrite suffix for Release or Release Candidate builds
|
||||
set(PROJECT_VERSION_SUFFIX "-alpha.1")
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
if(CMAKE_BUILD_TYPE)
|
||||
set(BUILD_TYPE ${CMAKE_BUILD_TYPE})
|
||||
else()
|
||||
set(BUILD_TYPE "Debug")
|
||||
endif()
|
||||
|
||||
set(PROJECT_VERSION_CODENAME ${OS_RELEASE_VERSION_CODENAME})
|
||||
set(PROJECT_VERSION_DISPLAY "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${PROJECT_VERSION_BUILD}")
|
||||
message(STATUS "PROJECT_VERSION_CODENAME: ${PROJECT_VERSION_CODENAME}")
|
||||
message(STATUS "PROJECT_VERSION_DISPLAY: ${PROJECT_VERSION_DISPLAY}")
|
||||
message(STATUS "")
|
||||
|
||||
# Deb package
|
||||
set(DEB_PACKAGE_VERSION "${PROJECT_VERSION_DISPLAY}${PROJECT_VERSION_SUFFIX}")
|
||||
if(PROJECT_VERSION_CODENAME)
|
||||
set(DEB_PACKAGE_VERSION "${DEB_PACKAGE_VERSION}-${PROJECT_VERSION_CODENAME}")
|
||||
endif()
|
||||
set(DEB_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
|
||||
string(TIMESTAMP DEB_PACKAGE_CHANGELOG_DATE "%a, %d %b %Y %H:%M:%S +0000")
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_SOURCE_DIR}/debian/changelog.in"
|
||||
"${CMAKE_SOURCE_DIR}/debian/changelog"
|
||||
)
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_SOURCE_DIR}/source/snag/version_.d.in"
|
||||
"${CMAKE_SOURCE_DIR}/source/snag/version_.d"
|
||||
)
|
||||
|
||||
message(STATUS "DEB_PACKAGE_NAME: ${DEB_PACKAGE_NAME}")
|
||||
message(STATUS "DEB_PACKAGE_VERSION: ${DEB_PACKAGE_VERSION}")
|
||||
message(STATUS "")
|
||||
|
||||
file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${CMAKE_SOURCE_DIR}/bin/${CMAKE_PROJECT_NAME}"
|
||||
COMMAND build dlang ldc --output "${CMAKE_SOURCE_DIR}/bin" --project "${CMAKE_SOURCE_DIR}"
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
COMMENT "Building snag with dub"
|
||||
)
|
||||
|
||||
add_custom_target(snag ALL
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/bin/${CMAKE_PROJECT_NAME}"
|
||||
)
|
||||
|
||||
include(snag_patch)
|
||||
|
||||
add_dependencies(snag apply_config_patch)
|
||||
|
||||
install(
|
||||
FILES "${CMAKE_SOURCE_DIR}/bin/${CMAKE_PROJECT_NAME}"
|
||||
DESTINATION bin
|
||||
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
|
||||
)
|
||||
|
||||
install(
|
||||
FILES "${CMAKE_SOURCE_DIR}/files/snag.json.bak"
|
||||
DESTINATION /etc/snag/
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||
)
|
||||
|
||||
install(
|
||||
FILES "${CMAKE_SOURCE_DIR}/files/snag.8"
|
||||
DESTINATION /usr/share/man/ru/man8/
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||
)
|
24
cmake/snag_git.cmake
Normal file
24
cmake/snag_git.cmake
Normal file
|
@ -0,0 +1,24 @@
|
|||
cmake_minimum_required(VERSION 3.6)
|
||||
|
||||
if(DEFINED ENV{CI_COMMIT_BRANCH})
|
||||
string(REGEX REPLACE ".*/" "" GIT_BRANCH $ENV{CI_COMMIT_BRANCH})
|
||||
string(REPLACE "_" "-" GIT_BRANCH ${GIT_BRANCH})
|
||||
if(NOT GIT_BRANCH STREQUAL "stable")
|
||||
set(GIT_VERSION_SUFFIX "${GIT_BRANCH}-")
|
||||
else()
|
||||
set(GIT_VERSION_SUFFIX "")
|
||||
endif()
|
||||
else()
|
||||
set(GIT_BRANCH "dev")
|
||||
set(GIT_VERSION_SUFFIX "${GIT_BRANCH}-")
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{CI_COMMIT_SHORT_SHA})
|
||||
set(GIT_TAG $ENV{CI_COMMIT_SHORT_SHA})
|
||||
else()
|
||||
set(GIT_TAG "0000000")
|
||||
endif()
|
||||
|
||||
set(GIT_VERSION_SUFFIX "${GIT_VERSION_SUFFIX}${GIT_TAG}")
|
||||
MESSAGE(STATUS "GIT_VERSION_SUFFIX: ${GIT_VERSION_SUFFIX}")
|
||||
MESSAGE(STATUS "")
|
26
cmake/snag_patch.cmake
Normal file
26
cmake/snag_patch.cmake
Normal file
|
@ -0,0 +1,26 @@
|
|||
cmake_minimum_required(VERSION 3.6)
|
||||
|
||||
find_program(PATCH_EXECUTABLE patch)
|
||||
if(NOT PATCH_EXECUTABLE)
|
||||
message(FATAL_ERROR "Patch utility not found! Install patch tool before continuing.")
|
||||
endif()
|
||||
|
||||
set(PATCH_FILE "${CMAKE_SOURCE_DIR}/patches/config.patch")
|
||||
set(PATCH_MARKER_FILE "${CMAKE_BINARY_DIR}/.config_patch_applied")
|
||||
|
||||
if(NOT EXISTS "${PATCH_FILE}")
|
||||
message(WARNING "Patch file not found: ${PATCH_FILE}")
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${PATCH_MARKER_FILE}"
|
||||
COMMAND "${PATCH_EXECUTABLE}" -p1 -i "${PATCH_FILE}" --reject-file=- --silent || exit 0
|
||||
COMMAND cmake -E touch "${PATCH_MARKER_FILE}"
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
COMMENT "Applying config.patch..."
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_custom_target(apply_config_patch
|
||||
DEPENDS "${PATCH_MARKER_FILE}"
|
||||
)
|
59
cmake/snag_platforms.cmake
Normal file
59
cmake/snag_platforms.cmake
Normal file
|
@ -0,0 +1,59 @@
|
|||
cmake_minimum_required (VERSION 3.6)
|
||||
|
||||
if (NOT WIN32)
|
||||
set (OS_RELEASE_FILE "/etc/os-release")
|
||||
file(STRINGS ${OS_RELEASE_FILE} OS_RELEASE)
|
||||
else ()
|
||||
list(APPEND OS_RELEASE "ID=${CMAKE_SYSTEM_NAME}")
|
||||
endif ()
|
||||
|
||||
foreach(_line IN LISTS OS_RELEASE)
|
||||
if (_line STREQUAL "")
|
||||
continue()
|
||||
endif()
|
||||
string(REPLACE "=" ";" _pair "${_line}")
|
||||
list(GET _pair 0 _name)
|
||||
list(GET _pair 1 _value)
|
||||
set(OS_RELEASE_${_name} ${_value})
|
||||
endforeach()
|
||||
|
||||
if (${OS_RELEASE_ID} MATCHES "altlinux")
|
||||
string(REGEX REPLACE "[\"\.]" "" alt_branch_id ${OS_RELEASE_ALT_BRANCH_ID})
|
||||
set (OS_RELEASE_VERSION_CODENAME "${alt_branch_id}")
|
||||
elseif (${OS_RELEASE_ID} MATCHES "astra")
|
||||
#string(REGEX REPLACE "_x86-64$" "" _version ${OS_RELEASE_VERSION_CODENAME})
|
||||
file(STRINGS "/etc/astra_version" _version)
|
||||
string(REGEX REPLACE "\\.|\t|\n|\r" "" _version ${_version})
|
||||
set (OS_RELEASE_VERSION_CODENAME "${OS_RELEASE_VERSION_CODENAME}")
|
||||
if (${OS_RELEASE_VERSION_CODENAME} MATCHES "4.7_arm")
|
||||
set (OS_RELEASE_VERSION_CODENAME "astra47")
|
||||
elseif (NOT ${OS_RELEASE_VERSION_CODENAME} MATCHES "orel")
|
||||
set (OS_RELEASE_VERSION_CODENAME "${OS_RELEASE_ID}${_version}")
|
||||
else ()
|
||||
set (OS_RELEASE_VERSION_CODENAME "${OS_RELEASE_VERSION_CODENAME}")
|
||||
endif()
|
||||
elseif (${OS_RELEASE_ID} MATCHES "debian")
|
||||
set (OS_RELEASE_VERSION_CODENAME "${OS_RELEASE_VERSION_CODENAME}")
|
||||
elseif (${OS_RELEASE_ID} MATCHES "centos")
|
||||
string(REGEX REPLACE "[\"\.]" "" version_id ${OS_RELEASE_VERSION_ID})
|
||||
set (OS_RELEASE_VERSION_CODENAME "el${version_id}")
|
||||
elseif (${OS_RELEASE_ID} MATCHES "fedora")
|
||||
set (OS_RELEASE_VERSION_CODENAME "f${OS_RELEASE_VERSION_ID}")
|
||||
elseif (${OS_RELEASE_ID} MATCHES "freebsd")
|
||||
set (OS_RELEASE_VERSION_CODENAME "${OS_RELEASE_NAME}")
|
||||
elseif (${OS_RELEASE_ID} MATCHES "msys2")
|
||||
set (OS_RELEASE_VERSION_CODENAME "${OS_RELEASE_ID}")
|
||||
elseif (${OS_RELEASE_ID} MATCHES "ubuntu")
|
||||
set (OS_RELEASE_VERSION_CODENAME "${OS_RELEASE_UBUNTU_CODENAME}")
|
||||
elseif (${OS_RELEASE_ID} MATCHES "sberlinux")
|
||||
string(REGEX REPLACE "[\"\.]" "" version_id ${OS_RELEASE_VERSION_ID})
|
||||
set (OS_RELEASE_VERSION_CODENAME "sl${version_id}")
|
||||
elseif (${OS_RELEASE_ID} MATCHES "Windows")
|
||||
set (OS_RELEASE_VERSION_CODENAME "win")
|
||||
else ()
|
||||
set (OS_RELEASE_VERSION_CODENAME "")
|
||||
endif()
|
||||
|
||||
MESSAGE(STATUS "OS_RELEASE_ID: ${OS_RELEASE_ID}")
|
||||
MESSAGE(STATUS "OS_RELEASE_VERSION_CODENAME: ${OS_RELEASE_VERSION_CODENAME}")
|
||||
MESSAGE(STATUS "")
|
6
debian.md
Normal file
6
debian.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Сборка из под Debian
|
||||
|
||||
```
|
||||
cmake .
|
||||
dpkg-buildpackage -us -uc -nc
|
||||
```
|
10
debian/.gitignore
vendored
Normal file
10
debian/.gitignore
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
.debhelper
|
||||
*.debhelper
|
||||
*.debhelper.log
|
||||
changelog
|
||||
debhelper-build-stamp
|
||||
termidesk-lsb
|
||||
termidesk-lsb.substvars
|
||||
files
|
||||
tmp
|
||||
|
6
debian/changelog.in
vendored
Normal file
6
debian/changelog.in
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
${DEB_PACKAGE_NAME} (${DEB_PACKAGE_VERSION}) stable; urgency=medium
|
||||
|
||||
* Release snag ${DEB_PACKAGE_VERSION}
|
||||
|
||||
-- Alexander Zhirov <alexander@zhirov.kz> ${DEB_PACKAGE_CHANGELOG_DATE}
|
||||
|
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
11
|
14
debian/control
vendored
Normal file
14
debian/control
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
Source: snag
|
||||
Maintainer: Alexander Zhirov <alexander@zhirov.kz>
|
||||
Section: non-free/admin
|
||||
Priority: optional
|
||||
Build-Depends: debhelper (>= 11), cmake
|
||||
Homepage: https://zhirov.kz
|
||||
|
||||
Package: snag
|
||||
Architecture: any
|
||||
Section: non-free/admin
|
||||
Priority: optional
|
||||
Description: Сommand-line utility for creating, managing, and restoring data snapshots
|
||||
Depends: git (>= 2.30)
|
||||
Homepage: https://zhirov.kz
|
23
debian/rules
vendored
Executable file
23
debian/rules
vendored
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/make -f
|
||||
|
||||
BUILD_SYSTEM = --buildsystem=cmake
|
||||
DEBIAN_DIR = $(CURDIR)/debian
|
||||
DEST_DIR = $(DEBIAN_DIR)/snag
|
||||
|
||||
%:
|
||||
dh $@ $(BUILD_SYSTEM)
|
||||
|
||||
override_dh_auto_configure:
|
||||
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr
|
||||
|
||||
override_dh_auto_build:
|
||||
cmake --build build
|
||||
|
||||
override_dh_auto_test:
|
||||
# Ничего не делаем, тесты отсутствуют
|
||||
|
||||
override_dh_auto_install:
|
||||
DESTDIR=$(DEST_DIR) cmake --install build
|
||||
|
||||
override_dh_shlibdeps:
|
||||
# Отключить проверку зависимостей от *.so
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
3.0 (native)
|
324
files/snag.8
Normal file
324
files/snag.8
Normal file
|
@ -0,0 +1,324 @@
|
|||
.\" Man-страница для snag
|
||||
.\" Сгенерирована из документации Markdown
|
||||
.TH SNAG 1 "30 мая 2025" "1.0" "Команды пользователя"
|
||||
.SH НАЗВАНИЕ
|
||||
snag \- утилита для создания, управления и восстановления снимков данных
|
||||
.SH СИНТАКСИС
|
||||
.B snag
|
||||
[\fIфлаги\fR] [\fIопции\fR] \fIкоманда\fR
|
||||
.SH ОПИСАНИЕ
|
||||
.B snag
|
||||
(snapshot git) — это утилита командной строки для создания, управления и восстановления снимков данных. Она позволяет импортировать, экспортировать, создавать и восстанавливать снимки, а также управлять правилами отслеживания файлов.
|
||||
.SH ФЛАГИ
|
||||
.TP
|
||||
.BR \-h ", " \-\-help
|
||||
Выводит справку.
|
||||
.TP
|
||||
.BR \-\-version
|
||||
Выводит версию утилиты.
|
||||
.SH ОПЦИИ
|
||||
.TP
|
||||
.BR \-c ", " \-\-config " <путь>"
|
||||
Указывает путь к файлу конфигурации.
|
||||
.SH КОМАНДЫ
|
||||
.TP
|
||||
.B init
|
||||
Инициализация репозитория для хранения снимков.
|
||||
.RS
|
||||
.B snag init
|
||||
[\-h] [\-f]
|
||||
.TP
|
||||
.BR \-f ", " \-\-force
|
||||
Перезаписывает существующий репозиторий.
|
||||
.RE
|
||||
.TP
|
||||
.B create
|
||||
Создание нового снимка.
|
||||
.RS
|
||||
.B snag create
|
||||
[\-h] [\-\-no\-pre] [\-\-no\-post] [\-c <комментарий>] [\-a <автор>] [\-e <email>]
|
||||
.TP
|
||||
.BR \-\-no\-pre
|
||||
Выполнение без предкоманд.
|
||||
.TP
|
||||
.BR \-\-no\-post
|
||||
Выполнение без посткоманд.
|
||||
.TP
|
||||
.BR \-c ", " \-\-comment " <значение>"
|
||||
Указывает комментарий к снимку.
|
||||
.TP
|
||||
.BR \-a ", " \-\-author " <значение>"
|
||||
Указывает автора снимка.
|
||||
.TP
|
||||
.BR \-e ", " \-\-email " <значение>"
|
||||
Указывает email автора.
|
||||
.RE
|
||||
.TP
|
||||
.B import
|
||||
Импорт снимка из архива tar.gz.
|
||||
.RS
|
||||
.B snag import
|
||||
[\-h] [\-\-no\-pre] [\-\-no\-post] [\-c <комментарий>] [\-a <автор>] [\-e <email>] <путь_к_архиву>
|
||||
.TP
|
||||
.BR \-\-no\-pre
|
||||
Без выполнения предкоманд.
|
||||
.TP
|
||||
.BR \-\-no\-post
|
||||
Без выполнения посткоманд.
|
||||
.TP
|
||||
.BR \-c ", " \-\-comment " <значение>"
|
||||
Комментарий к снимку.
|
||||
.TP
|
||||
.BR \-a ", " \-\-author " <значение>"
|
||||
Автор снимка.
|
||||
.TP
|
||||
.BR \-e ", " \-\-email " <значение>"
|
||||
Email автора.
|
||||
.TP
|
||||
.BR <путь_к_архиву>
|
||||
Путь к файлу tar.gz.
|
||||
.RE
|
||||
.TP
|
||||
.B export
|
||||
Экспорт снимка в архив tar.gz.
|
||||
.RS
|
||||
.B snag export
|
||||
[\-h] [\-s <хэш_снимка>] <путь_к_папке>
|
||||
.TP
|
||||
.BR \-s ", " \-\-snapshot " <хэш>"
|
||||
Указывает хэш снимка.
|
||||
.TP
|
||||
.BR <путь_к_папке>
|
||||
Путь к папке для сохранения архива.
|
||||
.RE
|
||||
.TP
|
||||
.B restore
|
||||
Восстановление состояния из указанного снимка.
|
||||
.RS
|
||||
.B snag restore
|
||||
[\-h] [\-\-no\-pre] [\-\-no\-post] <хэш_снимка>
|
||||
.TP
|
||||
.BR \-\-no\-pre
|
||||
Без выполнения предкоманд.
|
||||
.TP
|
||||
.BR \-\-no\-post
|
||||
Без выполнения посткоманд.
|
||||
.TP
|
||||
.BR <хэш_снимка>
|
||||
Хэш восстанавливаемого снимка.
|
||||
.RE
|
||||
.TP
|
||||
.B list
|
||||
Вывод списка снимков.
|
||||
.RS
|
||||
.B snag list
|
||||
[\-h] [\-c] [\-a] [\-e]
|
||||
.TP
|
||||
.BR \-c ", " \-\-comment
|
||||
Показать комментарии к снимкам.
|
||||
.TP
|
||||
.BR \-a ", " \-\-author
|
||||
Показать авторов снимков.
|
||||
.TP
|
||||
.BR \-e ", " \-\-email
|
||||
Показать email авторов.
|
||||
.RE
|
||||
.TP
|
||||
.B diff
|
||||
Показ изменённых данных.
|
||||
.RS
|
||||
.B snag diff
|
||||
.RE
|
||||
.TP
|
||||
.B status
|
||||
Проверка статуса отслеживаемых файлов.
|
||||
.RS
|
||||
.B snag status
|
||||
.RE
|
||||
.TP
|
||||
.B size
|
||||
Отображение размера снимков.
|
||||
.RS
|
||||
.B snag size
|
||||
.RE
|
||||
.TP
|
||||
.B rules
|
||||
Управление правилами отслеживания.
|
||||
.RS
|
||||
.B snag rules
|
||||
[\-h] save|show|update|reset|clear
|
||||
.TP
|
||||
.B save
|
||||
Сохраняет правила.
|
||||
.TP
|
||||
.B show
|
||||
Показывает правила.
|
||||
.RS
|
||||
.B snag rules show
|
||||
[\-h] [\-c]
|
||||
.TP
|
||||
.BR \-c ", " \-\-config
|
||||
Показать правила из файла конфигурации.
|
||||
.RE
|
||||
.TP
|
||||
.B update
|
||||
Обновляет правила.
|
||||
.RS
|
||||
.B snag rules update
|
||||
[\-h] [\-r]
|
||||
.TP
|
||||
.BR \-r ", " \-\-remove
|
||||
Удаляет игнорируемые файлы из отслеживания (требуется осторожность).
|
||||
.RE
|
||||
.TP
|
||||
.B reset
|
||||
Сбрасывает правила до состояния внесенных изменений.
|
||||
.TP
|
||||
.B clear
|
||||
Очищает правила.
|
||||
.RE
|
||||
.SH ПРИМЕРЫ
|
||||
.TP
|
||||
Инициализация репозитория:
|
||||
.RS
|
||||
.B snag init
|
||||
.RE
|
||||
.TP
|
||||
Создание снимка с комментарием:
|
||||
.RS
|
||||
.B snag create -c \(dqНачальный снимок\(dq -a \(dqИван Иванов\(dq -e \(dqivan@example.com\(dq
|
||||
.RE
|
||||
.TP
|
||||
Импорт снимка из архива:
|
||||
.RS
|
||||
.B snag import archive.tar.gz
|
||||
.RE
|
||||
.TP
|
||||
Экспорт снимка:
|
||||
.RS
|
||||
.B snag export -s abc123 /path/to/output
|
||||
.RE
|
||||
.TP
|
||||
Восстановление снимка:
|
||||
.RS
|
||||
.B snag restore abc123
|
||||
.RE
|
||||
.TP
|
||||
Просмотр списка снимков с комментариями:
|
||||
.RS
|
||||
.B snag list -c
|
||||
.RE
|
||||
.TP
|
||||
Обновление правил отслеживания:
|
||||
.RS
|
||||
.B snag rules update
|
||||
.RE
|
||||
.SH КОНФИГУРАЦИЯ
|
||||
.B snag
|
||||
поддерживает настройку через конфигурационный файл в формате JSON, который задаётся с помощью опции
|
||||
.B -c
|
||||
или
|
||||
.B --config.
|
||||
Этот файл определяет параметры работы утилиты, включая пути, автора, команды для выполнения до и после создания снимков, а также правила отслеживания файлов.
|
||||
|
||||
Пример использования конфигурационного файла:
|
||||
.RS
|
||||
.B snag -c /path/to/config.json create
|
||||
.RE
|
||||
|
||||
.SS Пример конфигурационного файла
|
||||
.nf
|
||||
{
|
||||
"git": "/path/to/git/repository/dir",
|
||||
"project": "/path/to/project",
|
||||
"email": "user@site.domain",
|
||||
"author": "snag",
|
||||
"presnag": [
|
||||
"systemctl stop my.service"
|
||||
],
|
||||
"postsnag": [
|
||||
"systemctl start my.service"
|
||||
],
|
||||
"rules": {
|
||||
"tracking": [
|
||||
"/first_dir/",
|
||||
"/second_dir/*.conf",
|
||||
"/second_dir/more/"
|
||||
],
|
||||
"ignore": [
|
||||
"/second_dir/more/*.so"
|
||||
]
|
||||
}
|
||||
}
|
||||
.fi
|
||||
|
||||
.SS Описание полей конфигурационного файла
|
||||
.TP
|
||||
.B git (строка)
|
||||
Путь к репозиторию для хранения снимков (например, /path/to/git/repository/dir).
|
||||
.TP
|
||||
.B project (строка)
|
||||
Путь к проекту или директории, файлы которой отслеживаются (например, /path/to/project).
|
||||
.TP
|
||||
.B email (строка)
|
||||
Email автора снимков (например, user@site.domain). Переопределяется опцией
|
||||
.B -e
|
||||
или
|
||||
.B --email.
|
||||
.TP
|
||||
.B author (строка)
|
||||
Имя автора снимков (например, snag). Переопределяется опцией
|
||||
.B -a
|
||||
или
|
||||
.B --author.
|
||||
.TP
|
||||
.B presnag (массив строк)
|
||||
Список команд, выполняемых перед созданием или импортом снимка (если не указан
|
||||
.B --no-pre).
|
||||
Пример: systemctl stop my.service.
|
||||
.TP
|
||||
.B postsnag (массив строк)
|
||||
Список команд, выполняемых после создания или импорта снимка (если не указан
|
||||
.B --no-post).
|
||||
Пример: systemctl start my.service.
|
||||
.TP
|
||||
.B rules (объект)
|
||||
Определяет правила отслеживания файлов.
|
||||
.RS
|
||||
.TP
|
||||
.B tracking (массив строк)
|
||||
Список шаблонов файлов или директорий для отслеживания (например, /first_dir/, /second_dir/*.conf, /second_dir/more/).
|
||||
.TP
|
||||
.B ignore (массив строк)
|
||||
Список файлов или директорий, исключаемых из отслеживания (например, /second_dir/more/*.so).
|
||||
.RE
|
||||
.SS Примечания
|
||||
.IP \(bu 4
|
||||
Правила в разделе
|
||||
.B rules
|
||||
можно обновлять с помощью
|
||||
.B snag rules update
|
||||
или просматривать с помощью
|
||||
.B snag rules show -c.
|
||||
.IP \(bu 4
|
||||
Параметры командной строки, такие как
|
||||
.B -e
|
||||
или
|
||||
.B -a,
|
||||
имеют приоритет над значениями из конфигурационного файла.
|
||||
.IP \(bu 4
|
||||
Убедитесь, что пути, указанные в
|
||||
.B git
|
||||
и
|
||||
.B project,
|
||||
существуют и доступны для записи/чтения.
|
||||
.IP \(bu 4
|
||||
Команды в
|
||||
.B presnag
|
||||
и
|
||||
.B postsnag
|
||||
должны быть корректными и доступными в системе, иначе операция может завершиться ошибкой.
|
||||
.SH ЛИЦЕНЗИЯ
|
||||
GPL-2.0. Подробности см. в файле LICENSE.
|
||||
.SH КОНТАКТЫ
|
||||
Для вопросов и предложений: alexander@zhirov.kz
|
16
files/snag.json.bak
Normal file
16
files/snag.json.bak
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"git": "",
|
||||
"project": "",
|
||||
"email": "",
|
||||
"author": "",
|
||||
"presnag": [
|
||||
],
|
||||
"postsnag": [
|
||||
],
|
||||
"rules": {
|
||||
"tracking": [
|
||||
],
|
||||
"ignore": [
|
||||
]
|
||||
}
|
||||
}
|
13
patches/config.patch
Normal file
13
patches/config.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/source/app.d b/source/app.d
|
||||
index a79b3f8..2872378 100644
|
||||
--- a/source/app.d
|
||||
+++ b/source/app.d
|
||||
@@ -148,7 +148,7 @@ int main(string[] args)
|
||||
)
|
||||
.parse(args);
|
||||
|
||||
- string configFile = argumets.option("config", "snag.json");
|
||||
+ string configFile = argumets.option("config", "/etc/snag/snag.json");
|
||||
|
||||
SnagConfig config;
|
||||
|
3
source/snag/version_.d.in
Normal file
3
source/snag/version_.d.in
Normal file
|
@ -0,0 +1,3 @@
|
|||
module snag.version_;
|
||||
|
||||
enum snagVersion = "${PROJECT_VERSION_DISPLAY}";
|
Loading…
Add table
Add a link
Reference in a new issue