Leer y editar archivos locales guardados mediante SHA-256
Compruebe un proyecto, enumere y lea archivos guardados, y reemplace su contenido solo cuando el SHA-256 esperado siga coincidiendo.
Utilice Altifigence CLI 0.1.9 en Linux para trabajar con los archivos guardados de un proyecto local sin abrir el IDE. Cada reemplazo indica el SHA-256 del contenido que leyó, y el comando lo rechaza cuando el archivo guardado ya no tiene ese SHA-256.
Comprobar el proyecto
Utilice una ruta absoluta a su proyecto local. Este ejemplo utiliza $HOME/alti-projects/demo-project. Ejecute los comandos con su usuario habitual.
set -euo pipefail
PROJECT="$(cd "$HOME/alti-projects/demo-project" && pwd -P)"
WORK="$(mktemp -d)"
alti ide workspace health --project "$PROJECT" > "$WORK/health.json"
jq '{ok, git}' "$WORK/health.json"health primero completa cualquier transacción de archivos pendiente y, después, informa del proyecto. Compruebe que el estado de salida sea 0 y que ok sea igual a true. name es el nombre de la carpeta del proyecto y git indica si el proyecto tiene una carpeta .git.
Enumerar y leer archivos
alti ide workspace files --project "$PROJECT" --limit 100 > "$WORK/files.json"
jq '{total, truncated, first: .files[:5]}' "$WORK/files.json"files enumera los archivos guardados como rutas ordenadas relativas al proyecto. total cuenta todos los archivos enumerados y truncated es true cuando total supera --limit. El límite predeterminado es 500 y el máximo es 20000. Se excluyen carpetas como .git, .alti, .altifigence, node_modules, target y dist.
Lea un archivo de texto UTF-8 guardado. Estos ejemplos utilizan notes/review.txt:
alti ide workspace read --project "$PROJECT" notes/review.txt > "$WORK/review.json"
jq '{path, encoding, sha256}' "$WORK/review.json"El resultado tiene path, encoding (utf-8), sha256 y content. sha256 es el SHA-256 hexadecimal en minúsculas del contenido guardado. Se pueden leer archivos de hasta 4194304 bytes.
Reemplazar un archivo
Escriba el contenido nuevo en un archivo y, después, pase el sha256 que leyó como --expected-sha256:
printf 'Third review\n' > "$WORK/review.txt"
alti ide workspace write --project "$PROJECT" notes/review.txt \
--expected-sha256 "$(jq -r .sha256 "$WORK/review.json")" \
--content "$WORK/review.txt" > "$WORK/write.receipt.json"
jq '{outcome}' "$WORK/write.receipt.json"Compruebe que el estado de salida sea 0 y que outcome sea igual a committed:
{
"outcome": "committed"
}El comprobante también tiene transactionId, generation, recoveryStatus y files, donde cada entrada tiene path, beforeSha256 y afterSha256. write reemplaza un archivo existente. --content - lee el contenido nuevo de la entrada estándar. Mantenga el contenido dentro de 4194304 bytes.
Editar varios archivos a la vez
Lea cada archivo y, después, prepare una matriz JSON con una entrada path, expected_sha256 y content por archivo:
alti ide workspace read --project "$PROJECT" notes/review.txt > "$WORK/review.json"
alti ide workspace read --project "$PROJECT" notes/todo.txt > "$WORK/todo.json"
jq -s '[
{path: .[0].path, expected_sha256: .[0].sha256, content: "Fourth review\n"},
{path: .[1].path, expected_sha256: .[1].sha256, content: "Check the review\n"}
]' "$WORK/review.json" "$WORK/todo.json" > "$WORK/edit.json"
alti ide workspace edit --project "$PROJECT" --request "$WORK/edit.json" \
> "$WORK/edit.receipt.json"
jq '{outcome, files: [.files[].path]}' "$WORK/edit.receipt.json"Tras un estado de salida 0, los campos seleccionados del comprobante son:
{
"outcome": "committed",
"files": [
"notes/review.txt",
"notes/todo.txt"
]
}edit comprueba cada entrada antes de cambiar ningún archivo y aplica los reemplazos como una sola transacción. Utilice de 1 a 64 entradas, una entrada por ruta, cada una con contenido nuevo. Mantenga cada archivo dentro de 4194304 bytes y el contenido original y nuevo de todas las entradas dentro de 16777216 bytes.
Resolver una edición rechazada
Cuando el motor del espacio de trabajo rechaza una solicitud write o edit, el comando termina con el estado de salida 1 y escribe en el error estándar un objeto altifigence.ide-workspace-error.v1 con un message. La CLI informa de una entrada demasiado grande o de una solicitud de edición cuyo JSON no es una matriz en el error estándar con el prefijo error: y termina con el estado de salida 1. Con cada uno de los mensajes siguientes, no se cambia ningún archivo.
Si aparece workspace edit original digest mismatch: notes/review.txt, el archivo cambió después de que lo leyó. Léalo de nuevo, revise su content actual y repita el reemplazo con el nuevo sha256.
Si aparece workspace edit has no content change: notes/review.txt, el contenido nuevo es igual al contenido guardado. Elimine esa entrada o cambie su contenido.
Si aparece workspace edit transaction contains a duplicate path, combine las entradas de esa ruta en una sola entrada con el contenido final.
Si aparece workspace edit SHA-256 digest must be 64 lowercase hexadecimal characters, copie el valor de sha256 de read sin cambios.
Si aparece workspace path is outside the editable file surface, utilice una ruta relativa al proyecto del listado de files, sin segmentos . ni ...
Si files informa de workspace exceeds 20000 files; narrow the project, abra una carpeta de proyecto más pequeña.