Maybe this will turn into a mono-repo with a lot of smaller packages, but for now - this is fine.
export const fileMapForPerilSettingsRepo = async (api: octokit, options: NewRepoOptions)
Which returns a fileMap for an example Peril settings repo. There are a few options.
Usage:
const map = await fileMapForPerilSettingsRepo(api, {
isPublic: true,
setupTests: true,
useTypeScript: true,
repo: {
name: "Fake Repo",
owner: {
login: "User Name",
},
},
})
Mainly one function:
export function lint(
settingsReference: string,
api: octokit,
currentSettings?: FileRelatedPartOfJSON
): Promise<ErrorReport>
You pass in the dangerfile reference URL for the settings repo, an already set-up OctoKit api
object (so you
handle auth basically) and you can optionally pass in the currentSettings
- if you don't this lib will grab the
version in the settingsReference
.
Usage:
import { lint } from "peril-settings-linter"
const runLinter = async () => {
const results = await lint("artsy/peril-settings@settings.json", api)
if (results.networkErrors.length) {
console.error(`Could not find files at: ${results.networkErrors.join(",")}`)
}
if (results.schemaErrors.length) {
console.error(`Settings file did not pass schema validation: ${results.schemaHumanReadableErrors}`)
console.error(`Settings file did not pass schema validation: ${results.schemaErrors}`)
}
}
git clone https://github.com/orta/peril-settings-linter.git
cd peril-settings-linter
yarn install
# Open VS Code with `code .`
code .
# Run tests
yarn jest
yarn type-check
yarn release