Skip to content

Commit

Permalink
fix: update config value to partialsDirectories (#231)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bryce Kalow authored Jun 6, 2023
1 parent ca69d24 commit a527706
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 14 deletions.
5 changes: 5 additions & 0 deletions .changeset/serious-pants-lie.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@hashicorp/platform-content-conformance': patch
---

Update partialsDirectory to partialsDirectories and add docs/partials
2 changes: 1 addition & 1 deletion packages/content-conformance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ Rules can be specified with differing severity to control the check's failure st
export default {
root: '.',
contentFileGlobPattern: 'content/**/*.mdx',
partialsDirectory: 'content/partials',
partialsDirectories: ['content/partials'],
rules: {
'with-config': [
'error',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
I am a partial file
5 changes: 4 additions & 1 deletion packages/content-conformance/src/__tests__/config.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ describe('loadConfig', () => {
"./rules/must-have-h1": "error",
}
`)
expect(config.partialsDirectory).toEqual('content/partials')
expect(config.partialsDirectories).toEqual([
'content/partials',
'docs/partials',
])
})

test('it loads config presets', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,10 @@ this is an invalid multi-line description.
`)
})

it('should set isPartial based on the path and partialsDirectory', () => {
it('should set isPartial based on the path and partialsDirectories', () => {
const file = new ContentFile(
{ value: 'I am a partial', path: 'content/partials/partial.mdx' },
{ partialsDirectory: 'content/partials' }
{ partialsDirectories: ['content/partials'] }
)

expect(file.isPartial).toBeTruthy()
Expand Down
33 changes: 33 additions & 0 deletions packages/content-conformance/src/__tests__/engine.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,4 +144,37 @@ describe('ContentConformanceEngine', () => {
}
`)
})

test('detects partials in docs/partials', async () => {
const filePaths: Set<ContentFile> = new Set()
const opts = {
root: getFixturePath('basic-with-content-files'),
contentFileGlobPattern: '{content,docs}/**/*.mdx',
partialsDirectories: ['docs/partials'],
rules: [
{
level: 'warn' as const,
type: 'content' as const,
id: 'fake-rule-for-visiting-all-files',
description: 'This is a fake rule for testing purposes',
executor: {
async contentFile(file) {
// accumulate files for assertion
if (file.isPartial) filePaths.add(file.path)
},
},
},
],
}

const engine = new ContentConformanceEngine(opts)

await engine.execute()

expect(filePaths).toMatchInlineSnapshot(`
Set {
"docs/partials/some-partial.mdx",
}
`)
})
})
8 changes: 4 additions & 4 deletions packages/content-conformance/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { loadModuleFromFilePath, getPackageFilePath } from './utils.js'
const CONFIG_FILE_NAME = 'content-conformance.config.mjs'

const CONFIG_DEFAULTS = {
partialsDirectory: 'content/partials',
partialsDirectories: ['content/partials', 'docs/partials'],
}

const RuleLevels = z.enum(['off', 'warn', 'error'])
Expand All @@ -22,7 +22,7 @@ const ContentConformanceConfig = z.object({
root: z.string(),
preset: z.string().optional(),
contentFileGlobPattern: z.string(),
partialsDirectory: z.string().optional(),
partialsDirectories: z.array(z.string()).optional(),
dataFileGlobPattern: z.string().optional(),
presets: z.array(z.string()).optional(),
rules: z.record(ContentConformanceConfigRule).optional(),
Expand Down Expand Up @@ -88,8 +88,8 @@ export async function loadConfig({
}

function applyConfigDefaults(config: ContentConformanceConfig) {
if (!config.partialsDirectory) {
config.partialsDirectory = CONFIG_DEFAULTS.partialsDirectory
if (!config.partialsDirectories) {
config.partialsDirectories = [...CONFIG_DEFAULTS.partialsDirectories]
}
}

Expand Down
10 changes: 5 additions & 5 deletions packages/content-conformance/src/content-file.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import type { Test } from 'unist-util-is'
import type { Node } from 'unist'

interface ContentFileOpts {
partialsDirectory?: string
partialsDirectories?: string[]
}

/**
Expand All @@ -34,10 +34,10 @@ export class ContentFile extends VFile {
super(value)
this.parseFrontmatter()

// If a partialsDirectory is provided, check if the file is in the directory
if ((value as Options)?.path && opts?.partialsDirectory) {
this.isPartial = String((value as Options).path).startsWith(
opts.partialsDirectory
// If a partialsDirectories is provided, check if the file is in the directory
if ((value as Options)?.path && opts?.partialsDirectories) {
this.isPartial = opts.partialsDirectories.some((partialsDirectory) =>
String((value as Options).path).startsWith(partialsDirectory)
)
}
}
Expand Down
2 changes: 1 addition & 1 deletion packages/content-conformance/src/engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ export class ContentConformanceEngine {
path: String(filepath),
value: contents,
},
{ partialsDirectory: this.opts.partialsDirectory }
{ partialsDirectories: this.opts.partialsDirectories }
)

this.contentFiles.push(file)
Expand Down

0 comments on commit a527706

Please sign in to comment.