Manifest projektu junexis.project.toml
Zakres weryfikacji
Treść zachowana z obecnego źródła. Publikacja dokumentacji nie oznacza ponownego potwierdzenia wszystkich komend, przykładów i deklaracji możliwości.
Poziom: średniozaawansowany i ekspert. Ustawienia utworzone przez init
są bezpiecznym punktem startowym dla początkującego.
Manifest znajduje się w głównym katalogu projektu. CLI szuka najbliższego
pliku junexis.project.toml, zaczynając od bieżącego katalogu i przechodząc do
katalogów nadrzędnych.
Minimalny manifest
name = "temperature-monitor"
entry = "src/main.jnx"
sourceRoots = ["src"]
targets = ["server"]
outDir = "out"
sourceRoots ma bezpieczną wartość domyślną ["src"]. Pozostałe cztery pola
są wymagane.
| Pole | Typ | Znaczenie |
|---|---|---|
name |
tekst | nazwa projektu używana przez narzędzia |
entry |
tekst | główny plik .jnx, względem katalogu projektu |
sourceRoots |
lista tekstów | katalogi, z których powstają tożsamości modułów; domyślnie src |
localLibraries |
lista tekstów | opcjonalne biblioteki lokalne jako namespace=ścieżka |
providerPackages |
lista tekstów | lokalne pakiety providerów znajdujące się wewnątrz projektu |
targets |
lista tekstów | żądane środowiska: embedded, server, report |
outDir |
tekst | katalog wynikowy, względem katalogu projektu |
name, entry i outDir nie mogą być puste. targets musi zawierać co
najmniej jedną niepustą wartość. doctor dodatkowo sprawdza, czy manifest,
źródło i układ projektu są ze sobą zgodne.
Jak wybierane są środowiska
flowchart TD
ARG{"Podano --target?"}
ARG -->|"tak"| CLI["Wybór z CLI"]
ARG -->|"nie"| MANIFEST["Wybór z targets"]
CLI --> SOURCE{"Źródło zawiera<br/>wykonywalne zadanie?"}
MANIFEST --> SOURCE
SOURCE -->|"tak"| BUILD["Generowanie"]
SOURCE -->|"nie"| STOP["Diagnostyka B0003"]
Jawne --target zastępuje wybór z manifestu dla danego wywołania. Sam wpis w
targets nie tworzy kodu dla środowiska: źródło musi zawierać odpowiadające mu
wykonywalne zadanie.
Własny kod i konfiguracja
Pliki autora przechowuj poza out/. W trybie projektu kompilator obsługuje
następujące nakładki:
| Plik autora | Miejsce w wyniku |
|---|---|
user/server/go.mod |
out/server/go.mod |
user/embedded/platformio.ini |
out/embedded/platformio.ini |
user/embedded/CMakeLists.txt |
out/embedded/CMakeLists.txt |
pozostałe pliki user/server/**/*.go |
out/server/user/ |
pliki źródłowe C/C++ z user/embedded/ |
out/embedded/user/ |
Manifest artefaktów oznacza skopiowane lub zastępujące pliki jako
user-overlay. Oryginał pozostaje w user/ i nie powinien być usuwany przez
clean.
Moduły i biblioteki lokalne
sourceRoots = ["src"]
localLibraries = ["home_db=../home-db/src"]
Plik src/domain/observations.jnx ma tożsamość
domain::observations. Plik ../home-db/src/contracts.jnx otrzymuje prefiks
biblioteki i jest widoczny jako home_db::contracts.
Katalog źródłowy nie może wychodzić poza projekt, nakładać się na drugi katalog
źródłowy ani tworzyć nazw różniących się wyłącznie wielkością liter. Biblioteka
lokalna musi mieć jawny namespace. Udany build zapisuje dokładny graf i
SHA-256 źródeł w out/debug/junexis.modules.lock.json.
Praktyczny dobór form importu, podział katalogów oraz integrację z providerem bazy pokazuje przewodnik: moduły i baza danych.
Pakiet providera i binding storage
Projekt może wskazać lokalny pakiet oraz jawnie związać go z deklaracją storage:
providerPackages = ["providers/postgresql"]
[storage.home]
declaration = "HomeStore"
provider = "postgresql"
providerVersion = "0.1.0"
config.connection = "secret:HOME_DATABASE_URL"
config.poolSize = "10"
Katalog pakietu musi pozostać wewnątrz projektu i zawierać
junexis.provider.toml. Narzędzia sprawdzają ID, dokładną wersję, kontrakt
storage, wersję ABI, capabilities, schemat konfiguracji oraz SHA-256
zadeklarowanych plików.
Konfiguracja może pochodzić z:
secret:NAZWA— sekretu wdrożenia,env:NAZWA— zmiennej środowiska,literal:wartośćalbo zwykłego tekstu — jawnej wartości niesekretnej.
Provider określa, które klucze są sekretne. Próba wpisania connection stringa bezpośrednio do takiego klucza zatrzymuje pracę. Komunikat nie powtarza odrzuconej wartości.
Udane budowanie zapisuje
out/debug/junexis.providers.lock.json. Blokada zawiera wersje, capabilities,
driver, względne źródło pakietu i SHA-256. Zachowuje rodzaj oraz nazwę
referencji do sekretu, ale nigdy jego wartość.
Obsługiwany zapis TOML
Parser manifestu przyjmuje przypisania tekstowe, jednowierszowe listy tekstów,
puste wiersze, komentarze rozpoczynane przez # poza tekstem oraz sekcje
[storage.<nazwa>]. Nie traktuj go jak pełnej implementacji TOML: nie używaj
innych sekcji, list wielowierszowych ani wartości liczbowych czy logicznych.
#komentarz projektu
name = "monitor"
entry = "src/main.jnx"
sourceRoots = ["src"]
targets = ["embedded", "server", "report"]
outDir = "out"
Po ręcznej zmianie manifestu uruchom:
junexis doctor
junexis check
Zobacz też kontrakty wyniku budowania i architekturę budowania.