ramm 0.0.53 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ramm.js +51 -7
- package/dist/types/packages.d.ts +12 -1
- package/package.json +1 -1
package/dist/ramm.js
CHANGED
|
@@ -134,17 +134,61 @@ var {$: $2 } = globalThis.Bun;
|
|
|
134
134
|
|
|
135
135
|
// src/packages.ts
|
|
136
136
|
var {$ } = globalThis.Bun;
|
|
137
|
-
var
|
|
138
|
-
var
|
|
139
|
-
|
|
140
|
-
|
|
137
|
+
var dnfOs = ["rocky", "fedora", "alma"];
|
|
138
|
+
var aptOs = ["ubuntu"];
|
|
139
|
+
var getManagerByOs = (osName) => {
|
|
140
|
+
if (aptOs.includes(osName)) {
|
|
141
|
+
return "apt";
|
|
142
|
+
} else if (dnfOs.includes(osName)) {
|
|
143
|
+
return "dnf";
|
|
144
|
+
} else {
|
|
145
|
+
throw new Error(`Unsupported OS: ${osName}`);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
var getManagerConfig = (manager, packageConfig) => {
|
|
149
|
+
if (packageConfig.managers && manager in packageConfig.managers) {
|
|
150
|
+
const managerEnt = packageConfig.managers[manager];
|
|
151
|
+
return managerEnt;
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
name: packageConfig.name,
|
|
155
|
+
command: packageConfig.command
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
var getInstallCommand = (manager, config) => {
|
|
159
|
+
if (manager === "apt") {
|
|
160
|
+
return `apt install -y ${config.name}`;
|
|
161
|
+
} else if (manager === "dnf") {
|
|
162
|
+
return `dnf install -y ${config.name}`;
|
|
163
|
+
} else {
|
|
164
|
+
throw new Error("Unknow manager");
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
var packages = {
|
|
168
|
+
nftables: {
|
|
169
|
+
name: "nftables",
|
|
170
|
+
command: "nft"
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
var installSystemPackage = async (packageEnt, context) => {
|
|
174
|
+
const finalPackageEnt = typeof packageEnt === "string" ? packages[packageEnt] : packageEnt;
|
|
175
|
+
if (!finalPackageEnt) {
|
|
176
|
+
const errorMessage = `No package ent for: ${packageEnt}`;
|
|
177
|
+
throw new Error(errorMessage);
|
|
178
|
+
}
|
|
179
|
+
const osName = (await $`cat /etc/os-release | grep ^ID= | cut -d'=' -f2`.text()).trim().replace(/"/g, "");
|
|
180
|
+
const manager = getManagerByOs(osName);
|
|
181
|
+
const managerConfig = getManagerConfig(manager, finalPackageEnt);
|
|
182
|
+
const checkResult = await execCommandMayError(`command -v ${managerConfig.command}`, {}, context);
|
|
141
183
|
if (checkResult.spawnResult.exitCode === 0) {
|
|
142
184
|
return;
|
|
143
185
|
}
|
|
186
|
+
const installCommand = getInstallCommand(manager, managerConfig);
|
|
187
|
+
await execCommand(installCommand, {}, context);
|
|
144
188
|
if (osName === "ubuntu") {
|
|
145
|
-
await execCommand(`apt-get install -y ${
|
|
146
|
-
} else if (
|
|
147
|
-
await execCommand(`dnf install -y ${
|
|
189
|
+
await execCommand(`apt-get install -y ${managerConfig.name}`, {}, context);
|
|
190
|
+
} else if (dnfOs.includes(osName)) {
|
|
191
|
+
await execCommand(`dnf install -y ${managerConfig.name}`, {}, context);
|
|
148
192
|
} else {
|
|
149
193
|
throw new Error(`Unsupported OS: ${osName}`);
|
|
150
194
|
}
|
package/dist/types/packages.d.ts
CHANGED
|
@@ -1,2 +1,13 @@
|
|
|
1
1
|
import type { Context } from "./context.ts";
|
|
2
|
-
|
|
2
|
+
type Manager = "dnf" | "apt";
|
|
3
|
+
type PackageConfig = {
|
|
4
|
+
name: string;
|
|
5
|
+
command: string;
|
|
6
|
+
managers?: Record<Manager, ManagerConfig>;
|
|
7
|
+
};
|
|
8
|
+
type ManagerConfig = {
|
|
9
|
+
name: string;
|
|
10
|
+
command: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const installSystemPackage: (packageEnt: string | PackageConfig, context?: Context) => Promise<void>;
|
|
13
|
+
export {};
|
package/package.json
CHANGED