Skip to content

Commit

Permalink
Add menu PURGE_LOG_FILES
Browse files Browse the repository at this point in the history
  • Loading branch information
Nerivec committed Oct 29, 2024
1 parent 65979e3 commit 5f94424
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 3 deletions.
43 changes: 41 additions & 2 deletions src/commands/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import { readFileSync } from 'node:fs'
import { readdirSync, readFileSync, rmSync } from 'node:fs'
import { join } from 'node:path'

import { select } from '@inquirer/prompts'
import { Command } from '@oclif/core'

import { DEFAULT_TOKENS_BACKUP_PATH, logger } from '../../index.js'
import { DEFAULT_TOKENS_BACKUP_PATH, logger, LOGS_FOLDER } from '../../index.js'
import { parseTokenData } from '../../utils/ember.js'
import { NVM3ObjectKey } from '../../utils/enums.js'
import { browseToFile } from '../../utils/utils.js'

const enum UtilsMenu {
PARSE_TOKENS_BACKUP_FILE = 10,
PURGE_LOG_FILES = 90,
}

export default class Utils extends Command {
Expand Down Expand Up @@ -60,10 +62,43 @@ export default class Utils extends Command {
return false
}

private async menuPurgeLogFiles(): Promise<boolean> {
const olderThan = await select<number>({
choices: [
{ name: 'Older than 30 days', value: 3600000 * 24 * 30 },
{ name: 'Older than 7 days', value: 3600000 * 24 * 7 },
{ name: 'Older than 1 day', value: 3600000 * 24 },
{ name: 'Older than 1 hour', value: 3600000 },
{ name: 'All', value: -1 },
],
message: 'Timeframe',
})

let count = 0

// -1 == never process last (currently used)
for (const file of readdirSync(LOGS_FOLDER).slice(0, -1)) {
const match = file.match(/^ember-zli-(\d+)\.log$/)

if (match) {
if (olderThan === -1 || parseInt(match[1], 10) < Date.now() - olderThan) {
rmSync(join(LOGS_FOLDER, file), { force: true })

count++
}
}
}

logger.info(`Purged ${count} log files.`)

return false
}

private async navigateMenu(): Promise<boolean> {
const answer = await select<-1 | UtilsMenu>({
choices: [
{ name: 'Parse NVM3 tokens backup file', value: UtilsMenu.PARSE_TOKENS_BACKUP_FILE },
{ name: 'Purge log files', value: UtilsMenu.PURGE_LOG_FILES },
{ name: 'Exit', value: -1 },
],
message: 'Menu',
Expand All @@ -73,6 +108,10 @@ export default class Utils extends Command {
case UtilsMenu.PARSE_TOKENS_BACKUP_FILE: {
return this.menuParseTokensBackupFile()
}

case UtilsMenu.PURGE_LOG_FILES: {
return this.menuPurgeLogFiles()
}
}

return true // exit
Expand Down
4 changes: 3 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { config, createLogger, format, transports } from 'winston'
import { setLogger as zhSetLogger } from 'zigbee-herdsman'

export const DATA_FOLDER = join(homedir(), 'ember-zli')
const LOGS_FOLDER = join(DATA_FOLDER, 'logs')
export const LOGS_FOLDER = join(DATA_FOLDER, 'logs')

export const CONF_PORT_PATH = join(DATA_FOLDER, 'conf_port.json')
export const CONF_NETWORK_PATH = join(DATA_FOLDER, 'conf_network.json')
Expand All @@ -18,6 +18,8 @@ export const DEFAULT_NETWORK_BACKUP_PATH = join(DATA_FOLDER, 'coordinator_backup
export const DEFAULT_TOKENS_BACKUP_PATH = join(DATA_FOLDER, 'tokens_backup.nvm3')
export const DEFAULT_ROUTER_TOKENS_BACKUP_PATH = join(DATA_FOLDER, 'router_tokens_backup.nvm3')
export const DEFAULT_CONFIGURATION_YAML_PATH = join(DATA_FOLDER, 'configuration.yaml')
export const DEFAULT_FIRMWARE_GBL_PATH = join(DATA_FOLDER, 'firmware.gbl')
export const DEFAULT_ROUTER_SCRIPT_MJS_PATH = join(DATA_FOLDER, 'router_script.mjs')

export const DEFAULT_PCAP_PATH = join(DATA_FOLDER, 'sniff.pcap')

Expand Down

0 comments on commit 5f94424

Please sign in to comment.