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 CHANGED
@@ -134,17 +134,61 @@ var {$: $2 } = globalThis.Bun;
134
134
 
135
135
  // src/packages.ts
136
136
  var {$ } = globalThis.Bun;
137
- var dnf_os = ["rocky", "fedora", "alma"];
138
- var installSystemPackage = async (packageName, context) => {
139
- const osName = (await $`cat /etc/os-release | grep ^ID= | cut -d'=' -f2`.text()).trim();
140
- const checkResult = await execCommandMayError(`which ${packageName}`, {}, context);
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 ${packageName}`, {}, context);
146
- } else if (dnf_os.includes(osName)) {
147
- await execCommand(`dnf install -y ${packageName}`, {}, context);
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
  }
@@ -1,2 +1,13 @@
1
1
  import type { Context } from "./context.ts";
2
- export declare const installSystemPackage: (packageName: string, context?: Context) => Promise<void>;
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ramm",
3
3
  "type": "module",
4
- "version": "0.0.53",
4
+ "version": "0.0.56",
5
5
  "scripts": {
6
6
  "build": "bun build ./src/ramm.ts --target bun --outdir ./dist && cp ./src/bun.sh ./dist/bun.sh",
7
7
  "types": "tsc --project tsconfig.types.json"