diff --git a/src/common.ts b/src/common.ts
index ae06d7b3..a84fa157 100644
--- a/src/common.ts
+++ b/src/common.ts
@@ -13,7 +13,7 @@
* this program. If not, see .
*/
import {Api} from '@openstapps/gitlab-api';
-import {Project} from '@openstapps/gitlab-api/lib/types';
+import {Group, Project} from '@openstapps/gitlab-api/lib/types';
import {Logger} from '@openstapps/logger';
import {asyncPool} from 'async-pool-native/dist/async-pool';
import {readFile, unlink, writeFile} from 'fs';
@@ -45,6 +45,18 @@ export async function getProjects(api: Api, groups: number[]): Promise {
+ return flatten2dArray(await asyncPool(2, groups, async (groupId) => {
+ return await api.getSubGroupsForGroup(groupId);
+ }));
+}
+
/**
* Flatten 2d array
*
diff --git a/src/tasks/report.ts b/src/tasks/report.ts
index 8493ca87..318ef9aa 100644
--- a/src/tasks/report.ts
+++ b/src/tasks/report.ts
@@ -20,7 +20,7 @@ import * as moment from 'moment';
import {join} from 'path';
import {cwd} from 'process';
import {promisify} from 'util';
-import {flatten2dArray, getProjects, logger} from '../common';
+import {flatten2dArray, getProjects, getSubGroups, logger} from '../common';
import {BOLD_LABELS, GROUPS, LABEL_WEIGHTS} from '../configuration';
const asyncWriteFile = promisify(writeFile);
@@ -295,7 +295,13 @@ export async function getMergeRequestsForProjects(api: Api,
export async function report(api: Api, label: string) {
const templates = compileTemplates();
- const projects = await getProjects(api, GROUPS);
+ const groupIds: number[] = [];
+ groupIds.push.apply(groupIds, GROUPS);
+ groupIds.push.apply(groupIds, (await getSubGroups(api, GROUPS)).map((group) => group.id));
+
+ logger.log(`Getting data for ${groupIds.length} group(s).`);
+
+ const projects = await getProjects(api, groupIds);
const issues = await getIssues(api, label);
const issuesGroupedByAssignee = groupIssuesByAssignee(issues);