diff --git a/.github/workflows/get-github-api-data.yml b/.github/workflows/get-github-api-data.yml index 4948665..c3e98e8 100644 --- a/.github/workflows/get-github-api-data.yml +++ b/.github/workflows/get-github-api-data.yml @@ -1,5 +1,10 @@ on: workflow_dispatch: + inputs: + trigger: + description: 'Manual trigger for GitHub API data fetch' + required: true + default: 'true' jobs: my-job: runs-on: ubuntu-latest @@ -11,14 +16,7 @@ jobs: GH_API_KEY: ${{ secrets.GH_API_KEY }} run: | cd website - node -e " - const { useGetRepos, useGetMembers, useGetCommits } = require('./src/routes/gh-data.tsx'); - (async () => { - const platform = { env: { GH_API_KEY: process.env.GH_API_KEY } }; - await useGetRepos({ platform }); - await useGetMembers({ platform }); - await useGetCommits({ platform }); - })(); + node -e 'import("./src/routes/gh-data").then(module => module.fetchAllData())' " - name: Deploy run: npm run deploy diff --git a/website/.github/workflows/get-github-data.yml b/website/.github/workflows/get-github-data.yml deleted file mode 100644 index 8f8afca..0000000 --- a/website/.github/workflows/get-github-data.yml +++ /dev/null @@ -1,23 +0,0 @@ -on: - schedule: - - cron: "30 * * * *" -jobs: - my-job: - runs-on: ubuntu-latest - steps: - - name: Get github data - uses: actions/checkout@v4 - - name: Run script with secret - env: - GH_API_KEY: ${{ secrets.GH_API_KEY }} - run: | - node -e " - import { useGetRepos, useGetMembers, useGetCommits } from './src/routes/gh-data.tsx'; - (async () => { - const platform = { env: { GH_API_KEY: process.env.GH_API_KEY } }; - await useGetRepos({ platform }); - await useGetMembers({ platform }); - await useGetCommits({ platform }); - })(); - " - npm run deploy \ No newline at end of file diff --git a/website/src/routes/gh-data.tsx b/website/src/routes/gh-data.tsx index 6ea8db2..b2a4d8c 100644 --- a/website/src/routes/gh-data.tsx +++ b/website/src/routes/gh-data.tsx @@ -1,10 +1,10 @@ import { routeLoader$ } from "@builder.io/qwik-city"; -import { Repo, Member, Commit } from "~/types"; +import type { Repo, Member, Commit } from "~/types"; import { repos, contributors, kunaicoMembers } from "~/types/consts"; import { writeFile } from 'fs/promises'; -export const useGetRepos = routeLoader$(async ({platform}) => { +export const getRepos = routeLoader$(async ({platform}) => { try { const responses = await Promise.all( repos.map((repo) => @@ -32,36 +32,35 @@ export const useGetRepos = routeLoader$(async ({platform}) => { } }); - export const useGetMembers = routeLoader$(async ({platform}) => { - try { - const responses = await Promise.all( - contributors.map((user) => - fetch(`https://api.github.com/users/${user}`, { - headers: { - Accept: "application/json", - "User-Agent": "Cloudflare Worker", - Authorization: `Bearer ${platform.env?.GH_API_KEY}`, - }, - }).then((res) => { - if (!res.ok) throw new Error(`HTTP error! status: ${res.status}`); - return res; - }), - ), - ); - const members = await Promise.all(responses.map((res) => res.json())); - - // Write the members data to a JSON file - await writeFile('members.json', JSON.stringify(members, null, 2)); - - return members as Member[]; - } catch (error) { - console.error("Error fetching members:", error); - return [] as Member[]; - } - }); +export const getMembers = routeLoader$(async ({platform}) => { + try { + const responses = await Promise.all( + contributors.map((user) => + fetch(`https://api.github.com/users/${user}`, { + headers: { + Accept: "application/json", + "User-Agent": "Cloudflare Worker", + Authorization: `Bearer ${platform.env?.GH_API_KEY}`, + }, + }).then((res) => { + if (!res.ok) throw new Error(`HTTP error! status: ${res.status}`); + return res; + }), + ), + ); + const members = await Promise.all(responses.map((res) => res.json())); + + // Write the members data to a JSON file + await writeFile('members.json', JSON.stringify(members, null, 2)); + + return members as Member[]; + } catch (error) { + console.error("Error fetching members:", error); + return [] as Member[]; + } +}); - -export const useGetCommits = routeLoader$(async ({platform}) => { +export const getCommits = routeLoader$(async ({platform}) => { try { const responses = await Promise.all( repos.flatMap((repo) => @@ -89,4 +88,13 @@ export const useGetCommits = routeLoader$(async ({platform}) => { console.error("Error fetching commits:", error); return [] as Commit[]; } -}); \ No newline at end of file +}); + +export const fetchAllData = async () => { + await Promise.all([ + getRepos(), + getMembers(), + getCommits() + ]); + +};