public bind()

in lib/registry-sync/mirror-source.ts [117:144]


      public bind(options: MirrorSourceBindOptions) {
        const asset = new s3Assets.Asset(options.scope, `BuildContext${this.directory}${JSON.stringify(opts.buildArgs ?? {})}`, { path: this.directory! });
        if (options.syncJob) {
          asset.grantRead(options.syncJob);
        }
        const ecrImageUri = `${options.ecrRegistry}/${this.repositoryName}:${this.tag}`;
        const cmdFlags = [];
        cmdFlags.push('--pull');
        cmdFlags.push('-t', ecrImageUri);

        if (opts.buildArgs) {
          Object.entries(opts.buildArgs).forEach(([k, v]) => cmdFlags.push('--build-arg', `${k}=${v}`));
        }

        const zipFile = `${this.repositoryName}.zip`;
        const tmpDir = this.repositoryName;

        return {
          commands: [
            `rm -rf ${zipFile} ${tmpDir}`,
            `aws s3 cp ${asset.s3ObjectUrl} ${zipFile}`,
            `unzip ${zipFile} -d ${tmpDir}`,
            `docker build ${cmdFlags.join(' ')} ${tmpDir}`,
          ],
          repositoryName: this.repositoryName,
          tag: this.tag,
        };
      }