

Amazon ya no CodeCatalyst está abierto a nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cómo migrar desde CodeCatalyst](migration.md).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Adición de componentes de repositorio y código fuente a un esquema
<a name="comp-repo-source-bp"></a>

Amazon CodeCatalyst utiliza un repositorio para almacenar el código. El repositorio toma un nombre como entrada. La mayoría de los componentes se almacenan en un repositorio, como los archivos de código fuente, los flujos de trabajo y otros componentes, como los entornos de desarrollo administrados (MDE). El componente de repositorio de código fuente también exporta los componentes que se utilizan para administrar archivos y activos estáticos. Los repositorios tienen restricciones de nomenclatura. Para obtener más información, consulte [Almacene código y colabore en él con los repositorios de código fuente en CodeCatalystAlmacenamiento de código y colaboración con los repositorios de código fuente](source.md).

```
const repository = new SourceRepository(this, {
  title: 'my-new-repository-title',
});
```

**Importación de componentes del código fuente y repositorio de esquemas de Amazon CodeCatalyst**

Añada lo siguiente al archivo `blueprint.ts`:

```
import {...} from '@caws-blueprint-component/caws-source-repositories'
```

**Topics**
+ [Adición de un archivo](#repo-add-file-bp)
+ [Adición de un archivo genérico](#repo-add-generic-file-bp)
+ [Copia de archivos](#repo-copy-file-bp)
+ [Establecimiento del destino de varios archivos](#target-multiple-files-bp)
+ [Creación de un nuevo repositorio e incorporación de archivos](#repo-code-examples-bp)

## Adición de un archivo
<a name="repo-add-file-bp"></a>

Puede escribir un archivo de texto en un repositorio con el constructo `SourceFile`. La operación es uno de los casos de uso más comunes y requiere un repositorio, una ruta de archivo y contenido de texto. Si la ruta del archivo no existe en un repositorio, el componente crea todas las carpetas necesarias.

```
new SourceFile(repository, `path/to/my/file/in/repo/file.txt`, 'my file contents');
```

**nota**  
Si escribe dos archivos en la misma ubicación dentro del mismo repositorio, la implementación más reciente sobrescribe la anterior. Puede utilizar la característica para superponer el código generado, que es especialmente útil para ampliar el código que puedan haber generado los esquemas personalizados.

## Adición de un archivo genérico
<a name="repo-add-generic-file-bp"></a>

Puede escribir bits arbitrarios en su repositorio. Puede leer de un búfer y usar el constructo `File`.

```
new File(repository, `path/to/my/file/in/repo/file.img`, new Buffer(...));

new File(repository, `path/to/my/file/in/repo/new-img.img`, new StaticAsset('path/to/image.png').content());
```

## Copia de archivos
<a name="repo-copy-file-bp"></a>

Puede empezar con el código generado copiando y pegando el código inicial y, a continuación, generando más código a partir de ahí. Coloque el código dentro del directorio `static-assets` y, a continuación, defina el destino del código con el constructo `StaticAsset`. En este caso, la ruta siempre comienza en la raíz del directorio `static-assets`.

```
const starterCode = new StaticAsset('path/to/file/file.txt')
const starterCodeText = new StaticAsset('path/to/file/file.txt').toString()
const starterCodeRawContent = new StaticAsset('path/to/image/hello.png').content()

const starterCodePath = new StaticAsset('path/to/image/hello.png').path()
// starterCodePath is equal to 'path/to/image/hello.png'
```

Una subclase de `StaticAsset` es `SubstitutionAsset`. La subclase funciona exactamente igual, pero permite realizar una sustitución de mustache en el archivo. Esto puede resultar útil para generar contenido con el método de copiar y reemplazar.

La sustitución de activos estáticos utiliza un motor de plantillas de mustache para representar los archivos estáticos que se incluyen en el repositorio de código fuente generado. Las reglas de creación de plantillas de mustache se aplican durante la representación, lo que significa que todos los valores están codificados en HTML de forma predeterminada. Para representar HTML sin secuencias de escape, utilice la sintaxis de mustache triple `{{{name}}}`. Para obtener más información, consulte las [reglas de creación de plantillas de mustache](https://github.com/janl/mustache.js?tab=readme-ov-file#variables).

**nota**  
Si se ejecuta una sustitución en archivos que no son interpretables como texto, se pueden producir errores.

```
const starterCodeText = new SubstitionAsset('path/to/file/file.txt').subsitite({
  'my_variable': 'subbed value1',
  'another_variable': 'subbed value2'
})
```

## Establecimiento del destino de varios archivos
<a name="target-multiple-files-bp"></a>

Los activos estáticos admiten destinos glob mediante una función estática en `StaticAsset` y sus subclases llamadas `findAll(...)`, que devuelve una lista de los activos estáticos previamente cargados con sus rutas, contenido, etc. Puede encadenar la lista con construcciones `File` para copiar y pegar el contenido en el directorio `static-assets`.

```
new File(repository, `path/to/my/file/in/repo/file.img`, new Buffer(...));

new File(repository, `path/to/my/file/in/repo/new-img.img`, new StaticAsset('path/to/image.png').content());
```

## Creación de un nuevo repositorio e incorporación de archivos
<a name="repo-code-examples-bp"></a>

Puede usar un componente de repositorio para crear un repositorio nuevo en un proyecto generado. A continuación, puede añadir archivos o flujos de trabajo al repositorio creado.

```
import { SourceRepository } from '@amazon-codecatalyst/codecatalyst-source-repositories';
...
const repository = new SourceRepository(this, { title: 'myRepo' });
```

En el siguiente ejemplo se muestra cómo añadir archivos y flujos de trabajo a un repositorio existente:

```
import { SourceFile } from '@amazon-codecatalyst/codecatalyst-source-repositories';
import { Workflow } from '@amazon-codecatalyst/codecatalyst-workflows';
...
new SourceFile(repository, 'README.md', 'This is the content of my readme');
new Workflow(this, repository, {/**...workflowDefinition...**/});
```

La combinación de los dos fragmentos de código genera un único repositorio denominado `myRepo` con un archivo de código fuente `README.md` y un flujo de trabajo de CodeCatalyst en la raíz.