
# Συμβατότητα με το sg

Το `vendor/bin/sg` είναι ένα επίπεδο συμβατότητας τύπου ast-grep. Δέχεται τις συνηθέστερες σημαίες `ast-grep` και χρησιμοποιεί τον ίδιο μηχανισμό `Greph\Ast\AstSearcher` με το `vendor/bin/greph -p`. Η επαληθευμένη επιφάνεια αναπαράγεται από δοκιμαστικές εκτελέσεις με το ανάντη εκτελέσιμο `sg` και βρίσκεται στην ενότητα [Για προχωρημένους / Πίνακας δυνατοτήτων](https://greph.inline0.dev/el/docs/advanced/feature-matrix).

## Πότε να το χρησιμοποιήσετε

Χρησιμοποιήστε το περιτύλιγμα όταν:

- Έχετε ήδη κάποιο εργαλείο, πράκτορα ή σενάριο που καλεί το `sg`.
- Θέλετε μια άμεση αντικατάσταση που λειτουργεί σε περιβάλλοντα όπου δεν μπορείτε να εγκαταστήσετε το ίδιο το `ast-grep`.
- Θέλετε την ευκολία χρήσης του ast-grep σε εγκατάσταση μόνο με Composer.

Χρησιμοποιήστε το εγγενές `vendor/bin/greph -p` όταν:

- Γράφετε νέο κώδικα και δεν χρειάζεστε τη μορφή ast-grep CLI.
- Θέλετε το ίδιο σύνολο σημαιών με τη λειτουργία κειμένου (το εγγενές εκτελέσιμο ενοποιεί και τις δύο).

## Χρήση

```bash
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
```

Το `run` είναι η κανονική εντολή ast-grep. Τα `scan` και `rewrite` είναι ψευδώνυμα μόνο του περιτυλίγματος που αντιστοιχούν στη συνήθη χρήση. Μια απλή κλήση εκτελεί αναζήτηση μίας φοράς:

```bash
./vendor/bin/sg --pattern 'array($$$ITEMS)' src
```

## Μοτίβα

Η γραμματική μοτίβων είναι ίδια με εκείνη της εγγενούς αναζήτησης AST. Δείτε την ενότητα [Λειτουργίες / Αναζήτηση AST](https://greph.inline0.dev/el/docs/modes/ast) για την πλήρη αναφορά.

```bash
./vendor/bin/sg run --pattern 'array($$$ITEMS)' src
./vendor/bin/sg run --pattern '$obj->$method($$$ARGS)' src
./vendor/bin/sg run --pattern 'new $CLASS()' src
```

## Αναδιατυπώσεις

Το περιτύλιγμα υποστηρίζει την ίδια ροή εργασίας δοκιμαστικής εκτέλεσης / διαδραστικής χρήσης / εγγραφής με την εγγενή αναδιατύπωση, με ονόματα σημαιών ast-grep:

```bash
# Preview only (default)
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' src

# Apply without confirmation
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' --update-all src

# Confirm each match
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' --interactive src

# Wrapper-only aliases
./vendor/bin/sg rewrite -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --dry-run src
./vendor/bin/sg rewrite -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --interactive src
```

## Έξοδος JSON

Το `--json` παράγει δεδομένα JSON σε μορφή ast-grep. Υποστηρίζονται τρία στυλ:

```bash
./vendor/bin/sg run --json --pattern 'dispatch($EVENT)' src
./vendor/bin/sg run --json=stream --pattern 'dispatch($EVENT)' src
./vendor/bin/sg run --json=compact --pattern 'dispatch($EVENT)' src
```

| Στυλ | Μορφή |
|---|---|
| `--json` (προεπιλεγμένη μορφή `pretty`) | Ένας πίνακας JSON με όμορφη μορφοποίηση |
| `--json=stream` | Μία αντιστοίχιση ανά γραμμή, με JSON οριοθετημένο από αλλαγές γραμμής |
| `--json=compact` | Ένας συμπαγής πίνακας JSON |

## Επαληθευμένη επιφάνεια

Οι ακόλουθες σημαίες έχουν επαληθευτεί με το ανάντη εκτελέσιμο `sg` στον [πίνακα δυνατοτήτων](https://greph.inline0.dev/el/docs/advanced/feature-matrix). Όταν μια σημαία έχει δύο γραφές (`-p` και `--pattern`, `--glob` και `--globs`), η δοκιμή χρησιμοποιεί τη μία και το περιτύλιγμα αναλύει και τις δύο ως την ίδια επιλογή.

### Σημαίες μοτίβων

- `--pattern PATTERN` (στο ανώτατο επίπεδο και μέσα στο `run`)
- `-p PATTERN` (ψευδώνυμο)
- `--rewrite TEMPLATE`
- `-r TEMPLATE`
- `--lang NAME`, `-l NAME`

### Σημαίες αντιστοίχισης

- `--files-with-matches`
- `--json` (`pretty`, `stream`, `compact`)
- `--update-all`, `-U`

### Σημαίες διάσχισης

- `--no-ignore hidden` (συνδυασμένη μορφή)
- `--glob GLOB`, `--globs GLOB`

### Σημαίες εργατών

- `-j N`, `--threads N`

### Αποδεκτές χωρίς δοκιμή

Το περιτύλιγμα δέχεται επίσης τις εξής σημαίες, αλλά δεν καλύπτονται ακόμη από δοκιμή του πίνακα δυνατοτήτων:

- `--no-ignore` μεμονωμένα ή με τιμή διαφορετική από `hidden`
- `--type NAME`, `--type-not NAME`

### Πρόσθετες λειτουργίες μόνο του περιτυλίγματος

Το περιτύλιγμα παρέχει ορισμένα βοηθητικά εργαλεία που δεν διαθέτει το ίδιο το ast-grep:

- Ψευδώνυμα `scan` και `rewrite` για το `run`
- Σημαία `--hidden` (το ast-grep την ενσωματώνει στο `--no-ignore hidden`)
- Ψευδώνυμο `--dry-run` για προεπισκόπηση αναδιατύπωσης
- Ροή επιβεβαίωσης αναδιατύπωσης `--interactive`

## Περιορισμοί

Το περιτύλιγμα `sg` του Greph καλύπτει τις λειτουργίες δομικής αναζήτησης και αναδιατύπωσης που χρησιμοποιούν τα περισσότερα εργαλεία και οι πράκτορες. Προς το παρόν δεν παρέχει τις εξής λειτουργίες ast-grep:

- Αρχεία κανόνων YAML (`--rule`, `--config`)
- Σάρωση πολλών γλωσσών πέρα από την PHP
- Μετασχηματιστές που δεν βασίζονται σε μοτίβα (`--debug-query`, `--inspect`)
- Ενσωμάτωση LSP

Αν συναντήσετε σημαία που λείπει, αναφέρετε το πρόβλημα μαζί με τη δοκιμή που εκτελέσατε στο ανάντη `sg` και την αναμενόμενη έξοδο.

## Ισοτιμία συμπεριφοράς

Το περιτύλιγμα επιδιώκει ισοτιμία συμπεριφοράς, όχι ισοτιμία byte. Η έξοδος είναι σημασιολογικά ισοδύναμη, αλλά μπορεί να διαφέρει σε αισθητικές λεπτομέρειες. Οι δοκιμές του [πίνακα δυνατοτήτων](https://greph.inline0.dev/el/docs/advanced/feature-matrix) ελέγχουν την ισοδυναμία των πεδίων που αφορούν τον αναλυτή (διαδρομή αρχείου, αριθμός γραμμής, καταγεγραμμένος κώδικας, καταγραφές, μορφή JSON), όχι της ροής byte.
