

Amazon n' CodeCatalyst est plus ouvert aux nouveaux clients. Les clients existants peuvent continuer à utiliser le service normalement. Pour de plus amples informations, veuillez consulter [Comment effectuer une migration depuis CodeCatalyst](migration.md).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Ajouter des composants de référentiel et de code source à un plan
<a name="comp-repo-source-bp"></a>

Un référentiel est utilisé par Amazon CodeCatalyst pour stocker le code. Le référentiel prend un nom en entrée. La plupart des composants sont stockés dans un référentiel, tels que les fichiers de code source, les flux de travail et d'autres composants tels que les environnements de développement gérés (MDE). Le composant du référentiel source exporte également les composants utilisés pour gérer les fichiers et les actifs statiques. Les référentiels sont soumis à des contraintes de nom. Pour de plus amples informations, veuillez consulter [Stockez du code et collaborez sur celui-ci avec des référentiels de sources dans CodeCatalystStockez du code et collaborez sur celui-ci avec des référentiels de sources](source.md).

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

**Pour importer le référentiel Amazon CodeCatalyst Blueprints et les composants du code source**

Dans votre `blueprint.ts` fichier, ajoutez les éléments suivants :

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

**Topics**
+ [Ajouter un fichier](#repo-add-file-bp)
+ [Ajouter un fichier générique](#repo-add-generic-file-bp)
+ [Copier des fichiers](#repo-copy-file-bp)
+ [Cibler plusieurs fichiers](#target-multiple-files-bp)
+ [Création d'un nouveau dépôt et ajout de fichiers](#repo-code-examples-bp)

## Ajouter un fichier
<a name="repo-add-file-bp"></a>

Vous pouvez écrire un fichier texte dans un dépôt à l'aide de cette `SourceFile` construction. L'opération est l'un des cas d'utilisation les plus courants et nécessite un référentiel, un chemin de fichier et le contenu du texte. Si le chemin du fichier n'existe pas dans un référentiel, le composant crée tous les dossiers requis.

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

**Note**  
Si vous écrivez deux fichiers au même emplacement dans le même référentiel, l'implémentation la plus récente remplace la précédente. Vous pouvez utiliser cette fonctionnalité pour superposer le code généré, et elle est particulièrement utile pour étendre le code que les plans personnalisés ont pu générer.

## Ajouter un fichier générique
<a name="repo-add-generic-file-bp"></a>

Vous pouvez écrire des bits arbitraires dans votre dépôt. Vous pouvez lire à partir d'une mémoire tampon et utiliser la `File` construction.

```
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());
```

## Copier des fichiers
<a name="repo-copy-file-bp"></a>

Vous pouvez commencer avec le code généré en copiant et en collant le code de démarrage, puis en générant du code supplémentaire au-dessus de cette base. Placez le code dans le `static-assets` répertoire, puis ciblez ce code avec la `StaticAsset` construction. Dans ce cas, le chemin commence toujours à la racine du `static-assets` répertoire.

```
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'
```

Une sous-classe de `StaticAsset` is`SubstitutionAsset`. La sous-classe fonctionne exactement de la même manière, mais vous pouvez plutôt exécuter une substitution par moustache sur le fichier. Cela peut être utile pour générer des copy-and-replace styles.

La substitution d'actifs statiques utilise un moteur de création de modèles à moustache pour afficher les fichiers statiques qui sont ensemencés dans le référentiel source généré. Les règles de modélisation des moustaches sont appliquées lors du rendu, ce qui signifie que toutes les valeurs sont codées en HTML par défaut. Pour afficher du code HTML non filtré, utilisez la syntaxe à triple moustache. `{{{name}}}` Pour plus d'informations, consultez les règles relatives à la modélisation des [moustaches.](https://github.com/janl/mustache.js?tab=readme-ov-file#variables)

**Note**  
L'exécution d'un substitut sur des fichiers qui ne sont pas interprétables par du texte peut générer des erreurs.

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

## Cibler plusieurs fichiers
<a name="target-multiple-files-bp"></a>

Les actifs statiques prennent en charge le ciblage global grâce à une fonction statique appelée `StaticAsset` et à ses sous-classes appelées`findAll(...)`, qui renvoie une liste d'actifs statiques préchargés avec leurs chemins, leur contenu, etc. Vous pouvez enchaîner la liste avec des `File` constructions pour copier et coller le contenu dans le `static-assets` répertoire.

```
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());
```

## Création d'un nouveau dépôt et ajout de fichiers
<a name="repo-code-examples-bp"></a>

Vous pouvez utiliser un composant de référentiel pour créer un nouveau référentiel dans un projet généré. Vous pouvez ensuite ajouter des fichiers ou des flux de travail au référentiel créé.

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

L'exemple suivant montre comment ajouter des fichiers et des flux de travail à un référentiel existant :

```
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 combinaison des deux éléments de code génère un référentiel unique nommé `myRepo` avec un fichier source `README.md` et un CodeCatalyst flux de travail à la racine.