CREAR / CLI

CLI de P2LRN

La CLI ofrece los mismos flujos técnicos del Toolkit desde terminal. Empieza por el recorrido habitual y consulta después los comandos especializados sólo cuando los necesites.

1. Requisito previo

La CLI se instala con @p2lrn/toolkit. Si no lo has hecho aún, completa primero la instalación con NPM.

Terminal
npm install @p2lrn/toolkit@0.5.0-alpha.11

Puedes usar los binarios directos —por ejemplo p2lrn-create— o el dispatcher p2lrn create.

2. Recorrido normal para crear un curso

Estos comandos muestran el orden habitual: crear workspace, añadir estructura, añadir contenido, construir y validar.

Terminal
p2lrn-create init ./workspace --title "Curso de seguridad" --language es

p2lrn-create add-unit ./workspace \
  --key unidad-1 \
  --title "Fundamentos"

p2lrn-create add-file ./workspace ./material/intro.html \
  --key intro \
  --title "Introducción" \
  --parent unidad-1

p2lrn-create build ./workspace ./curso.p2lrn --strict-profiles

p2lrn-validate ./curso.p2lrn --profile-payloads
Qué debes obtener.

Un archivo curso.p2lrn válido. Después puedes abrirlo con el Player o con el visor.

3. Comandos de creación

init <dir> --title T

Crea un workspace nuevo. Admite idioma, descripción y --force.

open <package> <project_dir>

Abre un paquete existente como workspace editable.

upgrade <project>

Actualiza la versión interna de un workspace existente.

add-unit

Añade una unidad y permite indicar su padre, idioma y rol.

add-file

Añade un archivo local y permite fijar tipo MIME, perfil, rol y tipo de actividad.

add-web-content

Añade un directorio web con su entrypoint.

add-url

Añade un recurso externo mediante URL.

add-questionnaire

Añade un cuestionario. --renderer y --renderer-version seleccionan una presentación preferida.

add-component / add-composite

Añaden contenido nativo estructurado y grupos compuestos.

show

Muestra un resumen del workspace.

build <project> <output>

Construye el paquete final; --strict-profiles exige perfiles completos.

4. Validar, inspeccionar y leer un paquete

Usa estos comandos después del build para comprobar el paquete, revisar su estructura o abrirlo con Reader sin modificarlo.

Terminal
p2lrn-validate ./curso.p2lrn --profile-payloads
p2lrn-inspect ./curso.p2lrn --summary --tree
p2lrn-reader ./curso.p2lrn --summary
validate

Comprueba estructura, integridad y, con --profile-payloads, los datos específicos de perfiles.

inspect

Muestra resumen, árbol, plan de lectura, transformación o importación según las opciones elegidas.

reader

Abre el Reader interactivo o devuelve resumen, árbol y planes sin modificar el paquete.

5. Leer un documento

Utiliza el lector documental cuando necesitas extraer estructura antes de decidir qué contenido convertir en curso.

Terminal
p2lrn-document-reader ./material/apuntes.docx --pretty

Extrae estructura de DOCX, PPTX, ODT, EPUB y formatos de texto. PDF requiere pdfjs-dist. El resultado es material para una decisión de autoría; no se convierte automáticamente en un curso completo.

6. Convertir, reempaquetar y extraer

p2lrn-convert <source> <output.p2lrn>

Convierte una fuente compatible y puede generar un informe. p2lrn-wrap-external es un alias del mismo conversor para integraciones que expresan explícitamente el empaquetado externo.

p2lrn-repack <source> <output>

Reempaqueta sin alterar el contenido lógico; puede generar un nuevo package ID o canonicalizar identificadores.

p2lrn-extract-source <package> <output.zip>

Extrae una fuente preservada y verifica su SHA-256 antes de escribirla.

7. Multipart

Utiliza Multipart cuando un recurso grande debe publicarse en partes verificadas en lugar de viajar completo dentro del archivo principal.

Terminal
p2lrn-multipart ./curso.p2lrn ./curso-multipart.p2lrn \
  --part-size 26214400

Transforma una representación embebida en descriptor y partes externas. Si no indicas --representation, selecciona la representación que supera el límite. Consulta Multipart para el flujo completo.

8. Cambios incrementales (Delta)

Delta transporta la diferencia entre dos paquetes compatibles. Crea el delta sobre una base conocida y aplícalo siempre sobre esa misma base.

Terminal
p2lrn-delta create ./base.p2lrn ./nuevo.p2lrn ./cambio.p2lrn-delta
p2lrn-delta apply ./base.p2lrn ./cambio.p2lrn-delta ./resultado.p2lrn
p2lrn-delta inspect ./cambio.p2lrn-delta

create genera la diferencia, apply la aplica sobre la base correcta e inspect muestra su contenido.

9. Firma y confianza (Trust)

Trust firma y verifica paquetes con Ed25519. La firma no reemplaza las comprobaciones de integridad del contenido.

Terminal
p2lrn-trust keygen ./private.pem ./public.pem
p2lrn-trust sign ./curso.p2lrn ./private.pem --output ./curso.sig
p2lrn-trust verify ./curso.p2lrn ./curso.sig --trust-key ./public.pem --require-trusted

Trust gestiona firmas Ed25519 separadas. Integridad del paquete y confianza en una firma son comprobaciones diferentes.

10. Comando principal, salida y códigos de retorno

El comando p2lrn también actúa como dispatcher de las herramientas principales. Los códigos de retorno permiten integrarlas en scripts y procesos automáticos.

Terminal
p2lrn <validate|reader|document-reader|inspect|create|convert|repack|multipart|extract-source|delta|trust> ...
p2lrn --help
exit 0

Operación correcta o ayuda solicitada.

exit 1

Error de entrada, validación o ejecución.

exit 2

El comando principal p2lrn se ejecutó sin un subcomando válido.

Salida

Las operaciones estructuradas usan JSON salvo el Reader interactivo y algunas vistas textuales de inspección.