Add readme template
This commit is contained in:
24
Readme.tpl.md
Normal file
24
Readme.tpl.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# MQTT-Explorer
|
||||||
|
### Version {{ version }}
|
||||||
|
See the whole picture of your message queue.
|
||||||
|
The perfect tool to integrate new services, IoT devices in your network.
|
||||||
|
This application subscribes to all topics on your MQTT-Server and displays your message queue hierarchy, allowing you to drill-down to the topics that are of interest.
|
||||||
|
|
||||||
|
## Download
|
||||||
|
The app is prebuilt for Windows ({{windowsTargets}}), Linux ({{linuxTargets}}) and Mac ({{macTargets}}).
|
||||||
|
|
||||||
|
More architectures and package types: [Downloads](https://github.com/thomasnordquist/MQTT-Explorer/releases)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Develop
|
||||||
|
PRs and issues are welcome
|
||||||
|
|
||||||
|
Install with `npm run install`, build with `npm run build`
|
||||||
|
|
||||||
|
Start with `npm run start`
|
||||||
|
|
||||||
|
The `app` directory contains all the rendering logic, the `backend` directory currently contains the models, tests, connection management.
|
||||||
|
|
||||||
|
## License
|
||||||
|
Not yet decided which licens exactly, but the basic idea is: "You may do whatever you want with this tool, except sell it."
|
||||||
68
package-lock.json
generated
68
package-lock.json
generated
@@ -196,6 +196,12 @@
|
|||||||
"integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==",
|
"integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@types/mustache": {
|
||||||
|
"version": "0.8.32",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-0.8.32.tgz",
|
||||||
|
"integrity": "sha512-RTVWV485OOf4+nO2+feurk0chzHkSjkjALiejpHltyuMf/13fGymbbNNFrSKdSSUg1TIwzszXdWsVirxgqYiFA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "10.12.18",
|
"version": "10.12.18",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
|
||||||
@@ -414,6 +420,16 @@
|
|||||||
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
|
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"axios": {
|
||||||
|
"version": "0.18.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
|
||||||
|
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"follow-redirects": "^1.3.0",
|
||||||
|
"is-buffer": "^1.1.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
"babel-code-frame": {
|
"babel-code-frame": {
|
||||||
"version": "6.26.0",
|
"version": "6.26.0",
|
||||||
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
|
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
|
||||||
@@ -1467,6 +1483,32 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"follow-redirects": {
|
||||||
|
"version": "1.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz",
|
||||||
|
"integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"debug": "=3.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"debug": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ms": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"forever-agent": {
|
"forever-agent": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||||
@@ -1541,7 +1583,7 @@
|
|||||||
},
|
},
|
||||||
"get-stream": {
|
"get-stream": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
|
"resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
|
||||||
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
|
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
@@ -1639,7 +1681,7 @@
|
|||||||
},
|
},
|
||||||
"got": {
|
"got": {
|
||||||
"version": "6.7.1",
|
"version": "6.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
|
"resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz",
|
||||||
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
|
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@@ -1852,6 +1894,12 @@
|
|||||||
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
|
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"is-buffer": {
|
||||||
|
"version": "1.1.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
|
||||||
|
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-builtin-module": {
|
"is-builtin-module": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
|
"resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
|
||||||
@@ -1924,7 +1972,7 @@
|
|||||||
},
|
},
|
||||||
"is-obj": {
|
"is-obj": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
|
"resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
|
||||||
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
|
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
@@ -2462,6 +2510,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
||||||
},
|
},
|
||||||
|
"mustache": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/mustache/-/mustache-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-jFI/4UVRsRYdUbuDTKT7KzfOp7FiD5WzYmmwNwXyUVypC0xjoTL78Fqc0jHUPIvvGD+6DQSPHIt1NE7D1ArsqA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"next-tick": {
|
"next-tick": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
|
||||||
@@ -3798,7 +3852,7 @@
|
|||||||
},
|
},
|
||||||
"p-is-promise": {
|
"p-is-promise": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
|
"resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
|
||||||
"integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
|
"integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
@@ -4469,7 +4523,7 @@
|
|||||||
},
|
},
|
||||||
"strip-eof": {
|
"strip-eof": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
|
"resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
|
||||||
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
|
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
@@ -5085,7 +5139,7 @@
|
|||||||
},
|
},
|
||||||
"wrap-ansi": {
|
"wrap-ansi": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
|
"resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
|
||||||
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
|
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@@ -5117,7 +5171,7 @@
|
|||||||
},
|
},
|
||||||
"xmlbuilder": {
|
"xmlbuilder": {
|
||||||
"version": "9.0.7",
|
"version": "9.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
|
"resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
|
||||||
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
|
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
|||||||
25
package.json
25
package.json
@@ -41,23 +41,26 @@
|
|||||||
"homepage": "https://github.com",
|
"homepage": "https://github.com",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/chai": "^4.1.7",
|
||||||
|
"@types/mocha": "^5.2.5",
|
||||||
|
"@types/mustache": "^0.8.32",
|
||||||
|
"@types/node": "^10.12.18",
|
||||||
|
"@types/sha1": "^1.1.1",
|
||||||
|
"@types/socket.io": "^2.1.2",
|
||||||
|
"axios": "^0.18.0",
|
||||||
|
"chai": "^4.2.0",
|
||||||
"electron": "^4.0.0",
|
"electron": "^4.0.0",
|
||||||
"electron-builder": "^20.38.4",
|
"electron-builder": "^20.38.4",
|
||||||
|
"mocha": "^5.2.0",
|
||||||
|
"mustache": "^3.0.1",
|
||||||
|
"nyc": "^13.1.0",
|
||||||
|
"source-map-support": "^0.5.9",
|
||||||
"ts-node": "^7.0.1",
|
"ts-node": "^7.0.1",
|
||||||
"tslint": "^5.12.0",
|
"tslint": "^5.12.0",
|
||||||
"tslint-config-airbnb": "^5.11.1",
|
"tslint-config-airbnb": "^5.11.1",
|
||||||
"tslint-react": "^3.6.0",
|
"tslint-react": "^3.6.0",
|
||||||
"typescript": "^3.2.2",
|
"tslint-strict-null-checks": "^1.0.1",
|
||||||
"@types/chai": "^4.1.7",
|
"typescript": "^3.2.2"
|
||||||
"@types/mocha": "^5.2.5",
|
|
||||||
"@types/node": "^10.12.18",
|
|
||||||
"@types/sha1": "^1.1.1",
|
|
||||||
"@types/socket.io": "^2.1.2",
|
|
||||||
"chai": "^4.2.0",
|
|
||||||
"mocha": "^5.2.0",
|
|
||||||
"nyc": "^13.1.0",
|
|
||||||
"source-map-support": "^0.5.9",
|
|
||||||
"tslint-strict-null-checks": "^1.0.1"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"electron-log": "^2.2.17",
|
"electron-log": "^2.2.17",
|
||||||
|
|||||||
64
updateReadme.ts
Normal file
64
updateReadme.ts
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
import * as mustache from 'mustache'
|
||||||
|
|
||||||
|
import { readFileSync, writeFileSync } from 'fs'
|
||||||
|
|
||||||
|
import axios from 'axios'
|
||||||
|
|
||||||
|
interface Release {
|
||||||
|
name: string
|
||||||
|
assets: Asset[]
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Asset {
|
||||||
|
name: string
|
||||||
|
browser_download_url: string
|
||||||
|
}
|
||||||
|
|
||||||
|
function createUrl(title: string, path: string) {
|
||||||
|
return `[${title}](${path})`
|
||||||
|
}
|
||||||
|
|
||||||
|
function fileExtension(file: string): string {
|
||||||
|
const match = file.match(/\.([a-zA-Z]+)$/)
|
||||||
|
|
||||||
|
return (match && match[1]) || ''
|
||||||
|
}
|
||||||
|
|
||||||
|
async function createReadme(): Promise<void> {
|
||||||
|
const release: Release = (await axios.get('https://api.github.com/repos/thomasnordquist/mqtt-explorer/releases/latest')).data
|
||||||
|
|
||||||
|
const linux64 = release.assets.filter(asset => /(x86_64|amd64)\.(AppImage|deb|rpm)$/.test(asset.name))
|
||||||
|
const windowsInstaller = release.assets.find(asset => /Setup-.+\.exe$/.test(asset.name))
|
||||||
|
const windowsPortable = release.assets.find(asset => /-(?!Setup).+\.exe$/.test(asset.name))
|
||||||
|
const macDmg = release.assets.find(asset => /\.dmg$/.test(asset.name))
|
||||||
|
|
||||||
|
if (linux64.length === 0 || !windowsInstaller || !windowsPortable || !macDmg) {
|
||||||
|
console.error('failed retrieving')
|
||||||
|
process.exit(1)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const linuxTargets = linux64
|
||||||
|
.map(item => createUrl(fileExtension(item.browser_download_url), item.browser_download_url))
|
||||||
|
.join(', ')
|
||||||
|
|
||||||
|
const windowsTargets = [
|
||||||
|
createUrl('portable', windowsPortable.browser_download_url),
|
||||||
|
createUrl('installer', windowsInstaller.browser_download_url),
|
||||||
|
].join(', ')
|
||||||
|
|
||||||
|
const macTargets = [
|
||||||
|
createUrl('dmg', macDmg.browser_download_url),
|
||||||
|
].join(', ')
|
||||||
|
|
||||||
|
const template = readFileSync('./Readme.tpl.md').toString()
|
||||||
|
const rendered = mustache.render(template, {
|
||||||
|
linuxTargets,
|
||||||
|
windowsTargets,
|
||||||
|
macTargets,
|
||||||
|
version: release.name,
|
||||||
|
})
|
||||||
|
writeFileSync('./Readme.md', rendered)
|
||||||
|
}
|
||||||
|
|
||||||
|
createReadme()
|
||||||
Reference in New Issue
Block a user