Duplicate Code Opportunity
Summary
- Pattern: The
defaultDependencies / dependency-injection scaffold is repeated across the Cloud Hypervisor and NVX VMM identity managers.
- Locations:
src/cloud-hypervisor/vmm-identity.ts:57-84 and src/nvx/runtime-lifecycle.ts:103-130.
- Impact: ~24 duplicated lines; reduces maintenance burden for shared fs/process helper wiring and keeps the two identity managers aligned.
Evidence
// src/cloud-hypervisor/vmm-identity.ts:57-84
const defaultDependencies: CloudHypervisorVmmIdentityDependencies = {
mkdir: fs.mkdir,
writeFile: fs.writeFile,
readFile: fs.readFile,
rm: fs.rm,
rmdir: fs.rmdir,
lstat: fs.lstat,
run: async (command, args) => {
const result = await execa(command, [...args], {
reject: false,
stdio: ['ignore', 'pipe', 'pipe'],
env: { PATH: '/usr/sbin:/usr/bin:/sbin:/bin' },
extendEnv: false,
});
if (result.exitCode !== 0) {
throw new Error(
`${command} ${args.join(' ')} exited with code ${result.exitCode}: ` +
`${result.stderr.trim() || result.stdout.trim()}`,
);
}
return { stdout: result.stdout, stderr: result.stderr };
},
sleep: (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)),
pid: process.pid,
processStartTime: readProcessStartTime,
};
// src/nvx/runtime-lifecycle.ts:103-130
const defaultDependencies: NvxRuntimeLifecycleDependencies = {
mkdir: fs.mkdir,
writeFile: fs.writeFile,
readFile: fs.readFile,
rm: fs.rm,
rename: fs.rename,
rmdir: fs.rmdir,
lstat: fs.lstat,
run: async (command, args) => {
const result = await execa(command, [...args], {
reject: false,
stdio: ['ignore', 'pipe', 'pipe'],
env: { PATH: '/usr/sbin:/usr/bin:/sbin:/bin' },
extendEnv: false,
});
if (result.exitCode !== 0) {
throw new Error(
`${command} ${args.join(' ')} exited with code ${result.exitCode}: ` +
`${result.stderr.trim() || result.stdout.trim()}`,
);
}
return { stdout: result.stdout, stderr: result.stderr };
},
sleep: (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)),
pid: process.pid,
processStartTime: readProcessStartTime,
};
Suggested Refactoring
- Extract a shared helper such as
createDefaultIdentityDependencies() in a common module.
- Keep the small per-manager differences explicit by layering only the extra
rename dependency for NVX on top of the shared base object.
Affected Files
src/cloud-hypervisor/vmm-identity.ts — lines 57-84
src/nvx/runtime-lifecycle.ts — lines 103-130
Effort Estimate
Low
Detected by Duplicate Code Detector workflow. Run date: 2026-09-22
Generated by Duplicate Code Detector · copilot · gpt50mini · 5.91 AIC · ⊞ 21K · ◷
Duplicate Code Opportunity
Summary
defaultDependencies/ dependency-injection scaffold is repeated across the Cloud Hypervisor and NVX VMM identity managers.src/cloud-hypervisor/vmm-identity.ts:57-84andsrc/nvx/runtime-lifecycle.ts:103-130.Evidence
Suggested Refactoring
createDefaultIdentityDependencies()in a common module.renamedependency for NVX on top of the shared base object.Affected Files
src/cloud-hypervisor/vmm-identity.ts— lines 57-84src/nvx/runtime-lifecycle.ts— lines 103-130Effort Estimate
Low
Detected by Duplicate Code Detector workflow. Run date: 2026-09-22