diff --git a/frontend/src/app/scripts/_components/ScriptItem.tsx b/frontend/src/app/scripts/_components/ScriptItem.tsx
index fb9e64e0..973514a0 100644
--- a/frontend/src/app/scripts/_components/ScriptItem.tsx
+++ b/frontend/src/app/scripts/_components/ScriptItem.tsx
@@ -28,6 +28,10 @@ function ScriptItem({
setSelectedScript(null);
};
+ const defaultInstallMethod = item.install_methods?.[0];
+ const os = defaultInstallMethod?.resources?.os || "Proxmox Node";
+ const version = defaultInstallMethod?.resources?.version || "";
+
return (
@@ -60,6 +64,9 @@ function ScriptItem({
Date added: {extractDate(item.date_created)}
+
+ Default OS: {os} {version}
+
diff --git a/frontend/src/app/scripts/_components/ScriptItems/Buttons.tsx b/frontend/src/app/scripts/_components/ScriptItems/Buttons.tsx
index cb46e437..8900a562 100644
--- a/frontend/src/app/scripts/_components/ScriptItems/Buttons.tsx
+++ b/frontend/src/app/scripts/_components/ScriptItems/Buttons.tsx
@@ -1,14 +1,22 @@
import { Button } from "@/components/ui/button";
import { basePath } from "@/config/siteConfig";
import { Script } from "@/lib/types";
-import { BookOpenText, Code, Globe } from "lucide-react";
+import { BookOpenText, Code, Globe, RefreshCcw } from "lucide-react";
import Link from "next/link";
-const generateSourceUrl = (slug: string, type: string) => {
+const generateInstallSourceUrl = (slug: string) => {
const baseUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main`;
- return type === "ct"
- ? `${baseUrl}/install/${slug}-install.sh`
- : `${baseUrl}/${type}/${slug}.sh`;
+ return `${baseUrl}/install/${slug}-install.sh`;
+};
+
+const generateSourceUrl = (slug: string) => {
+ const baseUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main`;
+ return `${baseUrl}/misc/${slug}.sh`;
+};
+
+const generateUpdateUrl = (slug: string) => {
+ const baseUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main`;
+ return `${baseUrl}/update/${slug}-update.sh`;
};
interface ButtonLinkProps {
@@ -29,20 +37,35 @@ const ButtonLink = ({ href, icon, text }: ButtonLinkProps) => (
);
export default function Buttons({ item }: { item: Script }) {
+ const isCtOrDefault = ["ct"].includes(item.type);
+ const installSourceUrl = isCtOrDefault ? generateInstallSourceUrl(item.slug) : null;
+ const updateSourceUrl = isCtOrDefault ? generateUpdateUrl(item.slug) : null;
+ const sourceUrl = !isCtOrDefault ? generateSourceUrl(item.slug) : null;
+
const buttons = [
item.website && {
href: item.website,
- icon: ,
+ icon: ,
text: "Website",
},
item.documentation && {
href: item.documentation,
- icon: ,
+ icon: ,
text: "Documentation",
},
- {
- href: generateSourceUrl(item.slug, item.type),
- icon:
,
+ installSourceUrl && {
+ href: installSourceUrl,
+ icon:
,
+ text: "Install-Source",
+ },
+ updateSourceUrl && {
+ href: updateSourceUrl,
+ icon: ,
+ text: "Update-Source",
+ },
+ sourceUrl && {
+ href: sourceUrl,
+ icon:
,
text: "Source Code",
},
].filter(Boolean) as ButtonLinkProps[];