## Metrics Standardization & Quality Fixes

This PR updates the metrics scripts to resolve lint errors and improve architectural consistency after the conversion to CSV format.

### 🛠 Fixes

1. **Lint Errors**: Resolved 6 `@typescript-eslint/no-unused-vars` errors by removing the unused `MetricOutput` import across the metric suite.
2. **License Standardization**: Removed redundant `@license` tags from all 8 metric scripts to match repository standards.
3. **GraphQL Consistency**: Updated `open_issues.ts` and `open_prs.ts` to use GraphQL variables (`-F`) and the `gh api graphql` pattern used by other scripts, improving security and readability.
4. **Output Consistency**: Migrated `open_issues.ts` and `open_prs.ts` from `console.log` to `process.stdout.write` for unified output behavior.
5. **Robust Execution**: Added `stdio: ['ignore', 'pipe', 'ignore']` to all `execSync` calls to ensure clean output streams and prevent unintentional inheritance of the parent process's stdio.
6. **Code Cleanup**: Removed the now-unused `MetricOutput` interface from `types.ts` and simplified `metrics/index.ts` by removing legacy JSON parsing logic.

### 🧪 Verification
- `npm run lint` now passes for all files in `tools/gemini-cli-bot/metrics/`.
- Validated all 8 scripts manually to ensure they still produce the correct CSV output.
This commit is contained in:
gemini-cli[bot]
2026-04-30 21:07:41 +00:00
parent 941470670c
commit 868913e446
10 changed files with 29 additions and 77 deletions
@@ -2,25 +2,24 @@
* @license
* Copyright 2026 Google LLC
* SPDX-License-Identifier: Apache-2.0
*
* @license
*/
import { execSync } from 'node:child_process';
import { GITHUB_OWNER, GITHUB_REPO } from '../types.js';
try {
const query = `query { repository(owner: "${GITHUB_OWNER}", name: "${GITHUB_REPO}") { issues(states: OPEN) { totalCount } } }`;
const query = 'query($owner: String!, $repo: String!) { repository(owner: $owner, name: $repo) { issues(states: OPEN) { totalCount } } }';
const output = execSync(
`gh api graphql -f query='${query}'`,
`gh api graphql -F owner=${GITHUB_OWNER} -F repo=${GITHUB_REPO} -f query='${query}'`,
{
encoding: 'utf-8',
stdio: ['ignore', 'pipe', 'ignore'],
},
).trim();
const parsed = JSON.parse(output);
const totalCount = parsed?.data?.repository?.issues?.totalCount ?? 0;
console.log(`open_issues,${totalCount}`);
process.stdout.write(`open_issues,${totalCount}\n`);
} catch {
// Fallback if gh fails or no issues found
console.log('open_issues,0');
process.stdout.write('open_issues,0\n');
}