Для установки всех зависимостей пропишите в Terminal: make init
Рекомендуем добавлять данный package на уровень Library
или Services
.
Сразу после добавления появится ошибка
...must be enabled before it can be used.
. Необходимо нажать на нее и выбратьTrust & Enable
(так как макросы генерируют код, требуется явное подтверждение).
Корректное поведение объектов, созданных с помощью макросов, при использовании внутри
#Preview
макроса не гарантируется.Причина: привелегированное выполнение развертывания стандартного макроса
#Preview
от Apple.Решение: используйте
PreviewProvider
структуру.
Если необходимо добавить новый макрос, пропишите в Terminal:
make macro name=<macroName> [group=<macroGroup>]
name
- имя нового макросаgroup
- имя группы макросов. Является опциональным параметров. В случае, если не указан, используется значение первого параметра как имя группы.
Разрешены только латинские буквы.
В файле описаны основные принципы по написанию макросов в проекте, а также рассказано про полезные утилиты/сайты.
VSURF-Support/
├── Sources/
│ ├── SurfCore/
│ │ └── SomeUtil/
│ │ └── SomeUtil.swift
│ └── SurfMacros/
│ Client/
│ └── main.swift
│ ├── Macros/
│ │ ├── Components/
│ │ │ └── Router.swift
│ │ └── Utils/
│ │ └── Previews.swift
│ └── Implementation/
│ ├── Components/
│ │ ├── RouterMacro.swift
│ │ └── ComponentsPlugin.swift
│ ├── Utils/
│ │ ├── PreviewsMacro.swift
│ │ └── UtilsPlugin.swift
│ └── MacrosPlugin.swift
└── Tests/
└── SurfMacros/
├── Components/
│ └── RouterMacroTests.swift
└── Utils/
└── PreviewsMacroTests.swift
SurfCore/
- директория для утилит, не являющимися макросами, однако состовляющими ядро архитектуры VSURF.Client/
- директория для comand-line таргета. На нем удобно проверять работу макросов еще до его использования в проекте. Своего рода Playground.Macros/
- директория, содержащая файлы-объявления макросовФайл объявления макроса
(Router.swift
,Previews.swift
) - содержит заголовок макросаImplementation/
- директория,. содержащая файлы-реализации макросовФайл реализации макроса
(RouterMacro.swift
,PreviewsMacro.swift
) - содержит тело макросаГруппа макросов
(Components/
,Utils/
) - набор макросов, объединенных одной темойПлагин группы макросов
(ComponentsPlugin.swift
,UtilsPlugin.swift
) - файл-плагин, содержащий все макросы данной группыMacrosPlugin.swift
- файл-плагин, содержащий все макросы библиотеки; реализуется за счет использования плагинов групп.
По пути /Sources/.codesnippets/
можно найти code snippet'ы, используемые в проекте. Для установки перенесите в ~/Library/Developer/Xcode/UserData/CodeSnippets/
файлы с необходимыми snippet'ами, после чего перезапустите Xcode.
- Previews
Разворачивается в структуру PreviewProvider
(SwiftUI
) для открытия Canvas. Был добавлен как временное решение, пока Apple не поправят макрос #Preview
.