diff --git a/src-tauri/capabilities/shell.json b/src-tauri/capabilities/shell.json
index 2eafe4d..ef4774d 100644
--- a/src-tauri/capabilities/shell.json
+++ b/src-tauri/capabilities/shell.json
@@ -49,6 +49,13 @@
"--version"
]
},
+ {
+ "name": "is-pacman-installed",
+ "cmd": "pacman",
+ "args": [
+ "--version"
+ ]
+ },
{
"name": "is-python3-installed",
"cmd": "python3",
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
index 87f48f6..5e91a55 100644
--- a/src/lib/utils.ts
+++ b/src/lib/utils.ts
@@ -103,6 +103,7 @@ export function extractVersion(output: string): string | null {
/OS Version:.*Build (\d+)/, // Pattern for Windows build
/apt (\d+\.\d+\.\d+)/, // Pattern for apt
/(\d+\.\d+\.\d+)/, // Pattern for dnf
+ /Pacman v(\d+\.\d+\.\d+)/, // Pattern for pacman
/ProductVersion:\s+(\d+\.\d+(\.\d+)?)/, // Pattern for macOS version
/Homebrew (\d+\.\d+\.\d+)/, // Pattern for Homebrew
];
diff --git a/src/pages/home.tsx b/src/pages/home.tsx
index ab574da..aded403 100644
--- a/src/pages/home.tsx
+++ b/src/pages/home.tsx
@@ -36,6 +36,10 @@ export default function HomePage() {
installed: false,
version: null,
},
+ pacman: {
+ installed: false,
+ version: null,
+ },
brew: {
installed: false,
version: null,
@@ -99,6 +103,15 @@ export default function HomePage() {
}
}));
}),
+ isInstalled('pacman', '--version').then((result) => {
+ setInstalledPrograms((prevState) => ({
+ ...prevState,
+ pacman: {
+ installed: result.installed,
+ version: result.output ? extractVersion(result.output) : null,
+ }
+ }));
+ }),
isInstalled('homebrew', '--version').then((result) => {
setInstalledPrograms((prevState) => ({
...prevState,
@@ -299,7 +312,7 @@ export default function HomePage() {
PytubePP: {installedPrograms.pytubepp.installed ? 'installed' : 'not installed'} {installedPrograms.pytubepp.version ? `(${installedPrograms.pytubepp.version})` : ''}
{installedPrograms.pytubepp.installed ? : installedPrograms.pip3.installed ? : null}
- {(!installedPrograms.apt.installed && (!installedPrograms.python3.installed || !installedPrograms.ffmpeg.installed)) ?
+ {(!installedPrograms.apt.installed && (!installedPrograms.python3.installed || !installedPrograms.ffmpeg.installed || !installedPrograms.nodejs.installed)) ?
APT Not Found
@@ -317,7 +330,7 @@ export default function HomePage() {
: null}
- {(installedPrograms.python3.installed && installedPrograms.ffmpeg.installed && installedPrograms.pytubepp.installed) ?
+ {(installedPrograms.python3.installed && installedPrograms.ffmpeg.installed && installedPrograms.nodejs.installed && installedPrograms.pytubepp.installed) ?
Ready
@@ -345,7 +358,7 @@ export default function HomePage() {
PytubePP: {installedPrograms.pytubepp.installed ? 'installed' : 'not installed'} {installedPrograms.pytubepp.version ? `(${installedPrograms.pytubepp.version})` : ''}
{installedPrograms.pytubepp.installed ? : installedPrograms.pip3.installed ? : null}
- {(!installedPrograms.dnf.installed && (!installedPrograms.python3.installed || !installedPrograms.ffmpeg.installed)) ?
+ {(!installedPrograms.dnf.installed && (!installedPrograms.python3.installed || !installedPrograms.ffmpeg.installed || !installedPrograms.nodejs.installed)) ?
DNF Not Found
@@ -363,7 +376,53 @@ export default function HomePage() {
: null}
- {(installedPrograms.python3.installed && installedPrograms.ffmpeg.installed && installedPrograms.pytubepp.installed) ?
+ {(installedPrograms.python3.installed && installedPrograms.ffmpeg.installed && installedPrograms.nodejs.installed && installedPrograms.pytubepp.installed) ?
+
+
+ Ready
+
+ Everything looks ok! You can close this window now. Make sure it's always running in the background.
+
+
+ : null}
+
+ : distroId && distroPkgMngr && distroPkgMngr === 'pacman' ? /* Section for Arch Linux */
+
+
+
Python: {installedPrograms.python3.installed ? 'installed' : 'not installed'} {installedPrograms.python3.version ? `(${installedPrograms.python3.version})` : ''}
+ {installedPrograms.python3.installed ? installedPrograms.python3.version ? compareVersions(installedPrograms.python3.version, '3.8') < 0 ?
:
: installedPrograms.pacman.installed ?
:
: null}
+
+
+
FFmpeg: {installedPrograms.ffmpeg.installed ? 'installed' : 'not installed'} {installedPrograms.ffmpeg.version ? `(${installedPrograms.ffmpeg.version})` : ''}
+ {installedPrograms.ffmpeg.installed ?
: installedPrograms.pacman.installed ?
: null}
+
+
+
Node.js: {installedPrograms.nodejs.installed ? 'installed' : 'not installed'} {installedPrograms.nodejs.version ? `(${installedPrograms.nodejs.version})` : ''}
+ {installedPrograms.nodejs.installed ?
: installedPrograms.pacman.installed ?
: null}
+
+
+
PytubePP: {installedPrograms.pytubepp.installed ? 'installed' : 'not installed'} {installedPrograms.pytubepp.version ? `(${installedPrograms.pytubepp.version})` : ''}
+ {installedPrograms.pytubepp.installed ?
: installedPrograms.pip3.installed ?
: null}
+
+ {(!installedPrograms.pacman.installed && (!installedPrograms.python3.installed || !installedPrograms.ffmpeg.installed || !installedPrograms.nodejs.installed)) ?
+
+
+ Pacman Not Found
+
+ Pacman is required to install necessary packages. Please install it manually for your distro.
+
+
+ : null}
+ {(!installedPrograms.pip3.installed && !installedPrograms.pytubepp.installed) ?
+
+
+ PIP Not Found
+
+ PIP is required to install necessary python packages. Please install it now to continue:
+
+
+ : null}
+ {(installedPrograms.python3.installed && installedPrograms.ffmpeg.installed && installedPrograms.nodejs.installed && installedPrograms.pytubepp.installed) ?
Ready
@@ -391,7 +450,7 @@ export default function HomePage() {
PytubePP: {installedPrograms.pytubepp.installed ? 'installed' : 'not installed'} {installedPrograms.pytubepp.version ? `(${installedPrograms.pytubepp.version})` : ''}
{installedPrograms.pytubepp.installed ? : installedPrograms.pip.installed ? : null}
- {(!installedPrograms.winget.installed && (!installedPrograms.python.installed || !installedPrograms.ffmpeg.installed)) ?
+ {(!installedPrograms.winget.installed && (!installedPrograms.python.installed || !installedPrograms.ffmpeg.installed || !installedPrograms.nodejs.installed)) ?
WinGet Not Found
@@ -400,7 +459,7 @@ export default function HomePage() {
: null}
- {(installedPrograms.python.installed && installedPrograms.ffmpeg.installed && installedPrograms.pytubepp.installed) ?
+ {(installedPrograms.python.installed && installedPrograms.ffmpeg.installed && installedPrograms.nodejs.installed && installedPrograms.pytubepp.installed) ?
Ready
@@ -428,7 +487,7 @@ export default function HomePage() {
PytubePP: {installedPrograms.pytubepp.installed ? 'installed' : 'not installed'} {installedPrograms.pytubepp.version ? `(${installedPrograms.pytubepp.version})` : ''}
{installedPrograms.pytubepp.installed ? : installedPrograms.pip3.installed ? : null}
- {(!installedPrograms.brew.installed && (!installedPrograms.python3.installed || !installedPrograms.ffmpeg.installed)) ?
+ {(!installedPrograms.brew.installed && (!installedPrograms.python3.installed || !installedPrograms.ffmpeg.installed || !installedPrograms.nodejs.installed)) ?
Homebrew Not Found
diff --git a/src/types.ts b/src/types.ts
index 87b6951..b8932fb 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -24,6 +24,10 @@ export interface InstalledPrograms {
installed: boolean;
version: string | null;
};
+ pacman: {
+ installed: boolean;
+ version: string | null;
+ };
brew: {
installed: boolean;
version: string | null;