Last active
August 10, 2017 10:55
-
-
Save cblgh/966174ad70f0539921341085d016a65a to your computer and use it in GitHub Desktop.
tiny alarm for when you're cooking on your comp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if (process.argv.length < 3) { | |
console.error("usage: alarm.js <time (defaults to seconds)> [optionally: minutes|hours|days|years]") | |
console.error("example:") | |
console.error("\tnode alarm.js 2 // trigger alarm in 2 seconds") | |
console.error("\tnode alarm.js 2 minutes // trigger alarm in 2 minutes") | |
process.exit() | |
} | |
var time = parseInt(process.argv[2]) | |
var unit = "seconds" | |
var factor = 1000 | |
if (process.argv.length > 3) { | |
unit = process.argv[3].toLowerCase() | |
} | |
switch(unit.charAt(0)) { | |
case "s": | |
break | |
case "m": | |
factor = 1000 * 60 | |
break | |
case "h": | |
factor = 1000 * 60 * 60 | |
break | |
case "d": | |
factor = 1000 * 60 * 60 * 24 | |
break | |
case "y": | |
factor = 1000 * 60 * 60 * 24 * 365 | |
break | |
default: | |
console.log("DIDN'T RECOGNIZE %s, DEFAULTING TO SECONDS", unit) | |
break; | |
} | |
var beepFrequency = .25 * 1000 | |
setTimeout(function() { | |
setInterval(beep, beepFrequency) | |
}, time * factor) | |
console.log("alarm started for %d %s..", time, unit) | |
var alarmTime = new Date(new Date().getTime() + time * factor) | |
console.log("alarm will go off at %s", alarmTime.toString()) | |
var accumulator = 0 | |
function beep() { | |
accumulator += beepFrequency | |
var seconds = accumulator / 1000 | |
var minutes = seconds / 60 | |
if (seconds % 60 === 0) { | |
console.log("%d minutes since alarm", minutes) | |
} | |
console.log("%d %s", time, unit) | |
console.log("\007") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment