Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {
Functions,
importCSVvariableName,
InstallCase,
minsky,
} from '@minsky/shared';
import {
Expand Down Expand Up @@ -78,9 +79,9 @@ export class ApplicationMenuManager {
private static async getFileMenu(): Promise<MenuItemConstructorOptions> {
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: [
Expand All @@ -98,9 +99,23 @@ export class ApplicationMenuManager {
},
},
{
label: upgradeLabel,
label: 'Upgrade',
click() {CommandsManager.upgrade();},
},
{
label: ravelUpgradeLabel,
submenu: [
{
label: 'Latest Ravel',
click() {CommandsManager.upgrade(InstallCase.latestRavel);},
},
{
label: 'Previous Ravel',
enabled: ravelAvailable,
click() {CommandsManager.upgrade(InstallCase.previousRavel)},
},
],
},
{
label: 'Logout from Patreon',
click() {
Expand Down
18 changes: 13 additions & 5 deletions gui-js/apps/minsky-electron/src/app/managers/CommandsManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
Functions,
HandleDimensionPayload,
InitializePopupWindowPayload,
InstallCase,
HandleDescriptionPayload,
importCSVvariableName,
minsky, GodleyIcon, Group, IntOp, Item, Lock, Ravel, VariableBase, Wire, Utility, DownloadCSVPayload
Expand Down Expand Up @@ -1290,7 +1291,7 @@ export class CommandsManager {
});
}

static async upgrade() {
static async upgrade(installCase: InstallCase=InstallCase.theLot) {
const window=this.createDownloadWindow();

// handler for when user has logged in to initiate upgrades.
Expand All @@ -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) {
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())+'.');
Expand Down Expand Up @@ -1340,11 +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:''}; break;
case 'darwin': var state={system: 'macos', distro: '', version: '', arch: `${process.arch}`}; break;
case 'win32':
state={system: 'windows', distro: '', version: '', arch:'', previous: ''};
break;
case 'darwin':
state={system: 'macos', distro: '', version: '', arch: `${process.arch}`, previous: ''};
break;
case 'linux':
var state={system: 'linux', distro: '', version: '',arch:''};
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');
Expand All @@ -1363,6 +1369,8 @@ export class CommandsManager {
return;
break;
}
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
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}`);
Expand Down
3 changes: 3 additions & 0 deletions gui-js/libs/shared/src/lib/interfaces/Interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,6 @@ export interface TypeValueName {
value? : string | number,
name? : string
}

export enum InstallCase {theLot, latestRavel, previousRavel};