Skip to content

Commit

Permalink
feat: output published/draft status and display lines with colors
Browse files Browse the repository at this point in the history
  • Loading branch information
maxime1992 committed Aug 31, 2019
1 parent 893da77 commit 9243c85
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 19 deletions.
7 changes: 6 additions & 1 deletion src/article.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import extractFrontMatter from 'front-matter';

interface ArticleFrontMatter {
title: string;
published: boolean;
}

const imagesRe: RegExp = /\!\[.*\]\(\.\/.*\)/g;
Expand Down Expand Up @@ -87,6 +88,7 @@ export class Article {
articleId: this.articleConfig.id,
articleTitle: frontMatter.title,
error,
published: frontMatter.published,
};
}

Expand All @@ -95,6 +97,7 @@ export class Article {
articleId: this.articleConfig.id,
updateStatus: UpdateStatus.ALREADY_UP_TO_DATE as UpdateStatus.ALREADY_UP_TO_DATE,
articleTitle: frontMatter.title,
published: frontMatter.published,
};
}

Expand All @@ -108,12 +111,14 @@ export class Article {
articleId: this.articleConfig.id,
articleTitle: frontMatter.title,
updateStatus: UpdateStatus.UPDATED as UpdateStatus.UPDATED,
published: frontMatter.published,
}))
.catch(error => ({
articleId: this.articleConfig.id,
articleTitle: frontMatter.title,
updateStatus: UpdateStatus.ERROR as UpdateStatus.ERROR,
error,
published: frontMatter.published,
}));
}

Expand All @@ -124,6 +129,6 @@ export class Article {
throw new Error(`The article doesn't have a valid front matter`);
}

return { title: frontMatter.attributes.title };
return { title: frontMatter.attributes.title, published: frontMatter.attributes.published || false };
}
}
18 changes: 9 additions & 9 deletions src/dev-to-git.interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ export type ArticlePublishedStatus = {
| {
updateStatus: UpdateStatus.FAILED_TO_EXTRACT_FRONT_MATTER;
}
| {
articleTitle: string;
updateStatus: Exclude<UpdateStatus, UpdateStatus.ERROR | UpdateStatus.FAILED_TO_EXTRACT_FRONT_MATTER>;
}
| {
articleTitle: string;
updateStatus: UpdateStatus.ERROR;
error: Error;
});
| ({ articleTitle: string; published: boolean } & (
| {
updateStatus: Exclude<UpdateStatus, UpdateStatus.ERROR | UpdateStatus.FAILED_TO_EXTRACT_FRONT_MATTER>;
}
| {
updateStatus: UpdateStatus.ERROR;
error: Error;
}
)));
30 changes: 21 additions & 9 deletions src/helpers.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,39 @@
import { ArticlePublishedStatus, ConfigurationOptions, UpdateStatus } from './dev-to-git.interface';
import chalk from 'chalk';

export const formatArticlePublishedStatuses = (articlePublishedStatuses: ArticlePublishedStatus[]): string => {
return articlePublishedStatuses
.map(articleStatus => {
if (articleStatus.updateStatus === UpdateStatus.FAILED_TO_EXTRACT_FRONT_MATTER) {
return `Article with ID "${articleStatus.articleId}" doesn't have a front matter correctly formatted`;
return chalk.red(
`Article with ID "${articleStatus.articleId}" doesn't have a front matter correctly formatted`,
);
}

let text: string = `Article "${articleStatus.articleTitle}" `;
const baseText: string = `[${articleStatus.published ? 'PUBLISHED' : 'DRAFT'}] Article "${
articleStatus.articleTitle
}" `;
let text: string = '';

switch (articleStatus.updateStatus) {
case UpdateStatus.ALREADY_UP_TO_DATE as UpdateStatus.ALREADY_UP_TO_DATE:
text += `is already up to date`;
text = chalk.blueBright(baseText + `is already up to date`);
break;
case UpdateStatus.ERROR as UpdateStatus.ERROR:
text +=
`encountered an error:\n` +
`Error name: "${articleStatus.error.name}"\n` +
`Error message: "${articleStatus.error.message}"\n` +
`Error stack: "${articleStatus.error.stack}"`;
text = chalk.redBright(
baseText +
`encountered an error:\n` +
`Error name: "${articleStatus.error.name}"\n` +
`Error message: "${articleStatus.error.message}"\n` +
`Error stack: "${articleStatus.error.stack}"`,
);
break;
case UpdateStatus.UPDATED as UpdateStatus.UPDATED:
text += `has been successfully updated`;
if (articleStatus.published) {
text = chalk.greenBright(baseText + `has been successfully updated`);
} else {
text = chalk.yellowBright(baseText + `has been successfully updated`);
}
break;

default:
Expand Down

0 comments on commit 9243c85

Please sign in to comment.