8 Commits

Author SHA1 Message Date
Trance-0
d6a375ea34 Update prebuild.sh 2025-11-24 15:56:07 -06:00
Trance-0
a91577319e backup 2025-11-24 15:53:05 -06:00
Trance-0
5ff45521c5 Update prebuild.sh 2025-11-24 15:45:24 -06:00
Trance-0
d62bbff1f0 backup 2025-11-24 15:44:18 -06:00
Trance-0
7091378d35 updates? 2025-11-24 15:42:04 -06:00
Trance-0
70aacb3d75 update? 2025-11-24 15:22:30 -06:00
Trance-0
b9f761d256 trying prebuild scripts 2025-11-19 16:08:36 -06:00
Trance-0
aca1e0698b backups 2025-11-19 14:44:05 -06:00
37 changed files with 2422 additions and 698 deletions

View File

@@ -0,0 +1,73 @@
name: Sync from Gitea (distribute→distribute, keep workflow)
on:
schedule:
# 2 times per day (UTC): 7:00, 11:00
- cron: '0 7,11 * * *'
workflow_dispatch: {}
permissions:
contents: write # allow pushing with GITHUB_TOKEN
jobs:
mirror:
runs-on: ubuntu-latest
steps:
- name: Check out GitHub repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetch from Gitea
env:
GITEA_URL: ${{ secrets.GITEA_URL }}
GITEA_USER: ${{ secrets.GITEA_USERNAME }}
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
run: |
# Build authenticated Gitea URL: https://USER:TOKEN@...
AUTH_URL="${GITEA_URL/https:\/\//https:\/\/$GITEA_USER:$GITEA_TOKEN@}"
git remote add gitea "$AUTH_URL"
git fetch gitea --prune
- name: Update distribute from gitea/distribute, keep workflow, and force-push
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
run: |
# Configure identity for commits made by this workflow
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
# Authenticated push URL for GitHub
git remote set-url origin "https://x-access-token:${GH_TOKEN}@github.com/${GH_REPO}.git"
WF_PATH=".github/workflows/sync-from-gitea.yml"
# If the workflow exists in the current checkout, save a copy
if [ -f "$WF_PATH" ]; then
mkdir -p /tmp/gh-workflows
cp "$WF_PATH" /tmp/gh-workflows/
fi
# Reset local 'distribute' to exactly match gitea/distribute
if git show-ref --verify --quiet refs/remotes/gitea/distribute; then
git checkout -B distribute gitea/distribute
else
echo "No gitea/distribute found, nothing to sync."
exit 0
fi
# Restore the workflow into the new HEAD and commit if needed
if [ -f "/tmp/gh-workflows/sync-from-gitea.yml" ]; then
mkdir -p .github/workflows
cp /tmp/gh-workflows/sync-from-gitea.yml "$WF_PATH"
git add "$WF_PATH"
if ! git diff --cached --quiet; then
git commit -m "Inject GitHub sync workflow"
fi
fi
# Force-push distribute so GitHub mirrors Gitea + workflow
git push origin distribute --force

View File

