mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-06-16 16:36:53 +08:00
scripts/github-coordination.js:
- parseArgs: replace 13-entry if/else chain with BOOL_FLAGS/VALUE_FLAGS
lookup maps; shrinks from 119 to ~45 lines
- Extract dispatchCommand(options, ctx) and formatOutput(payload, options)
from main(); main() shrinks to ~20 lines
scripts/lib/github-coordination.js:
- Split 1041-line monolith into 6 focused sub-modules under
scripts/lib/github-coordination/ (policy, parsing, gh-api, state,
actions, store); index becomes a thin re-export (~55 lines)
- Document ECC_GH_SHIM trust boundary in runGh() (gh-api.js)
- Document applyClaim() read→check→write race condition (actions.js)
tests/lib/github-coordination.test.js:
- Refactor runTests() to data-driven DESCRIPTORS array + runGroup()
helper; runTests() shrinks to ~10 lines
- Add 5 new edge-case tests: normalizeRepo('') and normalizeRepo(' ')
throw, desiredLabelsForState for blocked/ready statuses, and
buildIssueStateFromAction for validate action (15 → 20 tests)
tests/scripts/github-coordination.test.js:
- Replace console.log in test runner with process.stdout.write
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
58 lines
2.1 KiB
JavaScript
58 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
const policy = require('./github-coordination/policy');
|
|
const parsing = require('./github-coordination/parsing');
|
|
const ghApi = require('./github-coordination/gh-api');
|
|
const state = require('./github-coordination/state');
|
|
const actions = require('./github-coordination/actions');
|
|
const store = require('./github-coordination/store');
|
|
|
|
module.exports = {
|
|
DEFAULT_CONFIG_FILE: policy.DEFAULT_CONFIG_FILE,
|
|
DEFAULT_CONFIG_PATH: policy.DEFAULT_CONFIG_PATH,
|
|
DEFAULT_POLICY: policy.DEFAULT_POLICY,
|
|
DEFAULT_SCHEMA_VERSION: policy.DEFAULT_SCHEMA_VERSION,
|
|
loadPolicy: policy.loadPolicy,
|
|
|
|
extractCoordinationState: parsing.extractCoordinationState,
|
|
extractIssueReferences: parsing.extractIssueReferences,
|
|
extractTasks: parsing.extractTasks,
|
|
mergeIssueBody: parsing.mergeIssueBody,
|
|
renderCoordinationState: parsing.renderCoordinationState,
|
|
|
|
commentIssue: ghApi.commentIssue,
|
|
editIssue: ghApi.editIssue,
|
|
getIssue: ghApi.getIssue,
|
|
listIssues: ghApi.listIssues,
|
|
normalizeIssueNumber: ghApi.normalizeIssueNumber,
|
|
normalizeLabels: ghApi.normalizeLabels,
|
|
normalizeRepo: ghApi.normalizeRepo,
|
|
runGh: ghApi.runGh,
|
|
runGhJson: ghApi.runGhJson,
|
|
|
|
buildIssueComment: state.buildIssueComment,
|
|
buildIssueStateFromAction: state.buildIssueStateFromAction,
|
|
defaultCoordinationState: state.defaultCoordinationState,
|
|
desiredLabelsForState: state.desiredLabelsForState,
|
|
getCoordinationState: state.getCoordinationState,
|
|
mapStateToWorkItemStatus: state.mapStateToWorkItemStatus,
|
|
slugifySegment: state.slugifySegment,
|
|
summarizeStateForOutput: state.summarizeStateForOutput,
|
|
syncIssueLabels: state.syncIssueLabels,
|
|
verifyDependenciesClosed: state.verifyDependenciesClosed,
|
|
|
|
applyClaim: actions.applyClaim,
|
|
applyDecompose: actions.applyDecompose,
|
|
applyPublish: actions.applyPublish,
|
|
applyReview: actions.applyReview,
|
|
applySync: actions.applySync,
|
|
applyUnblock: actions.applyUnblock,
|
|
applyValidate: actions.applyValidate,
|
|
formatCollection: actions.formatCollection,
|
|
formatSummary: actions.formatSummary,
|
|
|
|
epicWorkItemId: store.epicWorkItemId,
|
|
openStore: store.openStore,
|
|
upsertCoordinationWorkItem: store.upsertCoordinationWorkItem,
|
|
};
|