diff --git a/docs/recipes.md b/docs/recipes.md index c08c9a2..be7a3e2 100644 --- a/docs/recipes.md +++ b/docs/recipes.md @@ -129,7 +129,7 @@ Note that you can put your configuration files anywhere inside your application **Landofile using custom lamp config** ```yaml -recipe: lamp +recipe: adeliom config: config: database: config/my-custom.cnf diff --git a/package-lock.json b/package-lock.json index f4d4206..bc6c781 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { "name": "@agence-adeliom/lando-adeliom", - "version": "0.0.0", + "version": "0.0.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@agence-adeliom/lando-adeliom", - "version": "0.0.0", + "version": "0.0.2", "license": "MIT", "dependencies": { + "github-version-checker": "^2.3.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21" }, @@ -2077,6 +2078,34 @@ "node": ">=8.0.0" } }, + "node_modules/github-graphql-client": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/github-graphql-client/-/github-graphql-client-1.0.0.tgz", + "integrity": "sha512-/yPfpH1wfhLvvvUvNVbkzAJld2wzF6Uanknkkky1guR249dJTyt5Qjf1iJqU1M8yYlJCATpACaLDhR3tG1EFuA==" + }, + "node_modules/github-version-checker": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/github-version-checker/-/github-version-checker-2.3.0.tgz", + "integrity": "sha512-JAAB8Q/U+HkZHpBail8c28wS6zgWV3k1kK7FiWzMFW5NyVt74K1hZffoJgFHXZpFdZl/VIQm8K2wdl/C1CA/DA==", + "dependencies": { + "github-graphql-client": "^1.0.0", + "semver": "^7.3.5" + } + }, + "node_modules/github-version-checker/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -2768,7 +2797,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4132,8 +4160,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "16.2.0", @@ -5692,6 +5719,30 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, + "github-graphql-client": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/github-graphql-client/-/github-graphql-client-1.0.0.tgz", + "integrity": "sha512-/yPfpH1wfhLvvvUvNVbkzAJld2wzF6Uanknkkky1guR249dJTyt5Qjf1iJqU1M8yYlJCATpACaLDhR3tG1EFuA==" + }, + "github-version-checker": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/github-version-checker/-/github-version-checker-2.3.0.tgz", + "integrity": "sha512-JAAB8Q/U+HkZHpBail8c28wS6zgWV3k1kK7FiWzMFW5NyVt74K1hZffoJgFHXZpFdZl/VIQm8K2wdl/C1CA/DA==", + "requires": { + "github-graphql-client": "^1.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -6191,7 +6242,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -7193,8 +7243,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { "version": "16.2.0", diff --git a/package.json b/package.json index 55d5e71..af200ec 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "author": "Francois van der Ven (francois@vanderven.dev)", "license": "MIT", "dependencies": { + "github-version-checker": "^2.3.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21" }, diff --git a/src/app.ts b/src/app.ts index 00d5dd7..ab3d984 100644 --- a/src/app.ts +++ b/src/app.ts @@ -6,6 +6,7 @@ import { Logger } from "./lib/Logger"; import { Mutagen, MutagenProcessError } from "./lib/Mutagen"; import { MutagenConfigInvalidError, MutagenConfigManipulator, MutagenConfigNotFoundError, MutagenConfigWriteError } from "./lib/Mutagen/ConfigManipulator"; import { platform } from 'process'; +import * as versionCheck from 'github-version-checker'; const handleError = (e: BaseError, logger: Logger) => { if (e instanceof MutagenConfigNotFoundError) { @@ -47,6 +48,28 @@ export = (app: App) => { return true; }; + app.events.on('post-start', () => { + + const options = { + repo: 'lando-adeliom', + owner: 'agence-adeliom', + currentVersion: require('./package.json').version // eslint-disable-line + }; + versionCheck(options, function (error, update) { + if (update) { + // @ts-ingore + app.addWarning({ + title: `A new version of the plugin 'lando-adeliom' is available`, + detail: [ + `You have version v${options.currentVersion} but Lando Adeliom released ${update.name}`, + 'Please proceed to update with the instructions from the README in our repository' + ], + url: 'https://github.com/agence-adeliom/lando-adeliom', + }, error) + } + }); + }); + app.events.on('post-start', () => { if (canStartMutagen() !== true) { return; diff --git a/src/types/lando.d.ts b/src/types/lando.d.ts index 933c546..a019692 100644 --- a/src/types/lando.d.ts +++ b/src/types/lando.d.ts @@ -17,6 +17,7 @@ declare module 'lando' { events: { on: (eventName: string, handler: () => void) => void; }; + addWarning: (message, error) => void root: string; } class Lando { diff --git a/tsconfig.json b/tsconfig.json index bb0688e..6e0d515 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,6 +6,7 @@ "strictFunctionTypes": true, "sourceMap": false, "outDir": "dist", + "resolveJsonModule": true, "typeRoots": [ "src/types", "node_modules/@types"