Skip to content

Commit

Permalink
Change: move apm implementations and improve apm msg ignore filters
Browse files Browse the repository at this point in the history
  • Loading branch information
NobleMajo committed May 26, 2024
1 parent 7f12f81 commit 7dbe149
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 56 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hivessh",
"version": "0.3.11",
"version": "0.3.12",
"description": "HiveSsh simplifies SSH2 connections via promise-based task execution on Linux servers with built-in server utilities and powerful command execution functions",
"main": "dist/index.js",
"type": "module",
Expand Down
6 changes: 3 additions & 3 deletions src/apm/checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import { SshHost } from "../SshHost.js"
import { Awaitable } from "../utils/base.js"
import { AbstractPackageManager } from "./ApmInterface.js"
import { AbstractPackageManagerWrapper } from "./apm.js"
import { initAptApm } from "./apt.js"
import { initDnfApm } from "./dnf.js"
import { initYumApm } from "./yum.js"
import { initAptApm } from "./impl/apt.js"
import { initDnfApm } from "./impl/dnf.js"
import { initYumApm } from "./impl/yum.js"

export type ApmInit = (
sshHost: SshHost
Expand Down
15 changes: 7 additions & 8 deletions src/apm/apt.ts → src/apm/impl/apt.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
import { SshChannelExit, StreamDataMapper } from "../SshExec.js"
import { SshHost } from "../SshHost.js"
import { Awaitable, trimAll } from "../utils/base.js"
import { AbstractPackage, AbstractPackageManager, ApmInit } from "./apm.js"
import { SshChannelExit, StreamDataMapper } from "../../SshExec.js"
import { SshHost } from "../../SshHost.js"
import { Awaitable, trimAll } from "../../utils/base.js"
import { AbstractPackage, AbstractPackageManager, ApmInit } from "../apm.js"

export const aptEnv = {
"LANG": "en_US.UTF-8",
"DEBIAN_FRONTEND": "noninteractive",
LANG: "en_US.UTF-8",
DEBIAN_FRONTEND: "noninteractive",
}

export const ignoredErrMsgs: string[] = [
"debconf: unable to initialize frontend",
"warning"
]

export const ignoreMessageFilter: StreamDataMapper = (
data: string
) => {
let data2 = trimAll(data).toLowerCase()
for (const msg of ignoredErrMsgs) {
if (
data2.startsWith(msg) ||
data2.endsWith(msg) ||
data2.includes(msg)
) {
return undefined
Expand Down
50 changes: 28 additions & 22 deletions src/apm/dnf.ts → src/apm/impl/dnf.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,29 @@
import { SshChannelExit, StreamDataMapper } from "../SshExec.js"
import { SshHost } from "../SshHost.js"
import { Awaitable, filterEmpty } from "../utils/base.js"
import { AbstractPackage, AbstractPackageManager, ApmInit } from "./apm.js"
import { SshChannelExit, StreamDataMapper } from "../../SshExec.js"
import { SshHost } from "../../SshHost.js"
import { Awaitable, filterEmpty, trimAll } from "../../utils/base.js"
import { AbstractPackage, AbstractPackageManager, ApmInit } from "../apm.js"

export const dnfEnv = {
LANG: "en_US.UTF-8"
}

export const ignoreDnfMessages: StreamDataMapper = (
export const ignoredErrMsgs: string[] = [
"transaction completed",
"base",
"cleaning up",
"warning",
]

export const ignoreMessageFilter: StreamDataMapper = (
data: string
) => {
const loweredData = data.toLowerCase()
if (
loweredData.includes("transaction completed") ||
loweredData.includes("base") ||
loweredData.includes("cleaning up") ||
loweredData.startsWith("warning:")
) {
return undefined
let data2 = trimAll(data).toLowerCase()
for (const msg of ignoredErrMsgs) {
if (
data2.includes(msg)
) {
return undefined
}
}
return data
}
Expand Down Expand Up @@ -73,7 +79,7 @@ export const initDnfApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreDnfMessages,
mapErrOut: ignoreMessageFilter,
env: dnfEnv,
}
).then()
Expand All @@ -84,7 +90,7 @@ export const initDnfApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreDnfMessages,
mapErrOut: ignoreMessageFilter,
env: dnfEnv,
}
).then()
Expand All @@ -97,7 +103,7 @@ export const initDnfApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreDnfMessages,
mapErrOut: ignoreMessageFilter,
env: dnfEnv,
}
).then(),
Expand All @@ -107,7 +113,7 @@ export const initDnfApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreDnfMessages,
mapErrOut: ignoreMessageFilter,
env: dnfEnv,
}
).then(),
Expand All @@ -119,7 +125,7 @@ export const initDnfApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreDnfMessages,
mapErrOut: ignoreMessageFilter,
env: dnfEnv,
}
).then(),
Expand All @@ -129,7 +135,7 @@ export const initDnfApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreDnfMessages,
mapErrOut: ignoreMessageFilter,
env: dnfEnv,
}
).then(),
Expand All @@ -142,7 +148,7 @@ export const initDnfApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreDnfMessages,
mapErrOut: ignoreMessageFilter,
env: dnfEnv,
}

