1import chalk from 'chalk';
2
3import logger from '../../Logger';
4import { Task } from '../../TasksRunner';
5import { printPackagesToPromote } from '../helpers';
6import { CommandOptions, Parcel, TaskArgs } from '../types';
7import { findPackagesToPromote } from './findPackagesToPromote';
8import { prepareParcels } from './prepareParcels';
9
10const { yellow } = chalk;
11
12/**
13 * Lists packages that can be promoted to given tag.
14 */
15export const listPackagesToPromote = new Task<TaskArgs>(
16  {
17    name: 'listPackagesToPromote',
18    dependsOn: [prepareParcels, findPackagesToPromote],
19  },
20  async (parcels: Parcel[], options: CommandOptions): Promise<void | symbol> => {
21    if (parcels.length === 0) {
22      logger.success(`\n✅ No packages to promote.\n`);
23      return Task.STOP;
24    }
25
26    logger.info(`\n�� Packages to promote to ${yellow.bold(options.tag)}:`);
27    printPackagesToPromote(parcels);
28  }
29);
30