Skip to content

Commit

Permalink
feat: add dereferencing of schemas and GH action
Browse files Browse the repository at this point in the history
  • Loading branch information
silvester-pari committed Oct 29, 2024
1 parent 3f59f45 commit 7246ebe
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 0 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/static.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Deploy static content to Pages

on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Dereference files
run: |
npm install && \
npm run dereference
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload entire repository
path: '.'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
39 changes: 39 additions & 0 deletions dereference.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
const $RefParser = require("@apidevtools/json-schema-ref-parser");
const fs = require("fs");
const path = require("path");

function getFilesAtDepth(directory, depth = 1, currentDepth = 0, files = []) {
const items = fs.readdirSync(directory);

items.forEach((item) => {
const itemPath = "./" + path.join(directory, item);
const stats = fs.statSync(itemPath);

// Check if item is a directory or a file
if (stats.isDirectory()) {
// Traverse deeper if it's a directory
getFilesAtDepth(itemPath, depth, currentDepth + 1, files);
} else if (currentDepth >= depth) {
// Add file to list if it's at the required depth
files.push(itemPath);
}
});

return files;
}

const relativePath = "./schemas";
const depthRequirement = 1; // Minimum depth for files to be included
getFilesAtDepth(relativePath, depthRequirement).forEach(async (file) => {
try {
const deref = await $RefParser.dereference(`./${file}`);
fs.writeFile(file, JSON.stringify(deref), (err) => {
if (err) console.log(err);
else {
console.log(`File written successfully: ${file}`);
}
});
} catch (err) {
console.error(err);
}
});
43 changes: 43 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@
"license": "ISC",
"bin": "./bin/cli.js",
"dependencies": {
"@apidevtools/json-schema-ref-parser": "^11.7.2",
"fs-extra": "^11.1.1",
"image-size": "^1.0.2",
"stac-node-validator": "2.0.0-beta.12"
},
"scripts": {
"dereference": "node ./dereference.js",
"test": "stac-node-validator --config config.json"
}
}

0 comments on commit 7246ebe

Please sign in to comment.