From 3ad02f73e7304cc319f3594c574e3d5c2e9f7677 Mon Sep 17 00:00:00 2001 From: Russell Standish Date: Sun, 2 Feb 2025 13:54:17 +1100 Subject: [PATCH 1/5] Added ravel only install option. For ravel #624. --- .../app/managers/ApplicationMenuManager.ts | 20 ++++++++++++++++--- .../src/app/managers/CommandsManager.ts | 4 ++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/gui-js/apps/minsky-electron/src/app/managers/ApplicationMenuManager.ts b/gui-js/apps/minsky-electron/src/app/managers/ApplicationMenuManager.ts index f36f02fa8..5fc3a7e02 100644 --- a/gui-js/apps/minsky-electron/src/app/managers/ApplicationMenuManager.ts +++ b/gui-js/apps/minsky-electron/src/app/managers/ApplicationMenuManager.ts @@ -78,9 +78,9 @@ export class ApplicationMenuManager { private static async getFileMenu(): Promise { const scope = this; const ravelAvailable=await minsky.ravelAvailable(); - let upgradeLabel='Upgrade'; + let ravelUpgradeLabel='Upgrade Ravel'; if (!ravelAvailable) - upgradeLabel+=' to Ravel'; + ravelUpgradeLabel='Install Ravel'; return { label: 'File', submenu: [ @@ -98,9 +98,23 @@ export class ApplicationMenuManager { }, }, { - label: upgradeLabel, + label: 'Upgrade', click() {CommandsManager.upgrade();}, }, + { + label: ravelUpgradeLabel, + submenu: [ + { + label: 'Latest Ravel', + click() {CommandsManager.upgrade(true);}, + }, + { + label: 'Previous Ravel', + enabled: ravelAvailable, + click() {/* TODO */}, + }, + ], + }, { label: 'Logout from Patreon', click() { diff --git a/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts b/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts index 3d2eb2824..d8e56e141 100644 --- a/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts +++ b/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts @@ -1290,7 +1290,7 @@ export class CommandsManager { }); } - static async upgrade() { + static async upgrade(ravelOnly: boolean=false) { const window=this.createDownloadWindow(); // handler for when user has logged in to initiate upgrades. @@ -1306,7 +1306,7 @@ export class CommandsManager { let params=new URLSearchParams(installables); let minskyFile=params.get('minsky-asset'); let ravelFile=params.get('ravel-asset'); - if (minskyFile) { + if (minskyFile && !ravelOnly) { let minskyVersionRE=/(\d+)\.(\d+)\.(\d+)([.-])/; let [,major,minor,patch]=minskyVersionRE.exec(minskyFile); let [,currMajor,currMinor,currPatch,terminator]=minskyVersionRE.exec((await minsky.minskyVersion())+'.'); From 950a979973f4062ab697613375124b8071778914 Mon Sep 17 00:00:00 2001 From: Russell Standish Date: Sun, 2 Feb 2025 15:03:14 +1100 Subject: [PATCH 2/5] Install previous version of ravel. For #624. --- .../src/app/managers/ApplicationMenuManager.ts | 5 +++-- .../src/app/managers/CommandsManager.ts | 17 ++++++++++++----- .../shared/src/lib/interfaces/Interfaces.ts | 3 +++ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/gui-js/apps/minsky-electron/src/app/managers/ApplicationMenuManager.ts b/gui-js/apps/minsky-electron/src/app/managers/ApplicationMenuManager.ts index 5fc3a7e02..8d139cc4c 100644 --- a/gui-js/apps/minsky-electron/src/app/managers/ApplicationMenuManager.ts +++ b/gui-js/apps/minsky-electron/src/app/managers/ApplicationMenuManager.ts @@ -1,6 +1,7 @@ import { Functions, importCSVvariableName, + InstallCase, minsky, } from '@minsky/shared'; import { @@ -106,12 +107,12 @@ export class ApplicationMenuManager { submenu: [ { label: 'Latest Ravel', - click() {CommandsManager.upgrade(true);}, + click() {CommandsManager.upgrade(InstallCase.latestRavel);}, }, { label: 'Previous Ravel', enabled: ravelAvailable, - click() {/* TODO */}, + click() {CommandsManager.upgrade(InstallCase.previousRavel)}, }, ], }, diff --git a/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts b/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts index d8e56e141..4c1a4d0ab 100644 --- a/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts +++ b/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts @@ -5,6 +5,7 @@ import { Functions, HandleDimensionPayload, InitializePopupWindowPayload, + InstallCase, HandleDescriptionPayload, importCSVvariableName, minsky, GodleyIcon, Group, IntOp, Item, Lock, Ravel, VariableBase, Wire, Utility, DownloadCSVPayload @@ -1290,7 +1291,7 @@ export class CommandsManager { }); } - static async upgrade(ravelOnly: boolean=false) { + static async upgrade(installCase: InstallCase=InstallCase.theLot) { const window=this.createDownloadWindow(); // handler for when user has logged in to initiate upgrades. @@ -1306,7 +1307,7 @@ export class CommandsManager { let params=new URLSearchParams(installables); let minskyFile=params.get('minsky-asset'); let ravelFile=params.get('ravel-asset'); - if (minskyFile && !ravelOnly) { + if (minskyFile && installCase==InstallCase.theLot) { let minskyVersionRE=/(\d+)\.(\d+)\.(\d+)([.-])/; let [,major,minor,patch]=minskyVersionRE.exec(minskyFile); let [,currMajor,currMinor,currPatch,terminator]=minskyVersionRE.exec((await minsky.minskyVersion())+'.'); @@ -1341,10 +1342,14 @@ export class CommandsManager { let clientId='I9sn5lKdemBdh8uTNA7H7YiplxQk3gI-pP0I9_2g1tcbE88T2C3Z9wOvoy51I4-U'; // need to pass what platform we are switch (process.platform) { - case 'win32': var state={system: 'windows', distro: '', version: '', arch:''}; break; - case 'darwin': var state={system: 'macos', distro: '', version: '', arch: `${process.arch}`}; break; + case 'win32': + var state={system: 'windows', distro: '', version: '', arch:'', previous: ''}; + break; + case 'darwin': + var state={system: 'macos', distro: '', version: '', arch: `${process.arch}`, previous: ''}; + break; case 'linux': - var state={system: 'linux', distro: '', version: '',arch:''}; + var state={system: 'linux', distro: '', version: '',arch:'', previous: ''}; // figure out distro and version from /etc/os-release let aexec=promisify(exec); let distroInfo=await aexec('grep ^ID= /etc/os-release'); @@ -1363,6 +1368,8 @@ export class CommandsManager { return; break; } + if (minsky.ravelAvailable() && installCase==InstallCase.previousRavel) + state.previous=/[^:]*/.exec(await minsky.ravelVersion())[0]; let encodedState=encodeURI(JSON.stringify(state)); // load patreon's login page window.loadURL(`https://www.patreon.com/oauth2/authorize?response_type=code&client_id=${clientId}&redirect_uri=https://ravelation.hpcoders.com.au/ravel-downloader.cgi&scope=identity%20identity%5Bemail%5D&state=${encodedState}`); diff --git a/gui-js/libs/shared/src/lib/interfaces/Interfaces.ts b/gui-js/libs/shared/src/lib/interfaces/Interfaces.ts index b7bc26d65..a4cc112ff 100644 --- a/gui-js/libs/shared/src/lib/interfaces/Interfaces.ts +++ b/gui-js/libs/shared/src/lib/interfaces/Interfaces.ts @@ -141,3 +141,6 @@ export interface TypeValueName { value? : string | number, name? : string } + +export enum InstallCase {theLot, latestRavel, previousRavel}; + From d6a63fe611c26ff9dd6f26c6d26b8d0ff143b925 Mon Sep 17 00:00:00 2001 From: Russell Standish Date: Sun, 2 Feb 2025 17:30:05 +1100 Subject: [PATCH 3/5] Address CodeRabbit's code review comments. --- .../minsky-electron/src/app/managers/CommandsManager.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts b/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts index 4c1a4d0ab..b6a02e9df 100644 --- a/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts +++ b/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts @@ -1341,15 +1341,16 @@ export class CommandsManager { let clientId='I9sn5lKdemBdh8uTNA7H7YiplxQk3gI-pP0I9_2g1tcbE88T2C3Z9wOvoy51I4-U'; // need to pass what platform we are + let state; switch (process.platform) { case 'win32': - var state={system: 'windows', distro: '', version: '', arch:'', previous: ''}; + state={system: 'windows', distro: '', version: '', arch:'', previous: ''}; break; case 'darwin': - var state={system: 'macos', distro: '', version: '', arch: `${process.arch}`, previous: ''}; + state={system: 'macos', distro: '', version: '', arch: `${process.arch}`, previous: ''}; break; case 'linux': - var state={system: 'linux', distro: '', version: '',arch:'', previous: ''}; + state={system: 'linux', distro: '', version: '',arch:'', previous: ''}; // figure out distro and version from /etc/os-release let aexec=promisify(exec); let distroInfo=await aexec('grep ^ID= /etc/os-release'); @@ -1368,7 +1369,7 @@ export class CommandsManager { return; break; } - if (minsky.ravelAvailable() && installCase==InstallCase.previousRavel) + if (await minsky.ravelAvailable() && installCase==InstallCase.previousRavel) state.previous=/[^:]*/.exec(await minsky.ravelVersion())[0]; let encodedState=encodeURI(JSON.stringify(state)); // load patreon's login page From 8c7296ebf7d2fda71d0f8a5098dc7922aafde172 Mon Sep 17 00:00:00 2001 From: Russell Standish Date: Sun, 2 Feb 2025 18:50:44 +1100 Subject: [PATCH 4/5] Code Rabbit nit picked. --- RavelCAPI | 2 +- ecolab | 2 +- .../apps/minsky-electron/src/app/managers/CommandsManager.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/RavelCAPI b/RavelCAPI index c81ede8a3..266fbf574 160000 --- a/RavelCAPI +++ b/RavelCAPI @@ -1 +1 @@ -Subproject commit c81ede8a38ef12babba7b14342cc10b29eb0f271 +Subproject commit 266fbf574543bfb2bfab86d725a32069801ae0a3 diff --git a/ecolab b/ecolab index 35989cd51..8241c80ea 160000 --- a/ecolab +++ b/ecolab @@ -1 +1 @@ -Subproject commit 35989cd51365470d38b4a6931a853a5e37846566 +Subproject commit 8241c80eaa2be4e9e6d98b820dfd31ddc234add3 diff --git a/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts b/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts index b6a02e9df..acca5a08e 100644 --- a/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts +++ b/gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts @@ -1307,7 +1307,7 @@ export class CommandsManager { let params=new URLSearchParams(installables); let minskyFile=params.get('minsky-asset'); let ravelFile=params.get('ravel-asset'); - if (minskyFile && installCase==InstallCase.theLot) { + if (minskyFile && installCase===InstallCase.theLot) { let minskyVersionRE=/(\d+)\.(\d+)\.(\d+)([.-])/; let [,major,minor,patch]=minskyVersionRE.exec(minskyFile); let [,currMajor,currMinor,currPatch,terminator]=minskyVersionRE.exec((await minsky.minskyVersion())+'.'); @@ -1369,7 +1369,7 @@ export class CommandsManager { return; break; } - if (await minsky.ravelAvailable() && installCase==InstallCase.previousRavel) + if (await minsky.ravelAvailable() && installCase===InstallCase.previousRavel) state.previous=/[^:]*/.exec(await minsky.ravelVersion())[0]; let encodedState=encodeURI(JSON.stringify(state)); // load patreon's login page From 4b927835ccc557d9f215eaad5fbaa349a4e84628 Mon Sep 17 00:00:00 2001 From: Russell Standish Date: Mon, 3 Feb 2025 08:38:17 +1100 Subject: [PATCH 5/5] Revert submodule changes. --- RavelCAPI | 2 +- ecolab | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/RavelCAPI b/RavelCAPI index 266fbf574..c81ede8a3 160000 --- a/RavelCAPI +++ b/RavelCAPI @@ -1 +1 @@ -Subproject commit 266fbf574543bfb2bfab86d725a32069801ae0a3 +Subproject commit c81ede8a38ef12babba7b14342cc10b29eb0f271 diff --git a/ecolab b/ecolab index 8241c80ea..35989cd51 160000 --- a/ecolab +++ b/ecolab @@ -1 +1 @@ -Subproject commit 8241c80eaa2be4e9e6d98b820dfd31ddc234add3 +Subproject commit 35989cd51365470d38b4a6931a853a5e37846566