From 7e174dd08a012e3489b9afbd1fbf9aa09dfd523b Mon Sep 17 00:00:00 2001 From: SychO9 Date: Sun, 3 Oct 2021 10:58:17 +0100 Subject: [PATCH] [untested] Major Update handler (#1) --- extensions/package-manager/js/dist/admin.js | 48 +++++- .../package-manager/js/dist/admin.js.map | 2 +- .../js/src/admin/components/MajorUpdater.tsx | 31 +++- .../js/src/admin/components/Updater.tsx | 2 +- extensions/package-manager/locale/en.yml | 3 +- .../Api/Controller/MajorUpdateController.php | 41 +++++ .../Controller/UpdateExtensionController.php | 3 - .../src/Command/MajorUpdate.php | 24 +++ .../src/Command/MajorUpdateHandler.php | 152 ++++++++++++++++++ .../src/Listener/PostUpdateListener.php | 3 +- 10 files changed, 296 insertions(+), 13 deletions(-) create mode 100755 extensions/package-manager/src/Api/Controller/MajorUpdateController.php create mode 100644 extensions/package-manager/src/Command/MajorUpdate.php create mode 100644 extensions/package-manager/src/Command/MajorUpdateHandler.php diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 111b8d4e9..f17a14182 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -343,6 +343,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); /* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/admin/components/LoadingModal */ "flarum/admin/components/LoadingModal"); +/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _utils_errorHandler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/errorHandler */ "./src/admin/utils/errorHandler.ts"); + + @@ -353,7 +358,15 @@ var MajorUpdater = /*#__PURE__*/function (_Component) { Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(MajorUpdater, _Component); function MajorUpdater() { - return _Component.apply(this, arguments) || this; + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.isLoading = null; + return _this; } var _proto = MajorUpdater.prototype; @@ -374,13 +387,40 @@ var MajorUpdater = /*#__PURE__*/function (_Component) { text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.dry_run_help') }, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { className: "Button", - icon: "fas fa-vial" + icon: "fas fa-vial", + onclick: this.update.bind(this, true) }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.dry_run'))), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, { className: "Button", - icon: "fas fa-play" + icon: "fas fa-play", + onclick: this.update.bind(this, false) }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.major_updater.update')))); }; + _proto.update = function update(dryRun) { + var _this2 = this; + + this.isLoading = "update-" + (dryRun ? 'dry-run' : 'run'); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default.a); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ + method: 'POST', + url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/major-update", + body: { + data: { + dryRun: dryRun + } + }, + errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_6__["default"] + }).then(function () { + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ + type: 'success' + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.update_successful')); + window.location.reload(); + })["finally"](function () { + _this2.isLoading = null; + m.redraw(); + }); + }; + return MajorUpdater; }(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a); @@ -605,7 +645,7 @@ var Updater = /*#__PURE__*/function (_Component) { }).then(function () { flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({ type: 'success' - }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.minor_update_successful')); + }, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.update_successful')); window.location.reload(); })["finally"](function () { _this4.isLoading = null; diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index d16e4909e..e34f60c90 100755 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/MajorUpdater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","coreUpdate","Updater","lastUpdateCheck","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","extra","updateCoreMinor","updateExtension","v","replace","updates","installed","filter","composerPackage","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport ComposerFailureModal from './ComposerFailureModal';\nimport errorHandler from '../utils/errorHandler';\n\nexport default class Installer extends Component {\n packageName!: Stream;\n isLoading: boolean = false;\n\n oninit(vnode: Mithril.Vnode): void {\n super.oninit(vnode);\n\n this.packageName = Stream('');\n }\n\n view(): Mithril.Children {\n return (\n
\n \n

\n {app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com,\n })}\n

