リポジトリは、Amazon CodeCatalyst によってコードの保存に使用されます。リポジトリは名前を入力として受け取ります。ほとんどのコンポーネントは、ソースコードファイル、ワークフロー、マネージド開発環境 (MDE) などの他のコンポーネントなどのリポジトリに保存されます。ソースリポジトリコンポーネントは、ファイルと静的アセットの管理に使用されるコンポーネントもエクスポートします。リポジトリには名前の制約があります。詳細については、「CodeCatalyst のソースリポジトリでコードを保存し、共同作業を行う」を参照してください。
const repository = new SourceRepository(this, { title: 'my-new-repository-title', });
Amazon CodeCatalyst ブループリントリポジトリとソースコードコンポーネントをインポートするには
blueprint.ts
ファイルに次を追加します。
import {...} from '@caws-blueprint-component/caws-source-repositories'
フィルターの追加
SourceFile
構文を使用して、テキストファイルをリポジトリに書き込めます。オペレーションは最も一般的なユースケースの 1 つであり、リポジトリ、ファイルパス、テキストコンテンツを使用します。ファイルパスがリポジトリ内に存在しない場合、コンポーネントは必要なフォルダをすべて作成します。
new SourceFile(repository, `path/to/my/file/in/repo/file.txt`, 'my file contents');
注記
同じリポジトリ内の同じ場所に 2 つのファイルを書き込むと、最新の実装によって前のファイルが上書きされます。この機能を使用して生成されたコードをレイヤー化できます。カスタムブループリントが生成したコードに拡張する場合に特に便利です。
汎用ファイルの追加
任意のビットをリポジトリに書き込めます。バッファから読み取り、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());
ファイルのコピー
スターターコードをコピーして貼り付け、そのベースの上にさらにコードを生成することで、生成されたコードの使用を開始できます。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 テンプレートのルール
注記
テキストが解釈できないファイルに対して代入を実行すると、エラーが発生することがあります。
const starterCodeText = new SubstitionAsset('path/to/file/file.txt').subsitite({ 'my_variable': 'subbed value1', 'another_variable': 'subbed value2' })
複数のファイルのターゲット設定
静的アセットは、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());
新しいリポジトリの作成とファイルの追加
リポジトリコンポーネントを使用して、生成されたプロジェクトに新しいリポジトリを作成できます。その後、作成したリポジトリにファイルまたはワークフローを追加できます。
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 ワークフローが生成されます。