Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Google Summer of Code - New tooling page #914

Closed
wants to merge 9 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
175 changes: 175 additions & 0 deletions .github/ISSUE_TEMPLATE/adding-your-tooling.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
name: Add or Modify JSON Schema Tool
description: Submit your tool to be added or updated in the JSON Schema ecosystem.
title: "Add or Modify [Tool Name] in JSON Schema Ecosystem"
labels: ["Status: Triage"]
body:
- type: input
id: name
attributes:
label: "Tool Name"
description: "Please provide the name of your tool."
placeholder: "Enter the tool name"
validations:
required: true

- type: textarea
id: description
attributes:
label: "Tool Description"
description: "Provide a brief description of your tool."
placeholder: "Enter a brief description of the tool"
validations:
required: true

- type: checkboxes
id: actionType
attributes:
label: "Action Type"
description: "Select whether you want to add a new tool or modify an existing one."
options:
- label: "Add Tool"
- label: "Modify Tool"
validations:
required: true

- type: checkboxes
id: toolingTypes
attributes:
label: "Tooling Types"
description: "Select the categories of tooling that best describe your project."
options:
- label: "validator"
- label: "hyper-schema"
- label: "benchmarks"
- label: "documentation"
- label: "LDO-utility"
- label: "code-to-schema"
- label: "data-to-schema"
- label: "model-to-schema"
- label: "schema-to-types"
- label: "schema-to-code"
- label: "schema-to-web-UI"
- label: "schema-to-data"
- label: "util-general-processing"
- label: "util-schema-to-schema"
- label: "util-draft-migration"
- label: "util-format-conversion"
- label: "util-testing"
- label: "editor"
- label: "editor-plugins"
- label: "schema-repository"
- label: "linter"
- label: "linter-plugins"
validations:
required: true

- type: textarea
id: languages
attributes:
label: "Languages"
description: "List the languages your tool is built in or supports."
placeholder: "Enter the languages"

- type: textarea
id: environments
attributes:
label: "Environments"
description: "List the platforms or environments in which your tool operates."
placeholder: "Enter the environments"

- type: textarea
id: dependsOnValidators
attributes:
label: "Dependencies on Validators"
description: "If your tool depends on other validators, please provide their URLs."
placeholder: "Enter URLs of dependent validators"

- type: textarea
id: creators
attributes:
label: "Creators"
description: "Provide information about the creators or authors of the project."
placeholder: "Provide information about the creators or authors of the project. Include their username and platform."

- type: textarea
id: maintainers
attributes:
label: "Maintainers"
description: "Provide information about the maintainers or authors of the project."
placeholder: "Provide information about the maintainers or authors of the project. Include their username and platform."

- type: input
id: license
attributes:
label: "License"
description: "Specify the license under which your project is distributed."
placeholder: "Enter the license"
validations:
required: true

- type: input
id: source
attributes:
label: "Source Repository URL"
description: "Provide the URL of your project's repository."
placeholder: "Enter the source URL"
validations:
required: true

- type: input
id: homepage
attributes:
label: "Homepage URL"
description: "Provide the URL of your project's homepage."
placeholder: "Enter the homepage URL"

- type: checkboxes
id: supportedDialects
attributes:
label: "Supported Dialects"
description: "List the supported JSON Schema dialects. Use the draft version identifiers from the list below."
options:
- label: "1"
- label: "2"
- label: "3"
- label: "4"
- label: "5"
- label: "6"
- label: "7"
- label: "2019-09"
- label: "2020-12"

- type: textarea
id: additionalDialects
attributes:
label: "Additional Dialects"
description: "If there are additional dialects supported, provide their name and source URL."
placeholder: "Enter the additional dialects."

- type: input
id: bowtieIdentifier
attributes:
label: "Bowtie Compliance Testing"
description: "If your tool is tested by Bowtie, provide the Bowtie identifier."
placeholder: "Enter the Bowtie identifier"

- type: textarea
id: toolingListingNotes
attributes:
label: "Tooling Listing Notes"
description: "Add any notes about the tooling which will appear in the tooling listing on the website."
placeholder: "Enter the tooling listing notes."

- type: textarea
id: compliance
attributes:
label: "Compliance"
description: "Provide details on what must be done to make the implementation the most compliant that it can be."
placeholder: "Enter the compliance details."

- type: textarea
id: landscape
attributes:
label: "Landscape Information"
description: "Provide additional information for the JSON Schema landscape diagram, such as your logo or a link to your logo. Indicate if you want to opt-out of the landscape."
placeholder: "Enter the landscape information and preferences."
33 changes: 33 additions & 0 deletions .github/workflows/trigger-update-landscape-tooling.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Trigger Update Landscape Tooling Workflow

on:
push:
paths:
- data/tooling-data.yaml
branches:
- main
workflow_dispatch:


jobs:
trigger-workflow:
runs-on: ubuntu-latest

steps:
- name: Create workflow token
id: app-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}

- name: Trigger update landscape repository workflow
env:
AUTH_TOKEN: ${{ steps.app-token.output.token }}
run: |
curl -L \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: Bearer $AUTH_TOKEN" \
https://api.github.com/repos/json-schema-org/landscape/actions/workflows/update-landscape-tooling.yml/dispatches \
-d '{"ref":"main"}'
61 changes: 61 additions & 0 deletions .github/workflows/validate-tooling-data.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Validate Tooling Data

on:
push:
paths:
- data/tooling-data.yaml
branches:
- main
pull_request:
paths:
- data/tooling-data.yaml
workflow_dispatch:

jobs:
validate-tooling-data:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Corepack enable
run: corepack enable

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: yarn add ajv ajv-formats js-yaml

- name: Validate tooling-data.yaml
run: |
node -e "
const Ajv = require('ajv/dist/2020');
const addFormats = require('ajv-formats');
const path = require('path');
const fs = require('fs');
const yaml = require('js-yaml');
const dataDir = path.join(process.env.GITHUB_WORKSPACE, 'data');
const schemaPath = path.join(dataDir, 'tooling-data.schema.json');
const dataPath = path.join(dataDir, 'tooling-data.yaml');

try {
const schema = JSON.parse(fs.readFileSync(schemaPath, 'utf-8'));
const data = yaml.load(fs.readFileSync(dataPath, 'utf-8'));
const ajv = new Ajv({ allErrors: true });
addFormats(ajv);
const validate = ajv.compile(schema);
const valid = validate(data);
if (!valid) {
console.error('Validation failed:', validate.errors);
process.exit(1);
} else {
console.log('tooling-data.yaml is valid.');
}
} catch (error) {
console.error('Error validating tooling-data.yaml:', error);
process.exit(1);
}"
8 changes: 2 additions & 6 deletions components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ const MainNavigation = () => {

<MainNavLink
className='hidden lg:block hover:underline'
uri='/implementations'
uri='/tools'
label='Tools'
isActive={section === 'tools'}
/>
Expand Down Expand Up @@ -294,11 +294,7 @@ const MobileNav = () => {
isActive={section === 'docs'}
/>

<MainNavLink
uri='/implementations'
label='Tools'
isActive={section === 'tools'}
/>
<MainNavLink uri='/tools' label='Tools' isActive={section === 'tools'} />
<MainNavLink uri='/blog' label='Blog' isActive={section === 'blog'} />
<MainNavLink
uri='/community'
Expand Down
8 changes: 0 additions & 8 deletions data/hyper-libraries-modern.yml

This file was deleted.

Loading
Loading