1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Allow installing extensions by dist-tag (#3040)

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2021-06-11 15:06:56 -04:00 committed by GitHub
parent e26694d4b6
commit 84cad4b155
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 15 deletions

View File

@ -313,9 +313,13 @@ export async function attemptInstallByInfo({ name, version, requireConfirmation
if (version) { if (version) {
if (!json.versions[version]) { if (!json.versions[version]) {
Notifications.error(<p>The <em>{name}</em> extension does not have a v{version}.</p>); if (json["dist-tags"][version]) {
version = json["dist-tags"][version];
return disposer(); } else {
Notifications.error(<p>The <em>{name}</em> extension does not have a version or tag <code>{version}</code>.</p>);
return disposer();
}
} }
} else { } else {
const versions = Object.keys(json.versions) const versions = Object.keys(json.versions)
@ -490,18 +494,12 @@ export class Extensions extends React.Component<Props> {
} }
componentDidMount() { componentDidMount() {
// TODO: change this after upgrading to mobx6 as that versions' reactions have this functionality
let prevSize = ExtensionLoader.getInstance().userExtensions.size;
disposeOnUnmount(this, [ disposeOnUnmount(this, [
reaction(() => ExtensionLoader.getInstance().userExtensions.size, curSize => { reaction(() => ExtensionLoader.getInstance().userExtensions.size, (curSize, prevSize) => {
try { if (curSize > prevSize) {
if (curSize > prevSize) { disposeOnUnmount(this, [
when(() => !ExtensionInstallationStateStore.anyInstalling) when(() => !ExtensionInstallationStateStore.anyInstalling, () => this.installPath = ""),
.then(() => this.installPath = ""); ]);
}
} finally {
prevSize = curSize;
} }
}) })
]); ]);

View File

@ -68,7 +68,7 @@ export const isUrl: InputValidator = {
}, },
}; };
export const isExtensionNameInstallRegex = /^(?<name>(@[-\w]+\/)?[-\w]+)(@(?<version>\d\.\d\.\d(-\w+)?))?$/gi; export const isExtensionNameInstallRegex = /^(?<name>(@[-\w]+\/)?[-\w]+)(@(?<version>[a-z0-9-_.]+))?$/gi;
export const isExtensionNameInstall: InputValidator = { export const isExtensionNameInstall: InputValidator = {
condition: ({ type }) => type === "text", condition: ({ type }) => type === "text",