Skip to content

Commit 4a66e29

Browse files
authored
render all projects
1 parent 650f19e commit 4a66e29

File tree

4 files changed

+54
-21
lines changed

4 files changed

+54
-21
lines changed

src/main.ts

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,48 @@ import { TEST_CONFIG } from './testConfig';
1010
import { TColumnTypes } from './interfaces/TColumnTypes';
1111
import { IWrappedIssue } from './interfaces/IWrappedIssue';
1212
import { renderIssuesBlock } from './views/renderIssuesBlock';
13+
import { TRepoIssue } from './interfaces/TRepoIssue';
14+
import { TProject } from './interfaces/TProject';
1315

1416
export const OWNER = 'legomushroom';
1517
export const REPO = 'codespaces-board';
1618
const TOKEN_NAME = 'REPO_GITHUB_PAT';
1719

20+
const renderProject = async (projectKit: ProjectsOctoKit, project: TProject): Promise<string> => {
21+
const columns = await projectKit.getColumns(project);
22+
const issues = await projectKit.getRepoIssues(TEST_CONFIG.repos[0]);
23+
const progressIssues = await projectKit.filterIssuesForColumnCards(issues, columns[TColumnTypes.InProgress]);
24+
const doneIssues = await projectKit.filterIssuesForColumnCards(issues, columns[TColumnTypes.Done]);
25+
const backlogIssues = await projectKit.filterIssuesForColumnCards(issues, columns[TColumnTypes.Committed]);
26+
27+
const wrappedProgressIssues: IWrappedIssue[] = progressIssues.map(wrapIssue(TColumnTypes.InProgress));
28+
const wrappedDoneIssues: IWrappedIssue[] = doneIssues.map(wrapIssue(TColumnTypes.Done));
29+
const wrappedIssues = [...wrappedProgressIssues, ...wrappedDoneIssues];
30+
31+
const projectTitle = `### ${project.name}`;
32+
const inWorkIssuesString = renderIssuesBlock(`🏗️ In work (${doneIssues.length}/${progressIssues.length + doneIssues.length})`, wrappedIssues);
33+
34+
const wrappedBacklogIssues: IWrappedIssue[] = backlogIssues.map(wrapIssue(TColumnTypes.Committed));
35+
36+
const backlogIssuesString = renderIssuesBlock(`📅 Backlog (${wrappedBacklogIssues.length})`, wrappedBacklogIssues);
37+
38+
return [
39+
'',
40+
projectTitle,
41+
inWorkIssuesString,
42+
backlogIssuesString,
43+
].join('\n');
44+
}
45+
46+
const wrapIssue = (column: TColumnTypes) => {
47+
return (issue: TRepoIssue) => {
48+
return {
49+
column,
50+
issue,
51+
};
52+
};
53+
}
54+
1855
async function run(): Promise<void> {
1956
try {
2057
const token = env(TOKEN_NAME) ?? core.getInput('token');
@@ -25,18 +62,13 @@ async function run(): Promise<void> {
2562

2663
const projectKit = new ProjectsOctoKit(token);
2764
const projects = await projectKit.getAllProjects(TEST_CONFIG.repos);
28-
const columns = await projectKit.getColumns(projects[0]);
29-
const issues = await projectKit.getRepoIssues(TEST_CONFIG.repos[0]);
30-
const columnIssues = await projectKit.filterIssuesForColumnCards(issues, columns[TColumnTypes.Committed]);
31-
32-
const wrappedIssues: IWrappedIssue[] = columnIssues.map((issue) => {
33-
return {
34-
column: TColumnTypes.InProgress,
35-
issue,
36-
};
37-
});
38-
39-
console.log(renderIssuesBlock(projects[0].name, wrappedIssues));
65+
66+
const result = await Promise.all(projects.map((project) => {
67+
return renderProject(projectKit, project);
68+
}));
69+
70+
console.log(result.join('\n') + '\n');
71+
4072
} catch (error) {
4173
console.error(error);
4274
core.setFailed(error.message)

src/octokit/ProjectsOctoKit.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ export class ProjectsOctoKit extends OctoKitBase {
8282
const issues = await this.kit.paginate(this.kit.issues.listForRepo, {
8383
repo: repo.repo,
8484
owner: repo.owner,
85+
state: 'all',
8586
});
8687

8788
return issues;

src/testConfig.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ export const TEST_CONFIG: IConfig = {
88
repo: 'codespaces-board',
99
projects: [1, 2],
1010
},
11-
{
12-
owner: 'legomushroom',
13-
repo: 'codespaces-board',
14-
projects: [1],
15-
}
11+
// {
12+
// owner: 'legomushroom',
13+
// repo: 'codespaces-board',
14+
// projects: [3],
15+
// }
1616
]
1717
};

src/views/renderIssue.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import { TRepoIssue } from '../interfaces/TRepoIssue';
44
const mapColumnToEmoji = (column: TColumnTypes) => {
55
switch (column) {
66
case TColumnTypes.InProgress: {
7-
return '🏃';
7+
return '🏃 ';
88
}
99

1010
case TColumnTypes.Done: {
11-
return '🙌';
11+
return '';
1212
}
1313

1414
case TColumnTypes.Committed: {
15-
return '📅';
15+
return '';
1616
}
1717

1818
default:
@@ -48,5 +48,5 @@ export const renderIssue = (column: TColumnTypes, issue: TRepoIssue) => {
4848
const issueState = mapIssueStateToListItemState(issue);
4949
const assignees = renderAssignees(issue);
5050

51-
return `- [${issueState}] ${mapColumnToEmoji(column)} ${title} ${html_url} ${assignees}`;
51+
return `- [${issueState}] ${mapColumnToEmoji(column)}${title} ${html_url} ${assignees}`;
5252
}

0 commit comments

Comments
 (0)