export default async function deploy()

in src/schematics/deploy/actions.ts [374:485]


export default async function deploy(
  firebaseTools: FirebaseTools,
  context: BuilderContext,
  staticBuildTarget: BuildTarget,
  serverBuildTarget: BuildTarget | undefined,
  prerenderBuildTarget: BuildTarget | undefined,
  firebaseProject: string,
  options: DeployBuilderOptions,
  firebaseToken?: string,
) {
  if (!firebaseToken) {
    await firebaseTools.login();
    const user = await firebaseTools.login({ projectRoot: context.workspaceRoot });
    console.log(`Logged into Firebase as ${user.email}.`);
  }

  if (prerenderBuildTarget) {

    const run = await context.scheduleTarget(
      targetFromTargetString(prerenderBuildTarget.name),
      prerenderBuildTarget.options
    );
    await run.result;

  } else {

    if (!context.target) {
      throw new Error('Cannot execute the build target');
    }

    context.logger.info(`📦 Building "${context.target.project}"`);

    const builders = [
      context.scheduleTarget(
        targetFromTargetString(staticBuildTarget.name),
        staticBuildTarget.options
      ).then(run => run.result)
    ];

    if (serverBuildTarget) {
      builders.push(context.scheduleTarget(
        targetFromTargetString(serverBuildTarget.name),
        serverBuildTarget.options
      ).then(run => run.result));
    }

    await Promise.all(builders);
  }

  try {
    await firebaseTools.use(firebaseProject, {
      project: firebaseProject,
      projectRoot: context.workspaceRoot,
    });
  } catch (e) {
    throw new Error(`Cannot select firebase project '${firebaseProject}'`);
  }

  options.firebaseProject = firebaseProject;

  const logger = new winston.transports.Console({
    level: 'info',
    format: winston.format.printf((info) => {
      const emulator = info[tripleBeam.SPLAT as any]?.[1]?.metadata?.emulator;
      const text = info[tripleBeam.SPLAT as any]?.[0];
      if (text?.replace) {
        const plainText = text.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]/g, '');
        if (emulator?.name === 'hosting' && plainText.startsWith('Local server: ')) {
          open(plainText.split(': ')[1]);
        }
      }
      return [info.message, ...(info[tripleBeam.SPLAT as any] || [])]
        .filter((chunk) => typeof chunk === 'string')
        .join(' ');
    })
  });

  firebaseTools.logger.logger.add(logger);

  if (serverBuildTarget) {
    if (options.ssr === 'cloud-run') {
      await deployToCloudRun(
        firebaseTools,
        context,
        context.workspaceRoot,
        staticBuildTarget,
        serverBuildTarget,
        options,
        firebaseToken,
      );
    } else {
      await deployToFunction(
        firebaseTools,
        context,
        context.workspaceRoot,
        staticBuildTarget,
        serverBuildTarget,
        options,
        firebaseToken,
      );
    }
  } else {
    await deployToHosting(
      firebaseTools,
      context,
      context.workspaceRoot,
      options,
      firebaseToken,
    );
  }

}