ramm 0.0.53 → 0.0.55

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,50 @@ 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 packages = {
159
+ nftables: {
160
+ name: "nftables",
161
+ command: "nft"
162
+ }
163
+ };
164
+ var installSystemPackage = async (packageEnt, context) => {
165
+ const finalPackageEnt = typeof packageEnt === "string" ? packages[packageEnt] : packageEnt;
166
+ if (!finalPackageEnt) {
167
+ const errorMessage = `No package ent for: ${packageEnt}`;
168
+ throw new Error(errorMessage);
169
+ }
170
+ const osName = (await $`cat /etc/os-release | grep ^ID= | cut -d'=' -f2`.text()).trim().replace(/'/g, "");
171
+ const manager = getManagerByOs(osName);
172
+ const managerConfig = getManagerConfig(manager, finalPackageEnt);
173
+ const checkResult = await execCommandMayError(`command -v ${managerConfig.command}`, {}, context);
141
174
  if (checkResult.spawnResult.exitCode === 0) {
142
175
  return;
143
176
  }
144
177
  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);
178
+ await execCommand(`apt-get install -y ${managerConfig.name}`, {}, context);
179
+ } else if (dnfOs.includes(osName)) {
180
+ await execCommand(`dnf install -y ${managerConfig.name}`, {}, context);
148
181
  } else {
149
182
  throw new Error(`Unsupported OS: ${osName}`);
150
183
  }
@@ -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.55",
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"