Command plugins - #5
Merged
Merged
Conversation
… to be injectable
Contributor
Author
Zmiany:
SpostrzeżeniaImo nie ma sensu wszystkich poleceń przystosowywać do pisania do nich pluginów, bo niektóre polecenia są mało istotne - tak jak na przykład ustawianie pary klucz : wartość w pliku konfiguracyjnym i ograniczyłbym się do ważniejszych poleceń (i ewentualnie na koniec jak starczy czasu podopisywał te wszystkie payload-y dla mało istotnych). Co sądzisz? Dodatkowo pomyślałem, żeby wrzucać sukcesywnie przykładowe skrypty w pythonie czy innym języku, które będą przykładami wykorzystania tych funkcjonalności. Na przykład testowanie timeout-u można zaprezentować na takim pluginie import time
for i in range(10):
print(i, flush=True)
time.sleep(0.1)Myślę, że PR jest gotowa do review ✔️ |
adamgracikowski
marked this pull request as ready for review
September 13, 2025 17:54
adamgracikowski
commented
Sep 15, 2025
adamgracikowski
left a comment
Contributor
Author
There was a problem hiding this comment.
jeszcze coś od siebie dodałem
mikolajkarbowski
approved these changes
Sep 15, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Co w PR?:
Na ten moment wrzucam jako draft, ponieważ brakuje jeszcze:
ignore,config) w sposób analogiczny jak w plikuinit_handler.rs(te polecenia przestały chwilowo działać poprzez zmianę sposobu tworzenia takich obiektów jak layout-y itp., ale to jeszcze oczywiście naprawię przed mergem)Co już można testować?:
initjest już gotowe wraz z obsługą pluginów (co ciekawe pominąłem w specyfikacji dosyć istotny fakt, że nie da się rejestrować pluginów lokalnych dla zdarzenia pre-execute i polecenia init, ponieważ.meva/jeszcze wtedy nie istnieje xD - o tym dowiedziałem się całkiem późno, więc kilka if-ów musiało się pojawić i opóźnić PR)Ja sobie wstępnie testowałem tak:
potem rejestrujemy plugin na post-execute dla init:
cargo run --bin meva -- plugins register --name print_file --file print_file.py --command init --event post-execute --order 1 --interpreter python --scope global 'C:\Users\AG\Desktop\print_file.py'tutaj przykładowy skrypcik na którym testowałem (tylko printuje invocation context):
Jutro wieczorem dopracuję brakujące rzeczy, ale wrzucam już dzisiaj jak zapowiadałem 😎
Głównie fajnie jakbyś spojrzał na crate
pluginsbo to jakby main część pracy.Z fajnych rzeczy udało się zrobić ten timeout na pluginy - można go umieścić w pliku konfiguracyjnym na przykład.
A jeżeli chodzi o zbieranie informacji o wywołaniach, to uprościłem strukturę do czegoś takiego: