Создание и настройка проекта
Создаем форк:
Клонируем:
git clone REMOTE-URLВ моем случае REMOTE-URL - это git@github.com:zeritiq/quartz.git
Связываем:
git remote set-url origin REMOTE-URLДобавляем оригинальный удаленный репозиторий для получения обновлений:
git remote add upstream https://github.com/jackyzha0/quartz.gitТеперь в случае появления обновлений можно выполнить:
git fetch upstreamgit checkout v4git rebase upstream/v4Это несколько излишне, но я создал ветки develop и master. И установил локально и в github основной веткой master.
Локально:
git remote set-head origin masterВ ветке хранятся только изменения по коду и конфигурациям. А в мастере заметки, изменения приходящие с v4 и мои изменения подтягиваемые из develop.
Setting up your GitHub repository
Вытягивание и публикаци заметок
Настройка вытягивания заметок
Для вытягивания только тех заметок, что готовы к публикации я написал следующий скрипт:
#!/bin/bash
# Source directory path
source_dir="$1"
target_dir="$2"
# Check for missing arguments
if [ -z "$source_dir" ] || [ -z "$target_dir" ]; then
echo "Please specify paths to source and target directories."
exit 1
fi
# Function to check metadata of a file
check_metadata() {
local file="$1"
local publish=false
# Read the contents of the file
content=$(cat "$file")
# Search for "publish: true"
if grep -q "publish: true" <<< "$content"; then
echo "true"
return 0
fi
echo "false"
return 1
}
# Main loop to find files
find "$source_dir" -type f -name "*.md" | while read -r file; do
result=$(check_metadata "$file")
if [ "$result" = "true" ]; then
relative_path=$(realpath --relative-to="$source_dir" "$file")
target_path="${target_dir}/${relative_path}"
mkdir -p "$(dirname "$target_path")"
cp "$file" "$target_path"
echo "Copying $file to $target_path"
else
echo "Skipping $file"
fi
done
echo "Copy completed."И добавил его в корень проекта с именем sync.sh.
Этот скрипт будет копировать только те заметки в метаданных которых указано свойство publish: true.
Далее установите Just.
Добавьте в проект файл .justfile:
import? 'ext.just'
set dotenv-load
sync:
rm -Rf ./content
[ -n $SOURCE_DIR ] && ./sync.sh $SOURCE_DIR ./content
[ -n $MEDIA_DIR ] && cp -R $MEDIA_DIR ./content/Media
А такжеext.just для последующего расширения списка личных команд.
После чего добавьте в проект .env:
SOURCE_DIR=/home/$USER/Obsidian
MEDIA_DIR=/home/$USER/Obsidian/PublicMediaГде:
SOURCE_DIR - папка или подпапка с заметками
MEDIA_DIR - папка с файлами используемых для публикации. Стоит отделять публичные файлы от не публичных так как для Quartz требуется, чтобы файлы фиксировались в github.
Вытягивание заметок
Выполните из корня проекта (в моем случае в ветке master):
just syncЗафиксируйте изменения:
npx quartz syncПубликация
git pushДалее можно приступить к кастомизации Quartz и к настройке развертывания Quartz.