# פלט וקודי יציאה

> איך לקרוא את הפלט של ה-CLI של Nodaro כטבלה או כ-JSON, לחכות לסיום הרצה עם ‎--watch ולפעול בסקריפט לפי קודי היציאה של כשל, ביטול והמתנה לבדיקה.

Source: https://nodaro.ai/he/docs/developers/cli/output

**הפלט** של ה-CLI של Nodaro קריא בטרמינל כברירת מחדל, וקריא למכונה עם `--json`. עם `--watch`, פקודת הרצה מחכה עד שההרצה מסתיימת ומדווחת על התוצאה בקוד היציאה שלה, כך שסקריפט shell או משימת CI יכולים לפעול לפיו.

## טבלאות ו-JSON
בלי `--json`, פקודת `list` מדפיסה טבלת ASCII קטנה, ופקודת `get` מדפיסה JSON מעוצב. כל פקודת קריאה מקבלת את הדגל `--json`, ואז מדפיסה את המטען המלא, מוכן ל-`jq`:

```bash
nodaro projects list --json | jq '.[].id'
nodaro workflows run wf_abc --json
```

## המתנה לסיום ההרצה עם `--watch`
פקודת הרצה מסתיימת ברגע ש-Nodaro מקבל את ההרצה. הוסיפו `--watch` כדי להמשיך לבדוק את הסטטוס עד שההרצה מסתיימת:

```bash
nodaro workflows run wf_abc --watch
nodaro nodes run generate-image --param prompt="a snow leopard" --watch --poll-interval 1000
```

הדגל `--watch` עובד בפקודות ההרצה, כגון `workflows run`, `apps run` ו-`nodes run`, בפקודה `executions get` ובפקודות היצירה של קבוצות הפקודות [נכסים](https://nodaro.ai/docs/developers/cli/asset-commands) ו[מדיה](https://nodaro.ai/docs/developers/cli/media-commands). הדגל `--poll-interval` קובע את הזמן בין שתי בדיקות סטטוס, באלפיות שנייה.

## קודי יציאה
| קוד | משמעות |
| --- | --- |
| `0` | הצלחה. |
| `1` | שגיאת הרשאה, משאב שלא נמצא, ארגומנט שגוי או שגיאת רשת. |
| `2` | ההמתנה עם `--watch` הסתיימה, וההרצה נכשלה. |
| `3` | ההמתנה עם `--watch` נעצרה כי המשימה ממתינה לבדיקה (`pending_review`). אדם מחליט עכשיו; זה לא כשל. |
| `130` | ההמתנה עם `--watch` הסתיימה, וההרצה בוטלה. |

עם `--json`, ה-CLI מדפיס את המטען ומסיים בלי לקבוע את הקודים `2`, `3` ו-`130`. במצב הזה, פעלו לפי השדה `status` בפלט:

```bash
status=$(nodaro workflows run wf_abc --watch --json | jq -r '.status')
```

כשהאסימון חסר, פג תוקפו או לא תקין, ה-CLI מודיע על כך, מציע להריץ `nodaro auth login` ויוצא עם הקוד `1`. בשגיאות API אחרות, ה-CLI מדפיס את ההודעה ואת קוד השגיאה. הקודים מפורטים בדף ה-API [שגיאות](https://nodaro.ai/docs/developers/api/errors).

## כשמשימה ממתינה לבדיקה
יש פריסות שבודקות יצירות לפני שהן משחררות אותן. בפריסה כזו, משימה יכולה להיכנס לסטטוס `pending_review`. העבודה הסתיימה, הקרדיטים נשארים משוריינים, ואדם מחליט אם לשחרר את התוצאה.

הסטטוס לא משתנה מעצמו, ולכן הדגל `--watch` מפסיק לבדוק אותו, מדפיס `awaiting review (a human decision is pending; not a failure)` (ממתינה לבדיקה: אדם צריך להחליט, וזה לא כשל) ויוצא עם הקוד `3`.

- **אל תריצו את הבקשה שוב.** גם בקשה כפולה תמתין לבדיקה.
- **בדקו את המשימה מאוחר יותר** עם `nodaro jobs get <id>`. המשימה מסתיימת באחד משלושה סטטוסים:

| סטטוס | משמעות |
| --- | --- |
| `completed` | התוצאה אושרה ושוחררה. |
| `failed` | התוצאה נדחתה. השדה `error_hint.kind` הוא `policy-block`, והשדה `error_hint.reason` הוא הטקסט שאפשר להציג למשתמש שלכם. |
| `cancelled` | המשימה בוטלה. |

```bash
nodaro nodes run generate-image --param prompt="..." --watch
case $? in
  0) echo "released" ;;
  3) echo "awaiting review, check back later" ;;
  *) echo "failed" ;;
esac
```

## שאלות נפוצות

### איך מקבלים מה-CLI של Nodaro פלט קריא למכונה?

הוסיפו את הדגל ‎--json לפקודת קריאה. בלעדיו, פקודות list מדפיסות טבלה קטנה, ופקודות get מדפיסות JSON מעוצב.

### מה המשמעות של קוד היציאה 3 ב-CLI של Nodaro?

קוד היציאה 3 אומר שהמשימה ממתינה לבדיקה. העבודה הסתיימה, והקרדיטים נשארים משוריינים בזמן שאדם מחליט אם לשחרר את התוצאה. זה לא כשל, ולכן אל תריצו את הבקשה שוב. בדקו את המשימה מאוחר יותר עם הפקודה nodaro jobs get.

### למה הסקריפט שלי לא מקבל את קוד היציאה 2 כשהרצה נכשלת?

עם הדגל ‎--json, ה-CLI מדפיס את התוצאה ומסיים בלי לקבוע את קודי היציאה 2, 3 או 130. במקום זאת, בדקו את השדה status בפלט ה-JSON.

### איך גורמים למשימת CI לחכות להרצה של Nodaro?

הוסיפו את הדגל ‎--watch לפקודת ההרצה. ה-CLI בודק את הסטטוס מדי כמה שניות עד שההרצה מסתיימת, ויוצא עם הקוד 0 כשהיא מצליחה, 2 כשהיא נכשלת ו-130 כשהיא מבוטלת, כך שהשלב הבא יכול להיות תלוי בתוצאה.
