(targetSkillsDir: string, slug: string)
| 129 | } |
| 130 | |
| 131 | async function removeSlugMapEntry(targetSkillsDir: string, slug: string): Promise<void> { |
| 132 | const map = await readSlugMap(targetSkillsDir); |
| 133 | if (!(slug in map)) return; |
| 134 | delete map[slug]; |
| 135 | if (Object.keys(map).length === 0) { |
| 136 | await remove(slugMapPath(targetSkillsDir)); |
| 137 | } else { |
| 138 | await writeJson(slugMapPath(targetSkillsDir), map); |
| 139 | } |
| 140 | } |
| 141 | |
| 142 | /** |
| 143 | * Decompress a skill ZIP and install it under `targetSkillsDir/`. |
no test coverage detected