mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Add installFromNpm to Extensions
Signed-off-by: Panu Horsmalahti <phorsmalahti@mirantis.com>
This commit is contained in:
parent
5da49d28b1
commit
e40c8a6299
@ -294,7 +294,7 @@ export class ExtensionLoader {
|
|||||||
* Get url to the tarball of the extension package. Assumes package is found from npm regisry.
|
* Get url to the tarball of the extension package. Assumes package is found from npm regisry.
|
||||||
* @param packageName e.g. "@mirantis/lens-extension-cc"
|
* @param packageName e.g. "@mirantis/lens-extension-cc"
|
||||||
*/
|
*/
|
||||||
getNpmPackageTarballUrl(packageName: string) {
|
getNpmPackageTarballUrl(packageName: string): Promise<string> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const command = [extensionInstaller.npmPath, "view", packageName, "dist.tarball", "--silent"];
|
const command = [extensionInstaller.npmPath, "view", packageName, "dist.tarball", "--silent"];
|
||||||
|
|
||||||
|
|||||||
@ -160,11 +160,26 @@ export class Extensions extends React.Component {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
installFromUrlOrPath = async () => {
|
/**
|
||||||
const { installPath } = this;
|
* Start extension install using a package name, which is resolved to a tarball url using the npm registry.
|
||||||
|
* @param packageName e.g. "@publisher/extension-name"
|
||||||
|
*/
|
||||||
|
async installFromNpm(packageName: string) {
|
||||||
|
const tarballUrl = await extensionLoader.getNpmPackageTarballUrl(packageName);
|
||||||
|
|
||||||
if (!installPath) return;
|
return this.installFromUrlOrPath(tarballUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start extension install using the current value of this.installPath
|
||||||
|
*/
|
||||||
|
installFromInstallPath = async () => {
|
||||||
|
if (this.installPath) {
|
||||||
|
this.installFromUrlOrPath(this.installPath);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
async installFromUrlOrPath(installPath: string) {
|
||||||
this.startingInstall = true;
|
this.startingInstall = true;
|
||||||
const fileName = path.basename(installPath);
|
const fileName = path.basename(installPath);
|
||||||
|
|
||||||
@ -187,7 +202,7 @@ export class Extensions extends React.Component {
|
|||||||
<p>Installation has failed: <b>{String(error)}</b></p>
|
<p>Installation has failed: <b>{String(error)}</b></p>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
installOnDrop = (files: File[]) => {
|
installOnDrop = (files: File[]) => {
|
||||||
logger.info("Install from D&D");
|
logger.info("Install from D&D");
|
||||||
@ -511,7 +526,7 @@ export class Extensions extends React.Component {
|
|||||||
validators={installPath ? Extensions.installPathValidator : undefined}
|
validators={installPath ? Extensions.installPathValidator : undefined}
|
||||||
value={installPath}
|
value={installPath}
|
||||||
onChange={value => this.installPath = value}
|
onChange={value => this.installPath = value}
|
||||||
onSubmit={this.installFromUrlOrPath}
|
onSubmit={this.installFromInstallPath}
|
||||||
iconLeft="link"
|
iconLeft="link"
|
||||||
iconRight={
|
iconRight={
|
||||||
<Icon
|
<Icon
|
||||||
@ -528,7 +543,7 @@ export class Extensions extends React.Component {
|
|||||||
label="Install"
|
label="Install"
|
||||||
disabled={this.isInstalling || !Extensions.installPathValidator.validate(installPath)}
|
disabled={this.isInstalling || !Extensions.installPathValidator.validate(installPath)}
|
||||||
waiting={this.isInstalling}
|
waiting={this.isInstalling}
|
||||||
onClick={this.installFromUrlOrPath}
|
onClick={this.installFromInstallPath}
|
||||||
/>
|
/>
|
||||||
<small className="hint">
|
<small className="hint">
|
||||||
<Trans><b>Pro-Tip</b>: you can also drag-n-drop tarball-file to this area</Trans>
|
<Trans><b>Pro-Tip</b>: you can also drag-n-drop tarball-file to this area</Trans>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user