diff --git a/.editorconfig b/.editorconfig index 8e4a27a..7b983ad 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,6 +12,9 @@ end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true +[*.{css,scss,ts}] +max_line_length = 120 + # documentation, utils [*.{md,mdx,diff}] trim_trailing_whitespace = false diff --git a/build.js b/build.js new file mode 100644 index 0000000..09e7a42 --- /dev/null +++ b/build.js @@ -0,0 +1,29 @@ +import * as process from "node:process"; +import * as fs from "node:fs"; +import * as sass from "sass"; +import * as yaml from "js-yaml"; + +async function generateTheme(themePath) { + try { + const fileContent = fs.readFileSync(themePath); + const data = yaml.load(fileContent); + console.log(data.gitea.version); + + fs.mkdirSync("dist", { recursive: true }); + for (const theme of data.gitea.themes) { + const inputFile = `src/themes/theme-github-${theme}.scss`; + const outputFile = `dist/theme-github-${theme}.css`; + const result = await sass.compileAsync(inputFile, { sourceMap: false, style: "compressed" }); + fs.writeFileSync(outputFile, result.css); + } + } catch (error) { + let e = error; + if (error instanceof Error) { + e = error.message; + } + console.error("Build failed:", e); + process.exit(1); + } +} + +generateTheme("theme.yml"); diff --git a/build.ts b/build.ts index 6bfd2ac..863142d 100755 --- a/build.ts +++ b/build.ts @@ -5,6 +5,7 @@ import * as yaml from "npm:js-yaml"; interface Gitea { version: string; + themes: [string]; } interface ThemeInfo { @@ -13,16 +14,17 @@ interface ThemeInfo { async function generateTheme(themePath: string) { try { - const inputFile = "src/theme-github.scss"; - const outputFile = "dist/theme-github.css"; - - const result = await sass.compileAsync(inputFile, { sourceMap: false, style: "compressed" }); - await Deno.mkdir("dist", { recursive: true }); - await Deno.writeTextFile(outputFile, result.css); - const fileContent = await Deno.readTextFile(themePath); const data: ThemeInfo = yaml.load(fileContent); console.log(data.gitea.version); + + await Deno.mkdir("dist", { recursive: true }); + for (const theme of data.gitea.themes) { + const inputFile = `src/themes/theme-github-${theme}.scss`; + const outputFile = `dist/theme-github-${theme}.css`; + const result = await sass.compileAsync(inputFile, { sourceMap: false, style: "compressed" }); + await Deno.writeTextFile(outputFile, result.css); + } } catch (error) { let e = error; if (error instanceof Error) { diff --git a/deno.json b/deno.json index 9094e97..c1a4002 100644 --- a/deno.json +++ b/deno.json @@ -6,6 +6,6 @@ } }, "tasks": { - "build": "./build.ts" + "build": "deno -A --allow-scripts build.ts" } } diff --git a/package.json b/package.json index 524afaa..07a10d1 100644 --- a/package.json +++ b/package.json @@ -1,21 +1,10 @@ { - "name": "gitea-github-theme", - "description": "尽量保持与 GitHub Dark 相同样式的 Gitea 主题", + "type": "module", "scripts": { - "export": "sass src/theme-github.scss:dist/theme-github.css --no-source-map", - "build": "npm run export -- --style=compressed", - "watch": "npm run export -- --watch" + "build": "node build.js" }, - "repository": { - "type": "git", - "url": "git+https://github.com/lutinglt/gitea-github-theme.git" - }, - "bugs": { - "url": "https://github.com/lutinglt/gitea-github-theme/issues" - }, - "homepage": "https://github.com/lutinglt/gitea-github-theme#readme", "devDependencies": { "js-yaml": "^4.1.0", "sass": "^1.83.0" } -} \ No newline at end of file +} diff --git a/src/components.scss b/src/sass/components.scss similarity index 100% rename from src/components.scss rename to src/sass/components.scss diff --git a/src/components/actions.scss b/src/sass/components/actions.scss similarity index 100% rename from src/components/actions.scss rename to src/sass/components/actions.scss diff --git a/src/components/dashboard.scss b/src/sass/components/dashboard.scss similarity index 100% rename from src/components/dashboard.scss rename to src/sass/components/dashboard.scss diff --git a/src/components/diff.scss b/src/sass/components/diff.scss similarity index 100% rename from src/components/diff.scss rename to src/sass/components/diff.scss diff --git a/src/components/heatmap.scss b/src/sass/components/heatmap.scss similarity index 100% rename from src/components/heatmap.scss rename to src/sass/components/heatmap.scss diff --git a/src/components/issue.scss b/src/sass/components/issue.scss similarity index 100% rename from src/components/issue.scss rename to src/sass/components/issue.scss diff --git a/src/components/release.scss b/src/sass/components/release.scss similarity index 100% rename from src/components/release.scss rename to src/sass/components/release.scss diff --git a/src/components/repo.scss b/src/sass/components/repo.scss similarity index 100% rename from src/components/repo.scss rename to src/sass/components/repo.scss diff --git a/src/components/setting.scss b/src/sass/components/setting.scss similarity index 100% rename from src/components/setting.scss rename to src/sass/components/setting.scss diff --git a/src/public.scss b/src/sass/public.scss similarity index 100% rename from src/public.scss rename to src/sass/public.scss diff --git a/src/public/button.scss b/src/sass/public/button.scss similarity index 100% rename from src/public/button.scss rename to src/sass/public/button.scss diff --git a/src/public/chroma.scss b/src/sass/public/chroma.scss similarity index 100% rename from src/public/chroma.scss rename to src/sass/public/chroma.scss diff --git a/src/public/codemirror.scss b/src/sass/public/codemirror.scss similarity index 100% rename from src/public/codemirror.scss rename to src/sass/public/codemirror.scss diff --git a/src/public/dropdown.scss b/src/sass/public/dropdown.scss similarity index 100% rename from src/public/dropdown.scss rename to src/sass/public/dropdown.scss diff --git a/src/public/emoji.scss b/src/sass/public/emoji.scss similarity index 100% rename from src/public/emoji.scss rename to src/sass/public/emoji.scss diff --git a/src/public/fontcolor.scss b/src/sass/public/fontcolor.scss similarity index 100% rename from src/public/fontcolor.scss rename to src/sass/public/fontcolor.scss diff --git a/src/public/input.scss b/src/sass/public/input.scss similarity index 100% rename from src/public/input.scss rename to src/sass/public/input.scss diff --git a/src/public/label.scss b/src/sass/public/label.scss similarity index 100% rename from src/public/label.scss rename to src/sass/public/label.scss diff --git a/src/public/modal.scss b/src/sass/public/modal.scss similarity index 100% rename from src/public/modal.scss rename to src/sass/public/modal.scss diff --git a/src/public/radius.scss b/src/sass/public/radius.scss similarity index 100% rename from src/public/radius.scss rename to src/sass/public/radius.scss diff --git a/src/public/svg.scss b/src/sass/public/svg.scss similarity index 100% rename from src/public/svg.scss rename to src/sass/public/svg.scss diff --git a/src/public/transition.scss b/src/sass/public/transition.scss similarity index 100% rename from src/public/transition.scss rename to src/sass/public/transition.scss diff --git a/src/theme-github.scss b/src/sass/theme-github.scss similarity index 79% rename from src/theme-github.scss rename to src/sass/theme-github.scss index 7031c1a..8212603 100644 --- a/src/theme-github.scss +++ b/src/sass/theme-github.scss @@ -1,4 +1,3 @@ /* Made by Luting ^-^ */ -@use "styles"; @use "public"; @use "components"; diff --git a/src/styles.scss b/src/styles.scss deleted file mode 100644 index e1f852d..0000000 --- a/src/styles.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Made by Luting ^-^ -@use "styles/github.css"; // GitHub 变量(仅主题内部使用的变量) -@use "styles/gitea.css"; // Gitea 变量(元素默认使用的变量) diff --git a/src/styles/gitea.css b/src/styles/dark/gitea-dark.css similarity index 100% rename from src/styles/gitea.css rename to src/styles/dark/gitea-dark.css diff --git a/src/styles/github.css b/src/styles/dark/github-dark.css similarity index 100% rename from src/styles/github.css rename to src/styles/dark/github-dark.css diff --git a/src/themes/theme-github-dark.scss b/src/themes/theme-github-dark.scss new file mode 100644 index 0000000..ad0b738 --- /dev/null +++ b/src/themes/theme-github-dark.scss @@ -0,0 +1,4 @@ +// Made by Luting ^-^ +@use "../sass/theme-github"; +@use "../styles/dark/github-dark.css"; // GitHub 变量(仅主题内部使用的变量) +@use "../styles/dark/gitea-dark.css"; // Gitea 变量(元素默认使用的变量) diff --git a/theme.yml b/theme.yml index 68a91df..be5b6f1 100644 --- a/theme.yml +++ b/theme.yml @@ -1,2 +1,3 @@ gitea: version: 1.23.3 + themes: [dark] \ No newline at end of file