48 lines
1.0 KiB
TypeScript
48 lines
1.0 KiB
TypeScript
/**
|
|
* @fileoverview Task Master header component
|
|
* Displays the banner, version, project info, and file path
|
|
*/
|
|
|
|
import chalk from 'chalk';
|
|
import figlet from 'figlet';
|
|
import gradient from 'gradient-string';
|
|
|
|
/**
|
|
* Header configuration options
|
|
*/
|
|
export interface HeaderOptions {
|
|
title?: string;
|
|
tag?: string;
|
|
filePath?: string;
|
|
}
|
|
|
|
/**
|
|
* Display the Task Master header with project info
|
|
*/
|
|
export function displayHeader(options: HeaderOptions = {}): void {
|
|
const { filePath, tag } = options;
|
|
|
|
// Display tag and file path info
|
|
if (tag) {
|
|
let tagInfo = '';
|
|
|
|
if (tag && tag !== 'master') {
|
|
tagInfo = `🏷 tag: ${chalk.cyan(tag)}`;
|
|
} else {
|
|
tagInfo = `🏷 tag: ${chalk.cyan('master')}`;
|
|
}
|
|
|
|
console.log(tagInfo);
|
|
|
|
if (filePath) {
|
|
// Convert to absolute path if it's relative
|
|
const absolutePath = filePath.startsWith('/')
|
|
? filePath
|
|
: `${process.cwd()}/${filePath}`;
|
|
console.log(`Listing tasks from: ${chalk.dim(absolutePath)}`);
|
|
}
|
|
|
|
console.log(); // Empty line for spacing
|
|
}
|
|
}
|