Создание, замена и удаление локальных файлов

Проверяйте и применяйте изменения локальных файлов и папок с помощью полных планов редактирования.

Используйте Altifigence CLI 0.1.9 в Linux, чтобы проверить изменения локальных файлов и применить полный план к тому же проекту.

Создание файлов и папок

Используйте абсолютный путь к локальному проекту. В этом примере используется $HOME/alti-projects/demo-project. Выполняйте команды от имени обычного пользователя. Приостановите другие операции записи на время проверки и применения плана.

set -euo pipefail
PROJECT="$(cd "$HOME/alti-projects/demo-project" && pwd -P)"
WORK="$(mktemp -d)"
cat > "$WORK/create.json" <<'JSON'
[
  {"kind":"create-directory","path":"notes"},
  {"kind":"create","path":"notes/review.txt","content":"First review\n"}
]
JSON
alti ide workspace file-plan --project "$PROJECT" \
  --request "$WORK/create.json" > "$WORK/create.plan.json"

Убедитесь, что код завершения равен 0, затем прочитайте полный план:

cat "$WORK/create.plan.json"

План имеет схему altifigence.workspace-authoring-plan.v1. Проверьте его changes, observations и request и сохраните документ целиком. Пути в плане указаны относительно проекта.

Примените сохранённый план:

alti ide workspace file-apply --project "$PROJECT" \
  --request "$WORK/create.plan.json" > "$WORK/create.receipt.json"
jq '{schema, outcome}' "$WORK/create.receipt.json"

После завершения с кодом 0 выбранные поля квитанции имеют следующие значения:

{
  "schema": "altifigence.workspace-file-receipt.v1",
  "outcome": "committed"
}

Замена файла

Прочитайте текущий файл и используйте его SHA-256 в запросе на замену. В этих примерах для подготовки JSON используется jq.

alti ide workspace read --project "$PROJECT" notes/review.txt \
  > "$WORK/current.json"
jq '[{kind:"replace",path:"notes/review.txt",
      expected_sha256:.sha256,content:"Second review\n"}]' \
  "$WORK/current.json" > "$WORK/replace.json"
alti ide workspace file-plan --project "$PROJECT" \
  --request "$WORK/replace.json" > "$WORK/replace.plan.json"
cat "$WORK/replace.plan.json"

Проверьте замену, затем примените её:

alti ide workspace file-apply --project "$PROJECT" \
  --request "$WORK/replace.plan.json" > "$WORK/replace.receipt.json"
jq '{schema, outcome}' "$WORK/replace.receipt.json"

Убедитесь, что код завершения равен 0, а outcome имеет значение committed.

Удаление файла

Прочитайте файл ещё раз, чтобы получить его текущий дайджест, затем подготовьте удаление:

alti ide workspace read --project "$PROJECT" notes/review.txt \
  > "$WORK/current.json"
jq '[{kind:"delete",path:"notes/review.txt",expected_sha256:.sha256}]' \
  "$WORK/current.json" > "$WORK/delete.json"
alti ide workspace file-plan --project "$PROJECT" \
  --request "$WORK/delete.json" > "$WORK/delete.plan.json"
cat "$WORK/delete.plan.json"

Проверьте удаление, затем примените его:

alti ide workspace file-apply --project "$PROJECT" \
  --request "$WORK/delete.plan.json" > "$WORK/delete.receipt.json"
jq '{schema, outcome}' "$WORK/delete.receipt.json"

Убедитесь, что код завершения равен 0, а outcome имеет значение committed.

Действия при изменении файла

Если команда сообщает workspace file precondition changed: notes/review.txt, прочитайте файл ещё раз. Проверьте его текущее содержимое, подготовьте нужную замену или удаление с новым sha256, затем создайте и проверьте новый план перед применением.

Если команда сообщает authoring plan changed or is stale; generate and review a new plan, заново создайте план для того же проекта и проверьте его перед применением.

Сохраняйте нативные планы с помощью показанных выше команд. План, сохранённый с глобальным параметром --json, находится в строке stdout квитанции выполнения. Передайте полный нативный план в file-apply.

Первый запуск CLI