diff --git a/src/options/readUsageFromReadme.test.ts b/src/options/readUsageFromReadme.test.ts index c592ac153..2775768d5 100644 --- a/src/options/readUsageFromReadme.test.ts +++ b/src/options/readUsageFromReadme.test.ts @@ -9,10 +9,10 @@ describe(readUsageFromReadme, () => { expect(usage).toBeUndefined(); }); - it("returns undefined when ## Usage found and ## Development is not found", () => { + it("returns existing content when ## Usage is found and a next important heading is not found", () => { const usage = readUsageFromReadme("## Usage\n\nContents."); - expect(usage).toBeUndefined(); + expect(usage).toBe(`\n\nContents.`); }); it("returns undefined when there is no content between ## Usage and ## Development", () => { @@ -26,4 +26,20 @@ describe(readUsageFromReadme, () => { expect(usage).toBe("Content."); }); + + it("returns the content when content exists between ## Usage and ## Contributing", () => { + const usage = readUsageFromReadme( + "## Usage\n\n Content.\n## Contributing", + ); + + expect(usage).toBe("Content."); + }); + + it("returns the content when content exists between ## Usage and ## Contributors", () => { + const usage = readUsageFromReadme( + "## Usage\n\n Content.\n## Contributors", + ); + + expect(usage).toBe("Content."); + }); }); diff --git a/src/options/readUsageFromReadme.ts b/src/options/readUsageFromReadme.ts index aa77ed98d..d3bcddff1 100644 --- a/src/options/readUsageFromReadme.ts +++ b/src/options/readUsageFromReadme.ts @@ -1,4 +1,3 @@ -const startDevelopment = "## Development"; const startUsage = "## Usage"; export function readUsageFromReadme(readme: string) { @@ -7,17 +6,15 @@ export function readUsageFromReadme(readme: string) { return undefined; } - const indexOfDevelopment = readme.indexOf( - startDevelopment, - indexOfUsage + startUsage.length, - ); - if (indexOfDevelopment === -1) { - return undefined; + const offset = indexOfUsage + startUsage.length; + const indexOfNextKnownHeading = readme + .slice(offset) + .search(/## (?:Development|Contributing|Contributors)/); + if (indexOfNextKnownHeading === -1) { + return readme.slice(offset); } - const usage = readme - .slice(indexOfUsage + startUsage.length, indexOfDevelopment) - .trim(); + const usage = readme.slice(offset, indexOfNextKnownHeading + offset).trim(); return usage ? usage : undefined; }