

Amazon CodeCatalyst は新規のお客様には提供されなくなりました。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[CodeCatalyst から移行する方法](migration.md)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ブループリントへのリポジトリとソースコードコンポーネントの追加
<a name="comp-repo-source-bp"></a>

リポジトリは、Amazon CodeCatalyst によってコードの保存に使用されます。リポジトリは名前を入力として受け取ります。ほとんどのコンポーネントは、ソースコードファイル、ワークフロー、マネージド開発環境 (MDE) などの他のコンポーネントなどのリポジトリに保存されます。ソースリポジトリコンポーネントは、ファイルと静的アセットの管理に使用されるコンポーネントもエクスポートします。リポジトリには名前の制約があります。詳細については、「[CodeCatalyst のソースリポジトリでコードを保存し、共同作業を行うソースリポジトリでコードを保存して共同作業を行う](source.md)」を参照してください。

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

**Amazon CodeCatalyst ブループリントリポジトリとソースコードコンポーネントをインポートするには**

`blueprint.ts` ファイルに次を追加します。

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

**Topics**
+ [フィルターの追加](#repo-add-file-bp)
+ [汎用ファイルの追加](#repo-add-generic-file-bp)
+ [ファイルのコピー](#repo-copy-file-bp)
+ [複数のファイルのターゲット設定](#target-multiple-files-bp)
+ [新しいリポジトリの作成とファイルの追加](#repo-code-examples-bp)

## フィルターの追加
<a name="repo-add-file-bp"></a>

`SourceFile` 構文を使用して、テキストファイルをリポジトリに書き込めます。オペレーションは最も一般的なユースケースの 1 つであり、リポジトリ、ファイルパス、テキストコンテンツを使用します。ファイルパスがリポジトリ内に存在しない場合、コンポーネントは必要なフォルダをすべて作成します。

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

**注記**  
同じリポジトリ内の同じ場所に 2 つのファイルを書き込むと、最新の実装によって前のファイルが上書きされます。この機能を使用して生成されたコードをレイヤー化できます。カスタムブループリントが生成したコードに拡張する場合に特に便利です。

## 汎用ファイルの追加
<a name="repo-add-generic-file-bp"></a>

任意のビットをリポジトリに書き込めます。バッファから読み取り、`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());
```

## ファイルのコピー
<a name="repo-copy-file-bp"></a>

スターターコードをコピーして貼り付け、そのベースの上にさらにコードを生成することで、生成されたコードの使用を開始できます。`static-assets` ディレクトリ内にコードを配置し、そのコードを `StaticAsset` コンストラクトでターゲットにします。この場合のパスは、常に `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'
```

`StaticAsset` のサブクラスは `SubstitutionAsset` です。サブクラス関数はまったく同じですが、代わりにファイルに対して mustache 置換を実行できます。copy-and-replace スタイル生成の実行に役立ちます。

静的アセット置換は、生成されたソースリポジトリにシードされる静的ファイルをレンダリングするために、mustache テンプレートエンジンを使用します。mustache テンプレートルールはレンダリング中に適用されます。つまり、すべての値はデフォルトで HTML エンコードされます。エスケープされていない HTML をレンダリングするには、トリプル mustache 構文 `{{{name}}}` を使用します。詳細については、「[mustache テンプレートのルール](https://github.com/janl/mustache.js?tab=readme-ov-file#variables)」を参照してください。

**注記**  
テキストが解釈できないファイルに対して代入を実行すると、エラーが発生することがあります。

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

## 複数のファイルのターゲット設定
<a name="target-multiple-files-bp"></a>

静的アセットは、`StaticAsset` とそのサブクラス「`findAll(...)`」の静的関数を介した glob ターゲット化をサポートしています。このサブクラスは、パス、コンテンツなどをプリロードした静的アセットの一覧を返します。リストを `File` コンストラクトと連鎖させ、`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());
```

## 新しいリポジトリの作成とファイルの追加
<a name="repo-code-examples-bp"></a>

リポジトリコンポーネントを使用して、生成されたプロジェクトに新しいリポジトリを作成できます。その後、作成したリポジトリにファイルまたはワークフローを追加できます。

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

次の例は、既存のリポジトリにファイルとワークフローを追加する方法を示しています。

```
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...**/});
```

2 つのコードを組み合わせると、`myRepo` という名前の 1 つのリポジトリがソースファイル「`README.md`」とともに生成され、ルートに CodeCatalyst ワークフローが生成されます。