Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

424
Views
¿Cómo generar un JSON de receta privado a partir del contenido de un directorio de recetas?

Desarrollé un paquete Symfony y estoy tratando de crear una receta. Antes de enviarlo a recipes-contrib , quiero probarlo, así que seguílas instrucciones para recetas privadas , no porque quiera una receta privada (es decir, ni el paquete ni la receta son "privados" en el sentido de un proyecto privado de GitHub).

He leído, releído y vuelto a leer la documentación para crear una receta y siento que me estoy perdiendo un paso muy importante. La documentación para un repositorio privado solo habla sobre el archivo package.version.json, por ejemplo

 { "manifests": { "acme/private-bundle": { "manifest": { "bundles": { "Acme\\PrivateBundle\\AcmePrivateBundle": [ "all" ] }, "copy-from-recipe": { "config/": "%CONFIG_DIR%" } }, "files": { "config/packages/acme_private.yaml": { "contents": [ "acme_private:", " encode: true", "" ], "executable": false } }, "ref": "7405f3af1312d1f9121afed4dddef636c6c7ff00" } } }

Este archivo parece ser el resultado de algún comando que lee el archivo en el formato esperado para una receta contrib : una estructura de directorio que tiene un directorio de config para rutas y paquetes, tal vez un directorio src , etc.

Obviamente, nadie está escribiendo a mano línea por línea un archivo YAML (¡o PHP!) como una lista de cadenas en la clave de content .

Parece que la rama master de recetas y recipes-contrib contiene la estructura de directorios, y la rama flex/main contiene el archivo de recetas JSON "compilado".

Pero en las instrucciones de la receta privada, no hay instrucciones sobre cómo pasar de los archivos compatibles con DX a la receta JSON.

TL;RD; ¿Cómo creo una receta de package.version.json desde el directorio package/version/ que contiene manifest.json , config , etc.?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Tuve el mismo problema hace unas horas y finalmente lo conseguí. La publicación del blog https://symfony.com/blog/symfony-flex-is-going-serverless dio pistas donde podemos ver que existe un script y una herramienta.

Dupliqué las acciones de Github y adapté esos archivos en uno de mis repositorios: https://github.com/web-token/recipes

  • La rama main contiene los archivos compilados, incluido index.json : esto es lo que necesita para que funcione .
  • La rama del tree es donde viven los archivos amigables para desarrolladores.

La rama del tree contiene los flujos de trabajo de las acciones de Github que actualizan la rama main . Siéntase libre de copiar y adaptar la carpeta https://github.com/web-token/recipes/tree/tree/.github con sus parámetros.

Tenga en cuenta que la URL del servidor para declarar en el archivo del compositor se verá como https://api.github.com/repos/web-token/recipes/contents/index.json?ref=main

over 4 years ago · Santiago Trujillo Report

0

Sí, estoy de acuerdo en que las instrucciones son muy opacas allí.

El paso que falta lo realiza symfony-tools/recipe-checker ( enlace ).

El repositorio (lamentablemente) no está disponible como paquete en Packagist, por lo que para instalarlo y ejecutarlo localmente, debe modificar su configuración para agregar un repositorio personalizado que apunte allí, o clonar/descargar sin usar composer.

P.ej

 git clone https://github.com/symfony-tools/recipes-checker cd recipes-checker composer install

Ahora tienes el script listo para usar. Suponiendo que lo descargó en su directorio de inicio, podría ejecutar:

 ~/recipe-checker/run generate:flex-endpoint <repository> <source_branch> <flex_branch> <output_directory>

Los diferentes argumentos son (tal como se obtienen de run generate:flex-endpoint --help ):

 Arguments: repository The name of the GitHub repository source_branch The source branch of recipes flex_branch The branch of the target Flex endpoint output_directory The directory where generated files should be stored versions_json The file where versions of Symfony are described

Entonces, si tiene un repositorio de recetas para un paquete como yivi/stub-bundle , versión 1.0, con el repositorio alojado en https://github.com/yivi/stub-bundle-recipe

 <dir> └── yivi └─stub-bundle └── 1.0 ├── bin │ └── something.sh ├ manifest.json └ post-install.json

Simplemente puede cd al directorio del paquete y ejecutar:

 ~/recipe-checker/run generate:flex-endpoint yivi/stub-bundle-recipe main main .

Esto generaría localmente la receta "compilada" (o recetas, si tiene varias en ese directorio) y terminaría con esto en ese directorio:

  • index.json
  • yivi.stub-bundle.1.0.json
  • archived/ (dir)

Para "probar" esto localmente, simplemente sería cuestión de confirmar y enviar este repositorio, y en un proyecto que quiera usar las recetas alojadas aquí, actualice el campo composer.json extra.symfony para incluir:

 "extra": { "symfony": { "endpoint": [ "https://api.github.com/repos/yivi/stub-bundle-recipe/contents/index.json", "flex://defaults" ] } }

La buena respuesta de Spomky se vincula a una acción de GitHub que podría hacer esto por usted automáticamente en el repositorio receptor, separando limpiamente en diferentes ramas las recetas "fuente" y las recetas "compiladas", pero creo que este ejemplo mostrará más fácilmente cómo realice el proceso paso a paso usted mismo.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!