feat(projects): 메인 언어 Gitea 자동 판별 + 수동 선택 폴백
- src/gitea.js: repo_url 파싱 + 언어 통계 API(fetchMainLang) 신규 - 등록 폼에 '메인 언어' 드롭다운 추가(기본 '자동 감지') - 결정 순서: 드롭다운 → Gitea 자동감지 → 태그 추론 → 미표시 - langFromTags 기본값 TypeScript 제거(안 맞으면 미표시) - GITEA_TOKEN(선택): 비공개 레포 자동감지용 스위치 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,7 @@ import { config } from "./config.js";
|
||||
import { toolsForUser } from "./sites.js";
|
||||
import { initOidc, loginRedirect, handleCallback, requireAuth, oidcReady, logoutUrl } from "./auth.js";
|
||||
import { icon, identicon, langColor, langFromTags } from "./helpers.js";
|
||||
import { fetchMainLang } from "./gitea.js";
|
||||
import * as db from "./db.js";
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
@@ -110,15 +111,18 @@ app.post("/projects", requireAuth, async (req, res) => {
|
||||
.map((t) => t.trim().replace(/^#/, ""))
|
||||
.filter(Boolean)
|
||||
.slice(0, 5);
|
||||
const repoUrl = (repo_url || "").trim();
|
||||
// 메인 언어: 사용자가 직접 고르면 그 값, '자동 감지'면 Gitea 언어 통계 → 태그 추론 순으로 폴백.
|
||||
const lang = (req.body.lang || "").trim() || (await fetchMainLang(repoUrl)) || langFromTags(tagArr);
|
||||
await db.addProject({
|
||||
owner: req.session.user.sabun,
|
||||
title: title.trim(),
|
||||
description: (description || "").trim(),
|
||||
repoUrl: (repo_url || "").trim(),
|
||||
repoUrl,
|
||||
appUrl: (app_url || "").trim(),
|
||||
tags: tagArr.join(", "),
|
||||
isPublic: req.body.is_public !== "0",
|
||||
lang: langFromTags(tagArr),
|
||||
lang,
|
||||
});
|
||||
const msg = req.body.is_public === "0" ? "비공개로 등록됐습니다" : "등록 완료 · 피드에 공유됐습니다";
|
||||
res.redirect("/?toast=" + encodeURIComponent(msg));
|
||||
|
||||
Reference in New Issue
Block a user