\n
\n \n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n this.isLoading = true;\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data(),\n },\n errorHandler,\n })\n .then((response) => {\n const extensionId = response.id;\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId })\n );\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Mithril from 'mithril';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport { UpdatedPackage } from './Updater';\n\ninterface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n}\n\nexport default class MajorUpdater extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n return (\n
\n \"flarum\n \n

{app.translator.trans('sycho-package-manager.admin.major_updater.description')}

\n
\n \n \n \n \n
\n
\n );\n }\n}\n","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\nimport Button from 'flarum/common/components/Button';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport errorHandler from '../utils/errorHandler';\nimport classList from 'flarum/common/utils/classList';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\n\nexport type UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n 'latest-minor': string | null;\n 'latest-major': string | null;\n 'latest-status': string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: string | null = null;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions: any = this.getExtensionUpdates();\n const coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate();\n let core = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return [\n
\n \n

{app.translator.trans('sycho-package-manager.admin.updater.updater_help')}

\n {Object.keys(this.lastUpdateCheck).length ? (\n

\n \n {app.translator.trans('sycho-package-manager.admin.updater.last_update_checked_at')}\n \n {humanTime(this.lastUpdateCheck?.checkedAt)}\n

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-package-manager.admin.updater.run_global_update')}\n \n
\n {this.isLoading !== null ? (\n
\n \n
\n ) : extensions.length || core ? (\n
\n
\n {core ? this.extensionItem(core, true) : null}\n {extensions.map((extension: any) => this.extensionItem(extension))}\n
\n
\n ) : null}\n
,\n coreUpdate && coreUpdate['latest-major'] ? : null,\n ];\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {extension.newPackageUpdate['latest-minor'] ? (\n \n {this.version(extension.newPackageUpdate['latest-minor'])}\n \n ) : null}\n {extension.newPackageUpdate['latest-major'] && !isCore ? (\n \n {this.version(extension.newPackageUpdate['latest-major'])}\n \n ) : null}\n
\n
\n
\n \n \n \n
\n \n );\n }\n\n version(v: string) {\n return 'v' + v.replace('v', '');\n }\n\n getExtensionUpdates() {\n this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n\n if (extension && safeToUpdate) {\n extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage | undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n })\n .then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n this.isLoading = 'minor-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })\n );\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.isLoading = 'global-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport Alert from 'flarum/common/components/Alert';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Installer from './components/Installer';\nimport Updater from './components/Updater';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\nimport MajorUpdater from './components/MajorUpdater';\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n \n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n \n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app\n .request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n })\n .finally(() => {\n app.modal.close();\n });\n }}\n >\n Remove\n \n );\n });\n});\n","import app from 'flarum/admin/app';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n\n switch (error.code) {\n case 'composer_command_failure':\n app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n\n case 'extension_not_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['admin/components/LoadingModal'];","module.exports = flarum.core.compat['admin/utils/isExtensionEnabled'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['common/components/Alert'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Modal'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/helpers/humanTime'];","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/utils/Stream'];","module.exports = flarum.core.compat['common/utils/classList'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@sycho/flarum-package-manager/webpack/bootstrap","webpack://@sycho/flarum-package-manager/./admin.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-package-manager/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-package-manager/./src/admin/components/ComposerFailureModal.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Installer.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/MajorUpdater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/components/Updater.tsx","webpack://@sycho/flarum-package-manager/./src/admin/index.js","webpack://@sycho/flarum-package-manager/./src/admin/utils/errorHandler.ts","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/app']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/Component']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Alert']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-package-manager/external \"flarum.core.compat['common/utils/classList']\""],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","o","p","__proto__","ComposerFailureModal","oninit","vnode","attrs","error","guessed_cause","alertAttrs","type","content","app","translator","trans","className","title","output","Modal","Installer","packageName","isLoading","Stream","view","extiverse","onsubmit","bind","data","modal","show","LoadingModal","request","method","url","forum","attribute","body","errorHandler","then","response","extensionId","id","alerts","extension","window","location","href","reload","m","redraw","Component","MajorUpdater","version","coreUpdate","update","dryRun","Updater","lastUpdateCheck","extensions","getExtensionUpdates","getCoreUpdate","core","settings","icon","backgroundImage","newPackageUpdate","keys","length","humanTime","checkedAt","checkForUpdates","updateGlobally","extensionItem","map","isCore","classList","name","extra","updateCoreMinor","updateExtension","v","replace","updates","installed","filter","composerPackage","safeToUpdate","includes","values","pop","initializers","add","extensionData","registerSetting","isRequiredDirectoriesWritable","extend","ExtensionPage","items","isExtensionEnabled","close","e","errors","code"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import app from 'flarum/admin/app';\nimport Modal from 'flarum/common/components/Modal';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport Mithril from 'mithril';\n\ninterface Attrs extends ComponentAttrs {\n output: string;\n}\n\nexport default class ComposerFailureModal extends Modal {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (this.attrs.error.guessed_cause) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans(`sycho-package-manager.admin.failure_modal.guessed_cause.${this.attrs.error.guessed_cause}`),\n };\n }\n }\n\n className() {\n return 'Modal--large ComposerFailureModal';\n }\n\n title() {\n return app.translator.trans('sycho-package-manager.admin.failure_modal.title');\n }\n\n content() {\n return (\n
\n
\n {app.translator.trans('sycho-package-manager.admin.failure_modal.show_composer_output')}\n
{this.attrs.error.output}
\n
\n
\n );\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport ComposerFailureModal from './ComposerFailureModal';\nimport errorHandler from '../utils/errorHandler';\n\nexport default class Installer extends Component {\n packageName!: Stream;\n isLoading: boolean = false;\n\n oninit(vnode: Mithril.Vnode): void {\n super.oninit(vnode);\n\n this.packageName = Stream('');\n }\n\n view(): Mithril.Children {\n return (\n
\n \n

\n {app.translator.trans('sycho-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com,\n })}\n

\n
\n \n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n this.isLoading = true;\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data(),\n },\n errorHandler,\n })\n .then((response) => {\n const extensionId = response.id;\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('sycho-package-manager.admin.extensions.successful_install', { extension: extensionId })\n );\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = false;\n m.redraw();\n });\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Mithril from 'mithril';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport { UpdatedPackage } from './Updater';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport errorHandler from '../utils/errorHandler';\n\ninterface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n}\n\nexport default class MajorUpdater extends Component {\n isLoading: string | null = null;\n\n view(vnode: Mithril.Vnode): Mithril.Children {\n return (\n
\n \"flarum\n \n

{app.translator.trans('sycho-package-manager.admin.major_updater.description')}

\n
\n \n \n \n \n
\n
\n );\n }\n\n update(dryRun: boolean) {\n this.isLoading = `update-${dryRun ? 'dry-run' : 'run'}`;\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/major-update`,\n body: {\n data: { dryRun },\n },\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\nimport Button from 'flarum/common/components/Button';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport errorHandler from '../utils/errorHandler';\nimport classList from 'flarum/common/utils/classList';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\n\nexport type UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n 'latest-minor': string | null;\n 'latest-major': string | null;\n 'latest-status': string;\n description: string;\n};\n\ntype ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\ntype LastUpdateCheck = {\n checkedAt: Date;\n updates: ComposerUpdates;\n};\n\nexport default class Updater extends Component {\n isLoading: string | null = null;\n lastUpdateCheck: LastUpdateCheck = app.data.lastUpdateCheck || {};\n\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const extensions: any = this.getExtensionUpdates();\n const coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate();\n let core = null;\n\n if (coreUpdate) {\n core = {\n title: app.translator.trans('sycho-package-manager.admin.updater.flarum'),\n version: app.data.settings.version,\n icon: {\n backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/sycho-package-manager/flarum.svg`,\n },\n newPackageUpdate: coreUpdate,\n };\n }\n\n return [\n
\n \n

{app.translator.trans('sycho-package-manager.admin.updater.updater_help')}

\n {Object.keys(this.lastUpdateCheck).length ? (\n

\n \n {app.translator.trans('sycho-package-manager.admin.updater.last_update_checked_at')}\n \n {humanTime(this.lastUpdateCheck?.checkedAt)}\n

\n ) : null}\n
\n \n {app.translator.trans('sycho-package-manager.admin.updater.check_for_updates')}\n \n \n {app.translator.trans('sycho-package-manager.admin.updater.run_global_update')}\n \n
\n {this.isLoading !== null ? (\n
\n \n
\n ) : extensions.length || core ? (\n
\n
\n {core ? this.extensionItem(core, true) : null}\n {extensions.map((extension: any) => this.extensionItem(extension))}\n
\n
\n ) : null}\n
,\n coreUpdate && coreUpdate['latest-major'] ? : null,\n ];\n }\n\n extensionItem(extension: any, isCore: boolean = false) {\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.title || extension.extra['flarum-extension'].title}
\n
\n {this.version(extension.version)}\n {extension.newPackageUpdate['latest-minor'] ? (\n \n {this.version(extension.newPackageUpdate['latest-minor'])}\n \n ) : null}\n {extension.newPackageUpdate['latest-major'] && !isCore ? (\n \n {this.version(extension.newPackageUpdate['latest-major'])}\n \n ) : null}\n
\n
\n
\n \n \n \n
\n \n );\n }\n\n version(v: string) {\n return 'v' + v.replace('v', '');\n }\n\n getExtensionUpdates() {\n this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n\n if (extension && safeToUpdate) {\n extension.newPackageUpdate = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return Object.values(app.data.extensions).filter((extension: any) => extension.newPackageUpdate);\n }\n\n getCoreUpdate(): UpdatedPackage | undefined {\n return this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => composerPackage.name === 'flarum/core').pop();\n }\n\n checkForUpdates() {\n this.isLoading = 'check';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n errorHandler,\n })\n .then((response) => {\n this.lastUpdateCheck = response as LastUpdateCheck;\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n app.modal.show(LoadingModal);\n this.isLoading = 'minor-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateExtension(extension: any) {\n app.modal.show(LoadingModal);\n this.isLoading = 'extension-update';\n\n app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('sycho-package-manager.admin.extensions.successful_update', { extension: extension.extra['flarum-extension'].title })\n );\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.isLoading = 'global-update';\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n errorHandler,\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\n })\n .finally(() => {\n this.isLoading = null;\n m.redraw();\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport Alert from 'flarum/common/components/Alert';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Installer from './components/Installer';\nimport Updater from './components/Updater';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\nimport MajorUpdater from './components/MajorUpdater';\n\napp.initializers.add('sycho-package-manager', (app) => {\n app.extensionData\n .for('sycho-package-manager')\n .registerSetting(() => {\n if (!app.data.isRequiredDirectoriesWritable) {\n return (\n
\n \n {app.translator.trans('sycho-package-manager.admin.file_permissions')}\n \n
\n );\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n })\n .registerSetting(() => {\n if (app.data.isRequiredDirectoriesWritable) {\n return ;\n }\n });\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'sycho-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app\n .request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n })\n .then(() => {\n app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n })\n .finally(() => {\n app.modal.close();\n });\n }}\n >\n Remove\n \n );\n });\n});\n","import app from 'flarum/admin/app';\nimport ComposerFailureModal from '../components/ComposerFailureModal';\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n\n switch (error.code) {\n case 'composer_command_failure':\n app.modal.show(ComposerFailureModal, { error });\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n\n case 'extension_not_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['admin/components/LoadingModal'];","module.exports = flarum.core.compat['admin/utils/isExtensionEnabled'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['common/components/Alert'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Modal'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/helpers/humanTime'];","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/utils/Stream'];","module.exports = flarum.core.compat['common/utils/classList'];"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx index 1ce5bfb0b..873ea6c00 100644 --- a/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx +++ b/extensions/package-manager/js/src/admin/components/MajorUpdater.tsx @@ -4,12 +4,16 @@ import Mithril from 'mithril'; import Button from 'flarum/common/components/Button'; import Tooltip from 'flarum/common/components/Tooltip'; import { UpdatedPackage } from './Updater'; +import LoadingModal from 'flarum/admin/components/LoadingModal'; +import errorHandler from '../utils/errorHandler'; interface MajorUpdaterAttrs extends ComponentAttrs { coreUpdate: UpdatedPackage; } export default class MajorUpdater extends Component { + isLoading: string | null = null; + view(vnode: Mithril.Vnode): Mithril.Children { return (
@@ -18,15 +22,38 @@ export default class MajorUpdater{app.translator.trans('sycho-package-manager.admin.major_updater.description')}

- -
); } + + update(dryRun: boolean) { + this.isLoading = `update-${dryRun ? 'dry-run' : 'run'}`; + app.modal.show(LoadingModal); + + app + .request({ + method: 'POST', + url: `${app.forum.attribute('apiUrl')}/package-manager/major-update`, + body: { + data: { dryRun }, + }, + errorHandler, + }) + .then(() => { + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.update_successful')); + window.location.reload(); + }) + .finally(() => { + this.isLoading = null; + m.redraw(); + }); + } } diff --git a/extensions/package-manager/js/src/admin/components/Updater.tsx b/extensions/package-manager/js/src/admin/components/Updater.tsx index 20a354e0e..4adf8dc25 100755 --- a/extensions/package-manager/js/src/admin/components/Updater.tsx +++ b/extensions/package-manager/js/src/admin/components/Updater.tsx @@ -195,7 +195,7 @@ export default class Updater extends Component { errorHandler, }) .then(() => { - app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.updater.minor_update_successful')); + app.alerts.show({ type: 'success' }, app.translator.trans('sycho-package-manager.admin.update_successful')); window.location.reload(); }) .finally(() => { diff --git a/extensions/package-manager/locale/en.yml b/extensions/package-manager/locale/en.yml index 096dd9eb5..4eda79983 100755 --- a/extensions/package-manager/locale/en.yml +++ b/extensions/package-manager/locale/en.yml @@ -34,7 +34,8 @@ sycho-package-manager: flarum: Flarum Core global_update_successful: Successfully updated all packages. last_update_checked_at: "Last Update Check: " - minor_update_successful: Flarum successfully updated. run_global_update: Run Global Update updater_title: Updates updater_help: Runs a check for new extension and Flarum updates. + + update_successful: Flarum successfully updated. diff --git a/extensions/package-manager/src/Api/Controller/MajorUpdateController.php b/extensions/package-manager/src/Api/Controller/MajorUpdateController.php new file mode 100755 index 000000000..98c8af5ca --- /dev/null +++ b/extensions/package-manager/src/Api/Controller/MajorUpdateController.php @@ -0,0 +1,41 @@ +bus = $bus; + } + + public function handle(ServerRequestInterface $request): ResponseInterface + { + $actor = RequestUtil::getActor($request); + $dryRun = (bool) (int) Arr::get($request->getParsedBody(), 'data.dryRun'); + + $this->bus->dispatch( + new MajorUpdate($actor, $dryRun) + ); + + return new EmptyResponse(); + } +} diff --git a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php index dc5a67c9d..018048ce9 100755 --- a/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php +++ b/extensions/package-manager/src/Api/Controller/UpdateExtensionController.php @@ -27,9 +27,6 @@ class UpdateExtensionController implements RequestHandlerInterface $this->bus = $bus; } - /** - * @throws \Flarum\User\Exception\PermissionDeniedException - */ public function handle(ServerRequestInterface $request): ResponseInterface { $actor = RequestUtil::getActor($request); diff --git a/extensions/package-manager/src/Command/MajorUpdate.php b/extensions/package-manager/src/Command/MajorUpdate.php new file mode 100644 index 000000000..8fd479d49 --- /dev/null +++ b/extensions/package-manager/src/Command/MajorUpdate.php @@ -0,0 +1,24 @@ +actor = $actor; + $this->dryRun = $dryRun; + } +} diff --git a/extensions/package-manager/src/Command/MajorUpdateHandler.php b/extensions/package-manager/src/Command/MajorUpdateHandler.php new file mode 100644 index 000000000..4a961b5f6 --- /dev/null +++ b/extensions/package-manager/src/Command/MajorUpdateHandler.php @@ -0,0 +1,152 @@ +composer = $composer; + $this->lastUpdateCheck = $lastUpdateCheck; + $this->events = $events; + $this->logger = $logger; + $this->paths = $paths; + } + + /** + * Set the version constraint for all directly required packages in the root composer.json to *. + * Set flarum/core version constraint to new major version. + * Run composer update --prefer-dist --no-plugins --no-dev -a --with-all-dependencies. + * Clear cache. + * Run migrations. + * + * @throws \Flarum\User\Exception\PermissionDeniedException + * @throws ComposerUpdateFailedException + */ + public function handle(MajorUpdate $command) + { + $command->actor->assertAdmin(); + + $majorVersion = $this->getNewMajorVersion(); + + if (! $majorVersion) { + return false; + } + + $this->updateComposerJson($majorVersion); + + $this->runCommand($command->dryRun); + + if ($command->dryRun) { + $this->revertComposerJson(); + + return true; + } + + $this->lastUpdateCheck->forget('flarum/*', true); + + $this->events->dispatch( + new FlarumUpdated(FlarumUpdated::MAJOR) + ); + + return true; + } + + protected function getNewMajorVersion(): ?string + { + $core = Arr::first($this->lastUpdateCheck->get()['updates']['installed'], function ($package) { + return $package['name'] === 'flarum/core'; + }); + + return $core ? $core['latest-major'] : null; + } + + protected function updateComposerJson(string $majorVersion): void + { + $composerJsonPath = $this->paths->base . '/composer.json'; + $this->composerJson = $newComposerJson = json_decode(file_get_contents($composerJsonPath), true); + + foreach ($newComposerJson['require'] as $name => &$version) { + if ($name === 'flarum/core') { + $version = '^'.str_replace('v', '', $majorVersion); + } else { + $version = '*'; + } + } + + file_put_contents($composerJsonPath, json_encode($newComposerJson)); + } + + protected function revertComposerJson(): void + { + $composerJsonPath = $this->paths->base . '/composer.json'; + file_put_contents($composerJsonPath, $this->composerJson); + } + + /** + * @throws ComposerUpdateFailedException + */ + protected function runCommand(bool $dryRun): void + { + $output = new BufferedOutput(); + $input = new ArrayInput([ + 'command' => 'update', + '--prefer-dist' => true, + '--no-plugins' => true, + '--no-dev' => true, + '-a' => true, + '--with-all-dependencies' => true, + '--dry-run' => $dryRun, + ]); + + $exitCode = $this->composer->run($input, $output); + $output = $output->fetch(); + + $this->logger->log($input->__toString(), $output, $exitCode); + + if ($exitCode !== 0) { + throw new ComposerUpdateFailedException('*', $output); + } + } +} diff --git a/extensions/package-manager/src/Listener/PostUpdateListener.php b/extensions/package-manager/src/Listener/PostUpdateListener.php index 0d541fb9b..06ebbb785 100644 --- a/extensions/package-manager/src/Listener/PostUpdateListener.php +++ b/extensions/package-manager/src/Listener/PostUpdateListener.php @@ -9,6 +9,7 @@ namespace SychO\PackageManager\Listener; use Composer\Command\ClearCacheCommand; use Flarum\Database\Console\MigrateCommand; use Flarum\Foundation\Console\AssetsPublishCommand; +use SychO\PackageManager\Event\FlarumUpdated; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\NullOutput; @@ -39,7 +40,7 @@ class PostUpdateListener /** * @throws \Exception */ - public function handle($event) + public function handle(FlarumUpdated $event) { $this->clearCache->run(new ArrayInput([]), new NullOutput()); $this->migrate->run(new ArrayInput([]), new NullOutput());