@@ -1,23 +1,61 @@
export default {
index: "Course Description",
"---":{
type: 'separator'
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
CSE332S_L1: "Object-Oriented Programming Lab (Lecture 1)",
CSE332S_L2: "Object-Oriented Programming Lab (Lecture 2)",
CSE332S_L3: "Object-Oriented Programming Lab (Lecture 3)",
CSE332S_L4: "Object-Oriented Programming Lab (Lecture 4)",
CSE332S_L5: "Object-Oriented Programming Lab (Lecture 5)",
CSE332S_L6: "Object-Oriented Programming Lab (Lecture 6)",
CSE332S_L7: "Object-Oriented Programming Lab (Lecture 7)",
CSE332S_L8: "Object-Oriented Programming Lab (Lecture 8)",
CSE332S_L9: "Object-Oriented Programming Lab (Lecture 9)",
CSE332S_L10: "Object-Oriented Programming Lab (Lecture 10)",
CSE332S_L11: "Object-Oriented Programming Lab (Lecture 11)",
CSE332S_L12: "Object-Oriented Programming Lab (Lecture 12)",
CSE332S_L13: "Object-Oriented Programming Lab (Lecture 13)",
CSE332S_L14: "Object-Oriented Programming Lab (Lecture 14)",
CSE332S_L15: "Object-Oriented Programming Lab (Lecture 15)",
CSE332S_L16: "Object-Oriented Programming Lab (Lecture 16)",
CSE332S_L17: "Object-Oriented Programming Lab (Lecture 17)"
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math429'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4111'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4121'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4201'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math416'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math401'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE332S'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE347'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE442T'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5313'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE510'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE559A'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5519'CSE332S_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -1,18 +1,61 @@
export default {
index: "Course Description",
"---":{
type: 'separator'
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
Exam_reviews: "Exam reviews",
CSE347_L1: "Analysis of Algorithms (Lecture 1)",
CSE347_L2: "Analysis of Algorithms (Lecture 2)",
CSE347_L3: "Analysis of Algorithms (Lecture 3)",
CSE347_L4: "Analysis of Algorithms (Lecture 4)",
CSE347_L5: "Analysis of Algorithms (Lecture 5)",
CSE347_L6: "Analysis of Algorithms (Lecture 6)",
CSE347_L7: "Analysis of Algorithms (Lecture 7)",
CSE347_L8: "Analysis of Algorithms (Lecture 8)",
CSE347_L9: "Analysis of Algorithms (Lecture 9)",
CSE347_L10: "Analysis of Algorithms (Lecture 10)",
CSE347_L11: "Analysis of Algorithms (Lecture 11)"
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math429'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4111'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4121'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4201'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math416'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math401'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE332S'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE347'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE442T'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5313'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE510'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE559A'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5519'CSE347_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -1,31 +1,61 @@
export default {
index: "Course Description",
"---":{
type: 'separator'
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
Exam_reviews: "Exam reviews",
CSE442T_L1: "Introduction to Cryptography (Lecture 1)",
CSE442T_L2: "Introduction to Cryptography (Lecture 2)",
CSE442T_L3: "Introduction to Cryptography (Lecture 3)",
CSE442T_L4: "Introduction to Cryptography (Lecture 4)",
CSE442T_L5: "Introduction to Cryptography (Lecture 5)",
CSE442T_L6: "Introduction to Cryptography (Lecture 6)",
CSE442T_L7: "Introduction to Cryptography (Lecture 7)",
CSE442T_L8: "Introduction to Cryptography (Lecture 8)",
CSE442T_L9: "Introduction to Cryptography (Lecture 9)",
CSE442T_L10: "Introduction to Cryptography (Lecture 10)",
CSE442T_L11: "Introduction to Cryptography (Lecture 11)",
CSE442T_L12: "Introduction to Cryptography (Lecture 12)",
CSE442T_L13: "Introduction to Cryptography (Lecture 13)",
CSE442T_L14: "Introduction to Cryptography (Lecture 14)",
CSE442T_L15: "Introduction to Cryptography (Lecture 15)",
CSE442T_L16: "Introduction to Cryptography (Lecture 16)",
CSE442T_L17: "Introduction to Cryptography (Lecture 17)",
CSE442T_L18: "Introduction to Cryptography (Lecture 18)",
CSE442T_L19: "Introduction to Cryptography (Lecture 19)",
CSE442T_L20: "Introduction to Cryptography (Lecture 20)",
CSE442T_L21: "Introduction to Cryptography (Lecture 21)",
CSE442T_L22: "Introduction to Cryptography (Lecture 22)",
CSE442T_L23: "Introduction to Cryptography (Lecture 23)",
CSE442T_L24: "Introduction to Cryptography (Lecture 24)"
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math429'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4111'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4121'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4201'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math416'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math401'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE332S'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE347'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE442T'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5313'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE510'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE559A'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5519'CSE442T_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -1,30 +1,61 @@
export default {
index: "Course Description",
"---":{
type: 'separator'
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
CSE510_L1: "CSE510 Deep Reinforcement Learning (Lecture 1)",
CSE510_L2: "CSE510 Deep Reinforcement Learning (Lecture 2)",
CSE510_L3: "CSE510 Deep Reinforcement Learning (Lecture 3)",
CSE510_L4: "CSE510 Deep Reinforcement Learning (Lecture 4)",
CSE510_L5: "CSE510 Deep Reinforcement Learning (Lecture 5)",
CSE510_L6: "CSE510 Deep Reinforcement Learning (Lecture 6)",
CSE510_L7: "CSE510 Deep Reinforcement Learning (Lecture 7)",
CSE510_L8: "CSE510 Deep Reinforcement Learning (Lecture 8)",
CSE510_L9: "CSE510 Deep Reinforcement Learning (Lecture 9)",
CSE510_L10: "CSE510 Deep Reinforcement Learning (Lecture 10)",
CSE510_L11: "CSE510 Deep Reinforcement Learning (Lecture 11)",
CSE510_L12: "CSE510 Deep Reinforcement Learning (Lecture 12)",
CSE510_L13: "CSE510 Deep Reinforcement Learning (Lecture 13)",
CSE510_L14: "CSE510 Deep Reinforcement Learning (Lecture 14)",
CSE510_L15: "CSE510 Deep Reinforcement Learning (Lecture 15)",
CSE510_L16: "CSE510 Deep Reinforcement Learning (Lecture 16)",
CSE510_L17: "CSE510 Deep Reinforcement Learning (Lecture 17)",
CSE510_L18: "CSE510 Deep Reinforcement Learning (Lecture 18)",
CSE510_L19: "CSE510 Deep Reinforcement Learning (Lecture 19)",
CSE510_L20: "CSE510 Deep Reinforcement Learning (Lecture 20)",
CSE510_L21: "CSE510 Deep Reinforcement Learning (Lecture 21)",
CSE510_L22: "CSE510 Deep Reinforcement Learning (Lecture 22)",
CSE510_L23: "CSE510 Deep Reinforcement Learning (Lecture 23)",
CSE510_L24: "CSE510 Deep Reinforcement Learning (Lecture 24)",
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math429'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4111'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4121'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4201'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math416'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math401'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE332S'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE347'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE442T'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5313'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE510'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE559A'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5519'CSE510_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -1,30 +1,61 @@
export default {
index: "Course Description",
"---":{
type: 'separator'
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
Exam_reviews: "Exam reviews",
CSE5313_L1: "CSE5313 Coding and information theory for data science (Lecture 1)",
CSE5313_L2: "CSE5313 Coding and information theory for data science (Lecture 2)",
CSE5313_L3: "CSE5313 Coding and information theory for data science (Lecture 3)",
CSE5313_L4: "CSE5313 Coding and information theory for data science (Lecture 4)",
CSE5313_L5: "CSE5313 Coding and information theory for data science (Lecture 5)",
CSE5313_L6: "CSE5313 Coding and information theory for data science (Lecture 6)",
CSE5313_L7: "CSE5313 Coding and information theory for data science (Lecture 7)",
CSE5313_L8: "CSE5313 Coding and information theory for data science (Lecture 8)",
CSE5313_L9: "CSE5313 Coding and information theory for data science (Lecture 9)",
CSE5313_L10: "CSE5313 Coding and information theory for data science (Recitation 10)",
CSE5313_L11: "CSE5313 Coding and information theory for data science (Recitation 11)",
CSE5313_L12: "CSE5313 Coding and information theory for data science (Lecture 12)",
CSE5313_L13: "CSE5313 Coding and information theory for data science (Lecture 13)",
CSE5313_L14: "CSE5313 Coding and information theory for data science (Lecture 14)",
CSE5313_L15: "CSE5313 Coding and information theory for data science (Lecture 15)",
CSE5313_L16: "CSE5313 Coding and information theory for data science (Exam Review)",
CSE5313_L17: "CSE5313 Coding and information theory for data science (Lecture 17)",
CSE5313_L18: "CSE5313 Coding and information theory for data science (Lecture 18)",
CSE5313_L19: "CSE5313 Coding and information theory for data science (Lecture 19)",
CSE5313_L20: "CSE5313 Coding and information theory for data science (Lecture 20)",
CSE5313_L21: "CSE5313 Coding and information theory for data science (Lecture 21)",
CSE5313_L22: "CSE5313 Coding and information theory for data science (Lecture 22)",
CSE5313_L23: "CSE5313 Coding and information theory for data science (Lecture 23)",
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math429'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4111'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4121'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4201'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math416'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math401'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE332S'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE347'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE442T'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5313'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE510'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE559A'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5519'CSE5313_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -1,68 +1,61 @@
export default {
index: "Course Description",
"---":{
type: 'separator'
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
CSE5519_L1: "CSE5519 Advances in Computer Vision (Lecture 1)",
CSE5519_L2: "CSE5519 Advances in Computer Vision (Lecture 2)",
CSE5519_L3: "CSE5519 Advances in Computer Vision (Lecture 3)",
"---":{
type: 'separator'
about: {
title: 'About',
href: '/about'
},
CSE5519_C1: "CSE5519 Advances in Computer Vision (Topic C: 2021 and before: Neural Rendering)",
CSE5519_F1: "CSE5519 Advances in Computer Vision (Topic F: 2021 and before: Representation Learning)",
CSE5519_B1: "CSE5519 Advances in Computer Vision (Topic B: 2021 and before: Vision-Language Models)",
CSE5519_D1: "CSE5519 Advances in Computer Vision (Topic D: 2021 and before: Image and Video Generation)",
CSE5519_A1: "CSE5519 Advances in Computer Vision (Topic A: 2021 and before: Semantic Segmentation)",
CSE5519_E1: "CSE5519 Advances in Computer Vision (Topic E: 2021 and before: Deep Learning for Geometric Computer Vision)",
CSE5519_I1: "CSE5519 Advances in Computer Vision (Topic I: 2021 and before: Embodied Computer Vision and Robotics)",
CSE5519_J1: "CSE5519 Advances in Computer Vision (Topic J: 2021 and before: Open-Vocabulary Object Detection)",
"---":{
type: 'separator'
},
CSE5519_H2: "CSE5519 Advances in Computer Vision (Topic H: 2022 and before: Safety, Robustness, and Evaluation of CV Models)",
CSE5519_G2: "CSE5519 Advances in Computer Vision (Topic G: 2022 and before: Correspondence Estimation and Structure from Motion)",
CSE5519_A2: "CSE5519 Advances in Computer Vision (Topic A: 2022: Semantic Segmentation)",
CSE5519_E2: "CSE5519 Advances in Computer Vision (Topic E: 2022: Deep Learning for Geometric Computer Vision)",
CSE5519_C2: "CSE5519 Advances in Computer Vision (Topic C: 2022: Neural Rendering)",
CSE5519_F2: "CSE5519 Advances in Computer Vision (Topic F: 2022: Representation Learning)",
CSE5519_B2: "CSE5519 Advances in Computer Vision (Topic B: 2022: Vision-Language Models)",
CSE5519_D2: "CSE5519 Advances in Computer Vision (Topic D: 2022: Image and Video Generation)",
CSE5519_I2: "CSE5519 Advances in Computer Vision (Topic I: 2022: Embodied Computer Vision and Robotics)",
CSE5519_J2: "CSE5519 Advances in Computer Vision (Topic J: 2022: Open-Vocabulary Object Detection)",
"---":{
type: 'separator'
},
CSE5519_H3: "CSE5519 Advances in Computer Vision (Topic H: 2023: Safety, Robustness, and Evaluation of CV Models)",
CSE5519_B3: "CSE5519 Advances in Computer Vision (Topic B: 2023: Vision-Language Models)",
CSE5519_G3: "CSE5519 Advances in Computer Vision (Topic G: 2023: Correspondence Estimation and Structure from Motion)",
CSE5519_C3: "CSE5519 Advances in Computer Vision (Topic C: 2023: Neural Rendering)",
CSE5519_D3: "CSE5519 Advances in Computer Vision (Topic D: 2023: Image and Video Generation)",
CSE5519_E3: "CSE5519 Advances in Computer Vision (Topic E: 2023: Deep Learning for Geometric Computer Vision)",
CSE5519_F3: "CSE5519 Advances in Computer Vision (Topic F: 2023: Representation Learning)",
CSE5519_I3: "CSE5519 Advances in Computer Vision (Topic I: 2023 - 2024: Embodied Computer Vision and Robotics)",
CSE5519_J3: "CSE5519 Advances in Computer Vision (Topic J: 2023 - 2024: Open-Vocabulary Object Detection)",
CSE5519_A3: "CSE5519 Advances in Computer Vision (Topic A: 2023 - 2024: Semantic Segmentation)",
"---":{
type: 'separator'
},
CSE5519_G4: "CSE5519 Advances in Computer Vision (Topic G: 2024: Correspondence Estimation and Structure from Motion)",
CSE5519_F4: "CSE5519 Advances in Computer Vision (Topic F: 2024: Representation Learning)",
CSE5519_D4: "CSE5519 Advances in Computer Vision (Topic D: 2024: Image and Video Generation)",
CSE5519_E4: "CSE5519 Advances in Computer Vision (Topic E: 2024: Deep Learning for Geometric Computer Vision)",
CSE5519_B4: "CSE5519 Advances in Computer Vision (Topic B: 2024: Vision-Language Models)",
CSE5519_H4: "CSE5519 Advances in Computer Vision (Topic H: 2024: Safety, Robustness, and Evaluation of CV Models)",
CSE5519_C4: "CSE5519 Advances in Computer Vision (Topic C: 2024 - 2025: Neural Rendering)",
"---":{
type: 'separator'
},
CSE5519_F5: "CSE5519 Advances in Computer Vision (Topic F: 2025: Representation Learning)",
CSE5519_B5: "CSE5519 Advances in Computer Vision (Topic B: 2025: Vision-Language Models)",
CSE5519_D5: "CSE5519 Advances in Computer Vision (Topic D: 2025: Image and Video Generation)",
CSE5519_E5: "CSE5519 Advances in Computer Vision (Topic E: 2025: Deep Learning for Geometric Computer Vision)",
CSE5519_A4: "CSE5519 Advances in Computer Vision (Topic A: 2025: Semantic Segmentation)",
CSE5519_G5: "CSE5519 Advances in Computer Vision (Topic G: 2025: Correspondence Estimation and Structure from Motion)",
CSE5519_I4: "CSE5519 Advances in Computer Vision (Topic I: 2025: Embodied Computer Vision and Robotics)",
CSE5519_H5: "CSE5519 Advances in Computer Vision (Topic H: 2025: Safety, Robustness, and Evaluation of CV Models)",
CSE5519_J5: "CSE5519 Advances in Computer Vision (Topic J: 2025: Open-Vocabulary Object Detection)",
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math429'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4111'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4121'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4201'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math416'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math401'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE332S'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE347'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE442T'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5313'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE510'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE559A'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5519'CSE5519_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -1,32 +1,61 @@
export default {
index: "Course Description",
"---":{
type: 'separator'
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
CSE559A_L1: "Computer Vision (Lecture 1)",
CSE559A_L2: "Computer Vision (Lecture 2)",
CSE559A_L3: "Computer Vision (Lecture 3)",
CSE559A_L4: "Computer Vision (Lecture 4)",
CSE559A_L5: "Computer Vision (Lecture 5)",
CSE559A_L6: "Computer Vision (Lecture 6)",
CSE559A_L7: "Computer Vision (Lecture 7)",
CSE559A_L8: "Computer Vision (Lecture 8)",
CSE559A_L9: "Computer Vision (Lecture 9)",
CSE559A_L10: "Computer Vision (Lecture 10)",
CSE559A_L11: "Computer Vision (Lecture 11)",
CSE559A_L12: "Computer Vision (Lecture 12)",
CSE559A_L13: "Computer Vision (Lecture 13)",
CSE559A_L14: "Computer Vision (Lecture 14)",
CSE559A_L15: "Computer Vision (Lecture 15)",
CSE559A_L16: "Computer Vision (Lecture 16)",
CSE559A_L17: "Computer Vision (Lecture 17)",
CSE559A_L18: "Computer Vision (Lecture 18)",
CSE559A_L19: "Computer Vision (Lecture 19)",
CSE559A_L20: "Computer Vision (Lecture 20)",
CSE559A_L21: "Computer Vision (Lecture 21)",
CSE559A_L22: "Computer Vision (Lecture 22)",
CSE559A_L23: "Computer Vision (Lecture 23)",
CSE559A_L24: "Computer Vision (Lecture 24)",
CSE559A_L25: "Computer Vision (Lecture 25)",
CSE559A_L26: "Computer Vision (Lecture 26)",
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math429'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4111'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4121'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math4201'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math416'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Math401'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE332S'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE347'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE442T'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5313'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE510'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE559A'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
CSE5519'CSE559A_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)'
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -1,11 +1,4 @@
export default {
/**
* Do not remove the labels "Math Courses Start"
* and "Math Courses End" and "CSE Courses Start" and "CSE Courses End"
* or the separated builds will not work.
*
* WE USE THESE LABELS TO BUILD THE SEPARATED WEBSITES FOR MATH AND CSE COURSES.
*/
menu: {
title: 'Home',
type: 'menu',
@@ -24,43 +17,6 @@ export default {
}
},
},
/* Load link with relative path */
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
/* Math Courses Start */
Math3200: {
title: 'Math3200',
type: 'page',
@@ -110,43 +66,6 @@ export default {
timestamp: true,
}
},
/* Math Courses End */
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
/* CSE Courses Start */
CSE332S: {
title: 'CSE332S',
type: 'page',
@@ -196,7 +115,6 @@ export default {
timestamp: true,
}
},
/* CSE Courses End */
Swap: {
display: 'hidden',
theme:{

119
distribute/CSE332S/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S:{
title: 'CSE332S',
type: 'page',
theme:{
timestamp: true,
}
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

119
distribute/CSE347/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347:{
title: 'CSE347',
type: 'page',
theme:{
timestamp: true,
}
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

119
distribute/CSE442T/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T:{
title: 'CSE442T',
type: 'page',
theme:{
timestamp: true,
}
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

119
distribute/CSE510/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510:{
title: 'CSE510',
type: 'page',
theme:{
timestamp: true,
}
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

119
distribute/CSE5313/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313:{
title: 'CSE5313',
type: 'page',
theme:{
timestamp: true,
}
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

119
distribute/CSE5519/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519:{
title: 'CSE5519',
type: 'page',
theme:{
timestamp: true,
}
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

119
distribute/CSE559A/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A:{
title: 'CSE559A',
type: 'page',
theme:{
timestamp: true,
}
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200:{
title: 'Math3200',
type: 'page',
theme:{
timestamp: true,
}
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

119
distribute/Math401/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401:{
title: 'Math401',
type: 'page',
theme:{
timestamp: true,
}
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111:{
title: 'Math4111',
type: 'page',
theme:{
timestamp: true,
}
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121:{
title: 'Math4121',
type: 'page',
theme:{
timestamp: true,
}
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

119
distribute/Math416/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416:{
title: 'Math416',
type: 'page',
theme:{
timestamp: true,
}
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201:{
title: 'Math4201',
type: 'page',
theme:{
timestamp: true,
}
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

119
distribute/Math429/_meta.js Normal file
View File

@@ -0,0 +1,119 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429:{
title: 'Math429',
type: 'page',
theme:{
timestamp: true,
}
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

117
distribute/Swap/_meta.js Normal file
View File

@@ -0,0 +1,117 @@
export default {
menu: {
title: 'Home',
type: 'menu',
items: {
index: {
title: 'Home',
href: '/'
},
about: {
title: 'About',
href: '/about'
},
contact: {
title: 'Contact Me',
href: '/contact'
}
},
},
Math3200_link: {
title: 'Math3200',
type: 'page',
href: '/Math3200'
},
Math429_link: {
title: 'Math429',
type: 'page',
href: '/Math429'
},
Math4111_link: {
title: 'Math4111',
type: 'page',
href: '/Math4111'
},
Math4121_link: {
title: 'Math4121',
type: 'page',
href: '/Math4121'
},
Math4201_link: {
title: 'Math4201',
type: 'page',
href: '/Math4201'
},
Math416_link: {
title: 'Math416',
type: 'page',
href: '/Math416'
},
Math401_link: {
title: 'Math401',
type: 'page',
href: '/Math401'
},
CSE332S_link: {
title: 'CSE332S',
type: 'page',
href: '/CSE332S'
},
CSE347_link: {
title: 'CSE347',
type: 'page',
href: '/CSE347'
},
CSE442T_link: {
title: 'CSE442T',
type: 'page',
href: '/CSE442T'
},
CSE5313_link: {
title: 'CSE5313',
type: 'page',
href: '/CSE5313'
},
CSE510_link: {
title: 'CSE510',
type: 'page',
href: '/CSE510'
},
CSE559A_link: {
title: 'CSE559A',
type: 'page',
href: '/CSE559A'
},
CSE5519_link: {
title: 'CSE5519',
type: 'page',
href: '/CSE5519'
},
Swap: {
display: 'hidden',
theme:{
timestamp: true,
}
},
index: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
about: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
},
contact: {
display: 'hidden',
theme:{
sidebar: false,
timestamp: true,
}
}
}

49
distribute/create_meta.py Normal file
View File

@@ -0,0 +1,49 @@
"""
This script is used to generate _meta.js file for microservice deployment for this project.
We will use nginx to route traffic to different microservices.
Each microservice will have its own _meta.js file, run prebuild.sh to replace _meta.js
before building the microservice.
This script should run when you add a new microservice (add course for your note)
"""
# easy python script to create meta file for each subdirectory to replace
import os
import json
from pathlib import Path
import re
cwd = Path(os.path.dirname(os.path.abspath(__file__)))
root_dir=Path.joinpath(cwd.parent, 'content')
# consider each subdirectory as a course
sub_dirs=os.listdir(root_dir)
# exclude .md and _meta.js
exclude_reg=r'(\.md|_meta.js)'
sub_dirs=[x for x in sub_dirs if not re.search(exclude_reg, x)]
print (sub_dirs)
meta_file = os.path.join(root_dir, '_meta.js')
# auto generate meta files
course_match=r"(\w+\d+.*)\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)"
link_parse=r"\1_link: \2\n href: '/\1'\n \3"
link_match=r"_link\s*:\s*(\{\s+.+\s+.+)\s+.+\s+.+\s+.+\s+(\},)"
course_parse=r":\1\n theme:{\n timestamp: true,\n }\n \2"
# copy new _meta.js
for sub_dir in sub_dirs:
sub_meta_file=os.path.join(cwd, sub_dir, '_meta.js')
full_text=Path(meta_file).read_text()
matches=re.findall(course_match, full_text)
new_text=re.sub(course_match, link_parse, full_text)
print(f'parsed link file: {new_text}')
cur_link_match=r'{}{}'.format(sub_dir,link_match)
cur_course_match=r'{}{}'.format(sub_dir,course_parse)
print(f'new reg: {cur_link_match}, {cur_course_match}')
new_text=re.sub(cur_link_match, cur_course_match, new_text)
print (f'parsed course file: {new_text}')
# create directory if not exist
Path(sub_meta_file).parent.mkdir(parents=True, exist_ok=True)
Path(sub_meta_file).write_text(new_text)

View File

@@ -0,0 +1,43 @@
import nextra from 'nextra'
import withBundleAnalyzer from '@next/bundle-analyzer'
const withNextra = nextra({
latex: {
renderer: 'katex',
options: {
// suppress warnings from katex for `\\`
strict: false,
}
},
mdxOptions: {
format: 'detect'
},
contentDirBasePath: '/'
})
const bundleAnalyzer = withBundleAnalyzer({
enabled: process.env.ANALYZE === 'true'
})
export default bundleAnalyzer(withNextra({
// static export start
output: 'export',
images: {
unoptimized: true // mandatory, otherwise won't export
},
// static export end
// eslint: {
// ignoreDuringBuilds: true,
// },
// compiler: {
// // enable console log in production
// removeConsole: false,
// },
// experimental: {
// webpackMemoryOptimizations: true,
// staticGenerationMaxConcurrency: 2, // try 13, default is 8
// staticGenerationMinPagesPerWorker: 1 // keep small, default is 25
// }
}))

57
distribute/prebuild.sh Normal file
View File

@@ -0,0 +1,57 @@
# This is pre-build script that cleans up resources and compiles for selected pages, then finally you may combine those subdirectories into one via nginx.
# double check you are using LF instead of CRLF
export KEEP_PAGES="Math3200"
# check if environment variable is set
if [ -z "$KEEP_PAGES" ]; then
echo "Please set environment variable KEEP_PAGES to the pages you want to keep for microsite building."
exit 1
fi
echo "Currently compiling pages: ${KEEP_PAGES}"
# Rewrite base _meta.js and next.config.js for export pages
echo "Rewrite base _meta.js and keeping ${KEEP_PAGES}"
cp "./distribute/${KEEP_PAGES}/_meta.js" "./content/_meta.js"
# remove other subdirectories
for dir in ./content/*/; do
# strip the leading path and trailing slash
base_dir="$(basename "${dir%/}")"
# check if base_dir is in KEEP_PAGES (space-separated list)
case " $KEEP_PAGES " in
*" $base_dir "*)
echo "Keeping content dir: $dir"
;;
*)
echo "Removing content dir: $dir"
rm -rf -- "$dir"
;;
esac
done
# remove public directory
for dir in ./public/*/; do
base_dir="$(basename "${dir%/}")"
case " $KEEP_PAGES " in
*" $base_dir "*)
echo "Keeping public dir: $dir"
;;
*)
echo "Removing public dir: $dir"
rm -rf -- "$dir"
;;
esac
done
echo "Done clearing up resources and compiling for ${KEEP_PAGES}"
echo "modify next.config.js"
cp "./distribute/next.config.mjs" "./next.config.mjs"

111
docker/Jenkinsfile vendored
View File

@@ -1,111 +0,0 @@
pipeline {
environment {
registry = "trance0/notenextra"
version = "1.2"
NODE_OPTIONS = "--max-old-space-size=8192"
// NEXT_SEARCH_ALGOLIA_APP_ID = "${NEXT_SEARCH_ALGOLIA_APP_ID}"
// NEXT_SEARCH_ALGOLIA_API_KEY = "${NEXT_SEARCH_ALGOLIA_API_KEY}"
// NEXT_SEARCH_ALGOLIA_INDEX_NAME = "${NEXT_SEARCH_ALGOLIA_INDEX_NAME}"
}
agent any
stages {
stage("Cleanup Workspace") {
steps {
// Using Workspace Cleanup Plugin (if installed and configured)
cleanWs()
}
}
stage("Checkout") {
steps {
checkout([
$class: "GitSCM",
branches: [[ name: "*/main" ]],
userRemoteConfigs: [[
url: "https://github.com/Trance-0/NoteNextra",
]]
])
}
}
stage("Build and test"){
parallel {
stage("Build Math") {
steps {
script {
echo "Building docker image ${registry}-math:${version}.${env.BUILD_ID}"
def customImage = docker.build("${registry}-math:v${version}.${env.BUILD_ID}","-f ./docker/math/Dockerfile --no-cache --progress=plain .")
echo "Logging in to docker hub"
// docker.withRegistry("https://registry.hub.docker.com", "docker-hub-creds") {
// echo "Pushing docker image ${registry}:v${version}.${env.BUILD_ID}"
// customImage.push()
// }
echo "skipping push due to conflicted servers"
}
}
}
stage("Build CSE") {
steps {
script {
echo "Building docker image ${registry}-cse:${version}.${env.BUILD_ID}"
def customImage = docker.build("${registry}-cse:v${version}.${env.BUILD_ID}","-f ./docker/cse/Dockerfile --no-cache --progress=plain .")
echo "Logging in to docker hub"
// docker.withRegistry("https://registry.hub.docker.com", "docker-hub-creds") {
// echo "Pushing docker image ${registry}:v${version}.${env.BUILD_ID}"
// customImage.push()
// }
echo "skipping push due to conflicted servers"
}
}
}
}
}
stage("Cleanup Docker tags") {
steps {
script {
echo "1. Stopping existing container"
sh "docker compose -f ./docker/docker-compose.yaml down"
// Using Workspace Cleanup Plugin (if installed and configured)
echo "2. Removing existing images"
def imageNameMath = "${registry}-math:latest"
def imageNameCSE = "${registry}-cse:latest"
def oldImageIDMath = sh(
script: "docker images -qf reference=\${imageNameMath}",
returnStdout: true
)
def oldImageIDCSE = sh(
script: "docker images -qf reference=\${imageNameCSE}",
returnStdout: true
)
if ( "${oldImageIDMath}" != "" ) {
echo "Removing old image ${oldImageIDMath}"
echo "Image Name: " + "${imageNameMath}"
echo "Old Image: ${oldImageIDMath}"
sh "docker rmi ${oldImageIDMath}"
}else{
echo "Warning: ${imageNameMath} does not exist"
}
if ( "${oldImageIDCSE}" != "" ) {
echo "Removing old image ${oldImageIDCSE}"
echo "Image Name: " + "${imageNameCSE}"
echo "Old Image: ${oldImageIDCSE}"
sh "docker rmi ${oldImageIDCSE}"
}else{
echo "Warning: ${imageNameCSE} does not exist"
}
echo "3. Assigned new tags to the images"
sh "docker tag ${registry}-math:v${version}.${env.BUILD_ID} ${registry}-math:latest"
sh "docker tag ${registry}-cse:v${version}.${env.BUILD_ID} ${registry}-cse:latest"
}
}
}
stage("Deploy") {
steps {
script {
echo "Deploying docker image ${registry}-math:${version}.${env.BUILD_ID} and ${registry}-cse:${version}.${env.BUILD_ID} with docker compose"
sh "docker compose -f ./docker/docker-compose.yaml up -d"
}
}
}
}
}

View File

@@ -1,73 +0,0 @@
# Dockerfile for Math folders
# Source: https://github.com/vercel/next.js/blob/canary/examples/with-docker-multi-env/docker/production/Dockerfile
# syntax=docker.io/docker/dockerfile:1
FROM node:20-alpine AS base
ENV NODE_OPTIONS="--max-old-space-size=8192"
# 1. Install dependencies only when needed
FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat git
WORKDIR /app
# Install dependencies based on the preferred package manager
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./
RUN \
if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
elif [ -f package-lock.json ]; then npm ci; \
elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i; \
else echo "Lockfile not found, use default npm install" && npm i; \
fi
# 2. Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN ls -la
# 2.1 Remove unnecessary files for build with title starting with CSE
RUN cd ./content && find . -maxdepth 1 -type d -name "Math*" -exec rm -rf {} +
RUN cd ./public && find . -maxdepth 1 -type d -name "Math*" -exec rm -rf {} +
# 2.1.1 Check the updated folders
RUN cd ./content && ls -la
RUN cd ./public && ls -la
# 2.2 Update the _meta.js files in the content folder
RUN sed -i '/\/\* Math Courses Start \*\//,/\/\* Math Courses End \*\//d' ./content/_meta.js
# 2.2.1 Check the updated _meta.js file
RUN cat ./content/_meta.js
# This will do the trick, use the corresponding env file for each environment.
# COPY .env.production.sample .env.production
RUN npm run build
# 3. Production image, copy all the files and run next
FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001
COPY --from=builder /app/public ./public
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
USER nextjs
EXPOSE 4200
ENV PORT=4200
CMD HOSTNAME="0.0.0.0" node server.js

View File

@@ -1 +0,0 @@
sudo docker build -t trance-0/notenextra-cse:v1.2.0 -f ./docker/cse/Dockerfile --no-cache --progress=plain .

View File

@@ -1 +0,0 @@
docker compose -f docker/docker-compose.yaml up -d --build notenextra-math notenextra-cse

View File

@@ -1,33 +0,0 @@
name: notenextra
services:
# you may need to update relative directories if you move this file
# default created directories is /docker/docker-compose.yaml
notenextra-math:
image: trance0/notenextra-math:latest
build:
context: ../
dockerfile: ./docker/math/Dockerfile
tags:
- trance0/notenextra-math:latest
restart: on-failure:5
ports:
- 13001:4200
notenextra-cse:
image: trance0/notenextra-cse:latest
build:
context: ../
dockerfile: ./docker/cse/Dockerfile
tags:
- trance0/notenextra-cse:latest
restart: on-failure:5
ports:
- 13002:4200
nginx:
image: nginx:latest
ports:
- 13000:80
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- notenextra-math
- notenextra-cse

View File

@@ -1,73 +0,0 @@
# Dockerfile for Math folders
# Source: https://github.com/vercel/next.js/blob/canary/examples/with-docker-multi-env/docker/production/Dockerfile
# syntax=docker.io/docker/dockerfile:1
FROM node:20-alpine AS base
ENV NODE_OPTIONS="--max-old-space-size=8192"
# 1. Install dependencies only when needed
FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat git
WORKDIR /app
# Install dependencies based on the preferred package manager
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./
RUN \
if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
elif [ -f package-lock.json ]; then npm ci; \
elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i; \
else echo "Lockfile not found, use default npm install" && npm i; \
fi
# 2. Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN ls -la
# 2.1 Remove unnecessary files for build with title starting with CSE
RUN cd ./content && find . -maxdepth 1 -type d -name "CSE*" -exec rm -rf {} +
RUN cd ./public && find . -maxdepth 1 -type d -name "CSE*" -exec rm -rf {} +
# 2.1.1 Check the updated folders
RUN cd ./content && ls -la
RUN cd ./public && ls -la
# 2.2 Update the _meta.js files in the content folder
RUN sed -i '/\/\* CSE Courses Start \*\//,/\/\* CSE Courses End \*\//d' ./content/_meta.js
# 2.2.1 Check the updated _meta.js file
RUN cat ./content/_meta.js
# This will do the trick, use the corresponding env file for each environment.
# COPY .env.production.sample .env.production
RUN npm run build
# 3. Production image, copy all the files and run next
FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001
COPY --from=builder /app/public ./public
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
USER nextjs
EXPOSE 4200
ENV PORT=4200
CMD HOSTNAME="0.0.0.0" node server.js

View File

@@ -1 +0,0 @@
sudo docker build -t trance-0/notenextra-math:v1.2.0 -f ./docker/math/Dockerfile --no-cache --progress=plain .

View File

@@ -1,102 +0,0 @@
# Example for conf.d/default.conf
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
upstream notenextra-math {
server notenextra-math:4200;
}
upstream notenextra-cse {
server notenextra-cse:4200;
}
# Decide where to send /_pagefind* based on the page that made the request
map $http_referer $load_upstream {
default http://notenextra-cse;
~*://[^/]+/Math(?:/|$) http://notenextra-math;
~*://[^/]+/CSE(?:/|$) http://notenextra-cse;
}
include /etc/nginx/mime.types;
# add extra types
types {
text/javascript mjs;
}
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
server {
listen 80;
server_name localhost;
rewrite ^/.well-known/carddav /remote.php/dav/ permanent;
rewrite ^/.well-known/caldav /remote.php/dav/ permanent;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Send all next or additional assets (/_pagefind.js and /_pagefind/*) to the chosen app
# ^~ /_pagefind matches both "/_pagefind.js" and "/_pagefind/..."
location ^~ /_(.*)$ {
proxy_pass $load_upstream; # leaves URI intact (/_pagefind.js, /_pagefind/manifest.json, etc.)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^/Math(.*)$ {
proxy_pass http://notenextra-math/Math$1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ ^/CSE(.*)$ {
proxy_pass http://notenextra-cse/CSE$1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass http://notenextra-math;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}

View File

@@ -20,13 +20,14 @@ const bundleAnalyzer = withBundleAnalyzer({
})
export default bundleAnalyzer(withNextra({
output: 'standalone',
// output: 'standalone',
// static export start
// output: 'export',
// images: {
// unoptimized: true // mandatory, otherwise won't export
// },
output: 'export',
images: {
unoptimized: true // mandatory, otherwise won't export
},
basePath: '/',
// static export end
// eslint: {

View File

@@ -1,7 +1,7 @@
{
"scripts": {
"dev": "next --turbopack",
"build": "cross-env VERCEL_FORCE_NO_BUILD_CACHE=1 NODE_OPTIONS='--max-old-space-size=16384' next build",
"build": "bash ./distribute/prebuild.sh && cross-env VERCEL_FORCE_NO_BUILD_CACHE=1 NODE_OPTIONS='--max-old-space-size=16384' next build",
"build:test": "cross-env ANALYZE=true NODE_OPTIONS='--inspect --max-old-space-size=4096' next build",
"build:analyze": "cross-env ANALYZE=true NODE_OPTIONS='--max-old-space-size=16384' next build",
"postbuild": "next-sitemap && pagefind --site .next/server/app --output-path out/_pagefind",