Skip to content

Commit

Permalink
Merge branch 'stage'
Browse files Browse the repository at this point in the history
  • Loading branch information
musayann committed Apr 15, 2024
2 parents c94cec4 + 85c1f60 commit a13e232
Show file tree
Hide file tree
Showing 48 changed files with 8,458 additions and 723 deletions.
5 changes: 4 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
{
"extends": "next/core-web-vitals"
"extends": "next/core-web-vitals",
"rules": {
"react-hooks/exhaustive-deps": "off"
}
}
98 changes: 98 additions & 0 deletions .github/workflows/deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Sample workflow for building and deploying a Next.js site to GitHub Pages
#
# To get started with Next.js see: https://nextjs.org/docs/getting-started
#
name: Deploy Next.js site to Pages

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

# 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:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Detect package manager
id: detect-package-manager
run: |
if [ -f "${{ github.workspace }}/yarn.lock" ]; then
echo "manager=yarn" >> $GITHUB_OUTPUT
echo "command=install" >> $GITHUB_OUTPUT
echo "runner=yarn" >> $GITHUB_OUTPUT
exit 0
elif [ -f "${{ github.workspace }}/package.json" ]; then
echo "manager=npm" >> $GITHUB_OUTPUT
echo "command=ci" >> $GITHUB_OUTPUT
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
exit 0
else
echo "Unable to determine package manager"
exit 1
fi
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: ${{ steps.detect-package-manager.outputs.manager }}
- name: Setup Pages
uses: actions/configure-pages@v4
with:
# Automatically inject basePath in your Next.js configuration file and disable
# server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
#
# You may remove this line if you want to manage the configuration yourself.
static_site_generator: next
- name: Restore cache
uses: actions/cache@v4
with:
path: |
.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-
- name: Install dependencies
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
- name: Build with Next.js
run: ${{ steps.detect-package-manager.outputs.runner }} npx --no-install next build
# - name: Static HTML export with Next.js
# run: ${{ steps.detect-package-manager.outputs.runner }} next export
- name: Ensure output directory exists
run: mkdir -p ./out

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./out

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
62 changes: 62 additions & 0 deletions generate-output-json.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
const csvFilePath = './public/data.csv'
const csv = require('csvtojson')
const groupBy = require("lodash.groupby");
const fs = require('fs')
const relations = require('./public/output.json')

function removeEmptyFields(obj) {
return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v));
}

function parseTags(tags) {
const list = tags.split(';').map(el => el.trim()).filter((item) => item).map(line => {
const [key, value] = line.split(':')
return {
key: key.trim(),
value: value?.trim() || value
}
})
const groupedList = groupBy(list, 'key');

const output = {}

Object.keys(groupedList).forEach(key => {
output[key] = groupedList[key].map(item => item.value)
});
return output;
}


async function generateOutputJson() {
// load relationships from json
const relatedData = new Map();
relations.forEach((item) => {
relatedData.set(item['Key'], item);
});

const jsonArray = await csv().fromFile(csvFilePath)
const output = jsonArray.map((item) => {
const manualTags = parseTags(item['Manual Tags'] || "")
const autoTags = parseTags(item['Automatic Tags'] || "")
const relations = relatedData.get(item['Key'])?.PARSED_RELATES_TO || [];
// const tags = relatedData.get(item['Key'])?.PARSED_MANUAL_TAGS || [];
const level = manualTags['CO-DESIGN LEVEL'] || [];
delete manualTags['CO-DESIGN LEVEL'];

manualTags['CO_DESIGN_LEVEL'] = level;
const coreToolKits = manualTags['CORE TOOLKIT'];
if(coreToolKits) {
manualTags['CORE_TOOLKIT'] = coreToolKits;
delete manualTags['CORE TOOLKIT'];
}
return {
...removeEmptyFields(item),
'PARSED_MANUAL_TAGS': manualTags,
'PARSED_AUTOMATIC_TAGS': autoTags,
'PARSED_RELATES_TO': relations
}
});
fs.writeFileSync('./public/data.json', JSON.stringify(output, null, 2))
}

generateOutputJson()
6 changes: 6 additions & 0 deletions next-seo.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { NextSeoProps } from "next-seo"
export default {
title: "CoDesignSytemsMap",
description:
"A map of design systems and their components, patterns, and tools.",
} as NextSeoProps
12 changes: 12 additions & 0 deletions next.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* @type {import('next').NextConfig}
*/
const nextConfig = {
reactStrictMode: false,
output: "export",
images: {
unoptimized: true,
},
};

module.exports = nextConfig;
Loading

0 comments on commit a13e232

Please sign in to comment.