|
@ -1,7 +1,7 @@ |
|
|
const log = console.log |
|
|
const log = console.log |
|
|
const fs = require('fs') |
|
|
const fs = require('fs') |
|
|
const {table, getBorderCharacters} = require('table') |
|
|
const {table, getBorderCharacters} = require('table') |
|
|
const argv = require('yargs').argv |
|
|
|
|
|
|
|
|
// const argv = require('yargs').argv
|
|
|
|
|
|
|
|
|
const TABLE_CONFIG = { |
|
|
const TABLE_CONFIG = { |
|
|
// columns: {
|
|
|
// columns: {
|
|
@ -14,7 +14,7 @@ const TABLE_CONFIG = { |
|
|
const HIDE_PRECIP_LESS_THAN = 10 |
|
|
const HIDE_PRECIP_LESS_THAN = 10 |
|
|
// const CREDIT_MSG = "Powered by Dark Sky: https://darksky.net/poweredby/"
|
|
|
// const CREDIT_MSG = "Powered by Dark Sky: https://darksky.net/poweredby/"
|
|
|
// const CREDIT_MSG = "https://darksky.net/poweredby • https://smol.gq/wthr-src\n"
|
|
|
// const CREDIT_MSG = "https://darksky.net/poweredby • https://smol.gq/wthr-src\n"
|
|
|
const CREDIT_MSG = "darksky.net/poweredby • smol.gq/wthr-src\n" |
|
|
|
|
|
|
|
|
const CREDIT_MSG = "darksky.net/poweredby • smol.gq/wthr-src\n\n" |
|
|
|
|
|
|
|
|
// https://medium.com/@osiolabs/read-write-json-files-with-node-js-92d03cc82824
|
|
|
// https://medium.com/@osiolabs/read-write-json-files-with-node-js-92d03cc82824
|
|
|
const jsonReader = (filePath, cb) => { |
|
|
const jsonReader = (filePath, cb) => { |
|
@ -33,17 +33,18 @@ const jsonReader = (filePath, cb) => { |
|
|
|
|
|
|
|
|
const round5 = x => { return Math.ceil(x / 5) * 5 } |
|
|
const round5 = x => { return Math.ceil(x / 5) * 5 } |
|
|
|
|
|
|
|
|
const logWeatherJson = (jsonFile, loc) => { |
|
|
|
|
|
|
|
|
const getWeatherTable = (jsonFile, loc, orientation) => { |
|
|
return new Promise((resolve, reject) => { |
|
|
return new Promise((resolve, reject) => { |
|
|
jsonReader(jsonFile, (err, weatherInfo) => { |
|
|
jsonReader(jsonFile, (err, weatherInfo) => { |
|
|
if (err) { |
|
|
if (err) { |
|
|
reject(err) |
|
|
reject(err) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
log(loc) |
|
|
|
|
|
|
|
|
let output = loc + '\n' |
|
|
|
|
|
// log(loc)
|
|
|
|
|
|
|
|
|
weatherInfo['hourly']['data'][0] = weatherInfo['currently'] |
|
|
weatherInfo['hourly']['data'][0] = weatherInfo['currently'] |
|
|
if (argv.v) { |
|
|
|
|
|
|
|
|
if (orientation == 'v') { |
|
|
const infoList = [['H', '°C', 'R','%P']] |
|
|
const infoList = [['H', '°C', 'R','%P']] |
|
|
for (let i = 0; i < 12; i++) { |
|
|
for (let i = 0; i < 12; i++) { |
|
|
const hourInfo = weatherInfo['hourly']['data'][i] |
|
|
const hourInfo = weatherInfo['hourly']['data'][i] |
|
@ -58,7 +59,8 @@ const logWeatherJson = (jsonFile, loc) => { |
|
|
precipText, |
|
|
precipText, |
|
|
]) |
|
|
]) |
|
|
} |
|
|
} |
|
|
log(table(infoList, TABLE_CONFIG)); |
|
|
|
|
|
|
|
|
output += table(infoList, TABLE_CONFIG) |
|
|
|
|
|
// log(table(infoList, TABLE_CONFIG))
|
|
|
} else { |
|
|
} else { |
|
|
// horizontal
|
|
|
// horizontal
|
|
|
const hoursList = ['H'] |
|
|
const hoursList = ['H'] |
|
@ -79,17 +81,33 @@ const logWeatherJson = (jsonFile, loc) => { |
|
|
const minTempIndex = tempsList.indexOf(Math.min(...tempsList.slice(1))) |
|
|
const minTempIndex = tempsList.indexOf(Math.min(...tempsList.slice(1))) |
|
|
tempsList[maxTempIndex] = `${tempsList[maxTempIndex]}+` |
|
|
tempsList[maxTempIndex] = `${tempsList[maxTempIndex]}+` |
|
|
tempsList[minTempIndex] = `${tempsList[minTempIndex]}-` |
|
|
tempsList[minTempIndex] = `${tempsList[minTempIndex]}-` |
|
|
log(table([hoursList, tempsList, rainList, precipList], TABLE_CONFIG)); |
|
|
|
|
|
|
|
|
output += table([hoursList, tempsList, rainList, precipList], |
|
|
|
|
|
TABLE_CONFIG) |
|
|
|
|
|
// log(table([hoursList, tempsList, rainList, precipList], TABLE_CONFIG))
|
|
|
} |
|
|
} |
|
|
resolve() |
|
|
|
|
|
|
|
|
resolve(output) |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const formatTimeUnit = unit => { return ((unit < 10) ? '0' : '') + unit } |
|
|
const formatTimeUnit = unit => { return ((unit < 10) ? '0' : '') + unit } |
|
|
log(CREDIT_MSG) |
|
|
|
|
|
logTablePromises = [ |
|
|
|
|
|
logWeatherJson('./toronto.json', 'Toronto'), |
|
|
|
|
|
logWeatherJson('./markham.json', 'Markham'), |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const getTablePromises = [ |
|
|
|
|
|
getWeatherTable('./markham.json', 'Markham', 'h'), |
|
|
|
|
|
getWeatherTable('./markham.json', 'Markham', 'v'), |
|
|
|
|
|
getWeatherTable('./toronto.json', 'Toronto', 'h'), |
|
|
|
|
|
getWeatherTable('./toronto.json', 'Toronto', 'v'), |
|
|
] |
|
|
] |
|
|
Promise.all(logTablePromises).then(results => {}) |
|
|
|
|
|
|
|
|
Promise.all(getTablePromises).then(tables => { |
|
|
|
|
|
const mText = tables[0] |
|
|
|
|
|
const mvText = tables[1] |
|
|
|
|
|
const tText = tables[2] |
|
|
|
|
|
const tvText = tables[3] |
|
|
|
|
|
const writeErrorHandler = error => { if (error) { throw error } } |
|
|
|
|
|
fs.writeFile('mt.txt', CREDIT_MSG + mText + '\n' + tText, writeErrorHandler) |
|
|
|
|
|
fs.writeFile('mtv.txt', CREDIT_MSG + mvText + '\n' + tvText, writeErrorHandler) |
|
|
|
|
|
fs.writeFile('m.txt', CREDIT_MSG + mText, writeErrorHandler) |
|
|
|
|
|
fs.writeFile('mv.txt', CREDIT_MSG + mvText, writeErrorHandler) |
|
|
|
|
|
fs.writeFile('t.txt', CREDIT_MSG + tText, writeErrorHandler) |
|
|
|
|
|
fs.writeFile('tv.txt', CREDIT_MSG + tvText, writeErrorHandler) |
|
|
|
|
|
}) |