Pierwsze kroki

Vira to rejestr bibliotek dla HackerScript, obslugiwany przez menedzer pakietow virus. Zamiast wlasnego serwera, Vira czyta liste bibliotek wprost z pliku repo-list.json w repozytorium vira-io/repository na GitHubie - kazda biblioteka to zwykle repozytorium git albo gotowy plik binarny opublikowany jako GitHub Release.

Nic nie trzeba instalowac poza samym virus (patrz dokumentacja HackerScript).

Instalacja biblioteki

Kazda komenda ma ten sam ksztalt:

# pobiera bibliotekÄ™ do cache/libs/vira/<nazwa>/ biezacego projektu
virus install vira pretty-error

# z jawna wersja (tag wydania / branch, dla static-lib/shared-lib/rust-lib/git)
virus install vira hk-parser --version 1.2.0

Dla typu static-lib/shared-lib/rust-lib - jesli nie podasz --version, Vira sama znajdzie najnowsze wydanie z GitHub Releases repozytorium wskazanego w polu lib.

Uzycie w kodzie

Sposob uzycia zalezy od typu biblioteki:

git (kod zrodlowy .hcs)

get <vira:pretty-error> import <pretty_error::print_pretty_error>

fun main() [
    match wczytaj_config() [
        Ok(cfg) -> [ log("config wczytany") ]
        Err(e) -> [
            print_pretty_error(pretty_error("nie mozna wczytac configu", e))
        ]
    ]
]

Biblioteka MUSI miec mod.hcs w korzeniu repo, zeby byla importowalna bez ::.

static-lib / shared-lib

Linkowanie jest automatyczne przy virus build - w kodzie uzywasz extern:

extern "hk_parser" fun hk_parse_raw(wejscie: Str) -> Int

rust-lib

Podpinane przez wygenerowany .cargo/config.toml - rowniez bez recznej konfiguracji Cargo.

Typy bibliotek

typeCo to jestJak uzyc w kodzie
gitRepozytorium ze zrodlem .hcsget <vira:nazwa>
static-libGotowy plik .aextern "nazwa" fun ...
shared-libGotowy plik .soextern "nazwa" fun ...
rust-libNatywna biblioteka .rlibextern "nazwa" fun ...
hlibFormat HackerOS (.hlib)Zaplanowane na przyszlosc - jeszcze nie zaimplementowane

Instalacja --local

Domyslnie biblioteka trafia do cache/ biezacego projektu. Flaga --local instaluje ja zamiast tego do $HOME/.hackerscript/cache/ - wspolnego miejsca dla WSZYSTKICH Twoich projektow na tej maszynie:

virus install vira pretty-error --local

hackerc automatycznie sprawdza to miejsce, jesli biblioteki nie ma lokalnie w projekcie - nie musisz instalowac jej ponownie w kazdym repo.

Publikowanie wlasnej biblioteki

  1. Utworz repozytorium na GitHubie (np. github.com/twoj-user/nazwa-biblioteki).
  2. Dla bibliotek git: wrzuc mod.hcs (musi zawierac publiczne funkcje/struktury) + Virus.hk (metadane) + README + licencje - plasko, w korzeniu repo.
  3. Dla static-lib/shared-lib/rust-lib: opublikuj skompilowany plik jako GitHub Release, z URL-em zawierajacym {version} w miejscu numeru wersji.
  4. Zrob fork vira-io/repository, dodaj swoj wpis do tablicy libraries w repo-list.json (patrz schemat ponizej) i otworz pull request.
  5. Po zmergowaniu Twoja biblioteka jest natychmiast instalowalna przez virus install vira.

Schemat repo-list.json

{
  "libraries": [
    {
      "name": "pretty-error",
      "description": "Ladne, kolorowe wyswietlanie bledow HackerScript.",
      "type": "git",
      "lib": ""
    },
    {
      "name": "hk-parser",
      "description": "Parser formatu .hk.",
      "type": "static-lib",
      "lib": "https://github.com/.../releases/download/{version}/libhk_parser.a"
    }
  ]
}
poleopis
nameNazwa uzywana w virus install vira <name> i get <vira:name>.
descriptionKrotki opis pokazywany na tej stronie.
typeJeden z: git, static-lib, shared-lib, rust-lib, hlib.
libDla git: puste = github.com/vira-io/<name>, albo jawny URL. Dla reszty: URL wydania z {version}.