Expand All @@ -154,7 +160,7 @@ export const initDnfApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreDnfMessages,
mapErrOut: ignoreMessageFilter,
env: dnfEnv,
}

Expand All @@ -166,7 +172,7 @@ export const initDnfApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreDnfMessages,
mapErrOut: ignoreMessageFilter,
env: dnfEnv,
}

Expand Down
52 changes: 30 additions & 22 deletions src/apm/yum.ts → src/apm/impl/yum.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,29 @@
import { SshChannelExit, StreamDataMapper } from "../SshExec.js"
import { SshHost } from "../SshHost.js"
import { Awaitable, filterEmpty } from "../utils/base.js"
import { AbstractPackage, AbstractPackageManager, ApmInit } from "./apm.js"
import { SshChannelExit, StreamDataMapper } from "../../SshExec.js"
import { SshHost } from "../../SshHost.js"
import { Awaitable, filterEmpty, trimAll } from "../../utils/base.js"
import { AbstractPackage, AbstractPackageManager, ApmInit } from "../apm.js"

export const yumEnv = {
LANG: "en_US.UTF-8"
}

export const ignoreYumMessages: StreamDataMapper = (data: string) => {
const loweredData = data.toLowerCase()
if (
loweredData.includes("transaction completed") ||
loweredData.includes("base") ||
loweredData.includes("cleaning up") ||
loweredData.startsWith("warning:")
) {
return undefined
export const ignoredErrMsgs: string[] = [
"transaction completed",
"base",
"cleaning up",
"warning",
]

export const ignoreMessageFilter: StreamDataMapper = (
data: string
) => {
let data2 = trimAll(data).toLowerCase()
for (const msg of ignoredErrMsgs) {
if (
data2.includes(msg)
) {
return undefined
}
}
return data
}
Expand Down Expand Up @@ -66,7 +74,7 @@ export const initYumApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreYumMessages,
mapErrOut: ignoreMessageFilter,
env: yumEnv,
}
).then()
Expand All @@ -77,7 +85,7 @@ export const initYumApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreYumMessages,
mapErrOut: ignoreMessageFilter,
env: yumEnv,
}
).then()
Expand All @@ -90,7 +98,7 @@ export const initYumApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreYumMessages,
mapErrOut: ignoreMessageFilter,
env: yumEnv,
}
).then(),
Expand All @@ -100,7 +108,7 @@ export const initYumApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreYumMessages,
mapErrOut: ignoreMessageFilter,
env: yumEnv,
}
).then(),
Expand All @@ -112,7 +120,7 @@ export const initYumApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreYumMessages,
mapErrOut: ignoreMessageFilter,
env: yumEnv,
}
).then(),
Expand All @@ -122,7 +130,7 @@ export const initYumApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreYumMessages,
mapErrOut: ignoreMessageFilter,
env: yumEnv,
}
).then(),
Expand All @@ -134,7 +142,7 @@ export const initYumApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreYumMessages,
mapErrOut: ignoreMessageFilter,
env: yumEnv,
}
).then(parseYumList),
Expand All @@ -144,7 +152,7 @@ export const initYumApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreYumMessages,
mapErrOut: ignoreMessageFilter,
env: yumEnv,
}
).then(parseYumList),
Expand All @@ -154,7 +162,7 @@ export const initYumApm: ApmInit = (
{
sudo: true,
timeoutMillis: cmdTimeoutMillis,
mapErrOut: ignoreYumMessages,
mapErrOut: ignoreMessageFilter,
env: yumEnv,
}
).then(parseYumDescription),
Expand Down

0 comments on commit 7dbe149

Please sign in to comment.