-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
27 lines (22 loc) · 794 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env node
'use strict'
const spawn = require('child_process').spawn
, acpi = require('acpiclient')
, path = require('path')
const args = process.argv.slice(2)
, limit = parseInt(args[0]) || 15
, cmd = args.slice(1)
if (!cmd.length)
return console.log('Usage: battery-alert [remaining] [command]')
const checkRate = 60 * 1000 // every minute
var intervalId = setInterval(() => {
acpi(function (err, data) {
if (err) throw err
console.info(data.batteries[0])
if (data.batteries[0].status === 'Discharging' && data.batteries[0].charge < limit) {
clearInterval(intervalId)
console.info(`Alert triggered. Executing: ${cmd.join(' ')}`)
spawn(cmd[0], cmd.slice(1), { env: process.env, stdio: 'inherit' })
}
})
}, checkRate)