Skip to content

Commit 0103345

Browse files
committed
Added ability to uninstall plugins
1 parent 545ea70 commit 0103345

3 files changed

Lines changed: 70 additions & 5 deletions

File tree

src/system-plugins/plugin-finder/index.js

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,31 @@ function pluginFinder(name, deps) {
2323
socket.on('plugin-finder.search', function (name) {
2424
console.log('performing search for plugins');
2525
bower.commands
26-
.search('openrov-plugin-'+ name, {})
27-
.on('end', function (results) {
26+
.list( {}, { cwd: '/usr/share/cockpit' })
27+
.on('end',function (listing) {
28+
var list = listing.dependencies;
29+
bower.commands
30+
.search('openrov-plugin-'+ name, {})
31+
.on('end', function (results) {
32+
for(var result in results){
33+
//console.log(list.keys());
34+
if(results[result].name in list){
35+
results[result].InstalledOnROV = true;
36+
}
37+
}
38+
console.log('sending plugins list to browser');
39+
client.emit('pluginfindersearchresults',results);
40+
});
41+
});
42+
});
43+
44+
socket.on('plugin-finder.list', function (name) {
45+
console.log('performing list for plugins');
46+
bower.commands
47+
.list( {}, { cwd: '/usr/share/cockpit' })
48+
.on('end',function (results) {
2849
console.log('sending plugins list to browser');
29-
client.emit('pluginfindersearchresults',results);
50+
client.emit('pluginfinderinstalled',results);
3051
});
3152
});
3253

@@ -54,6 +75,30 @@ function pluginFinder(name, deps) {
5475

5576
});
5677

78+
socket.on('plugin-finder.uninstall', function (name) {
79+
bower.commands
80+
.uninstall([name], {}, { cwd: '/usr/share/cockpit' })
81+
.on('error', function(err){
82+
console.log(err);
83+
})
84+
.on('log', function(info){
85+
console.log(info);
86+
client.emit('pluginfinderuninstallstatus',info);
87+
})
88+
.on('end', function(uninstalled){
89+
console.log('done processing plugin uninstall');
90+
client.emit('pluginfinderuninstallresults',uninstalled);
91+
client.emit('pluginfinderrestartRequired');
92+
//There is a bug with bower, possibly around re-installing
93+
//that causes the CPU to max out forever. This restart
94+
//is as much a work-around as it is needed to load the
95+
//server-side aspects of the plugin.
96+
console.log("intentional restart");
97+
setTimeout(process.exit(17),5000);
98+
});
99+
100+
});
101+
57102
});
58103
}
59104

src/system-plugins/plugin-finder/public/js/plugin-finder.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
self.isLoading = ko.observable(false);
1010
self.isInstalling = ko.observable(false);
1111
self.install = ko.observable('');
12+
self.uninstall = ko.observable('');
1213
self.requestedPluginDetail = ko.observable('');
1314

1415
self.query.subscribe(function(value) {
@@ -27,6 +28,10 @@
2728
self.install(plugin);
2829
};
2930

31+
self.uninstallPlugin = function (plugin) {
32+
self.uninstall(plugin);
33+
};
34+
3035
self.launchPluginDetail = function (plugin) {
3136
self.requestedPluginDetail(plugin);
3237
};
@@ -91,6 +96,9 @@
9196
self.homepage = ko.observable('');
9297
self.description = ko.observable('');
9398
self.raiting = ko.observable('');
99+
self.installed = ko.computed(function () {
100+
return self.rawPlugin.InstalledOnROV === true ? true : false;
101+
});
94102
//Get data from server
95103
/*configManager.get(self.name(), function (pluginConfig) {
96104
if (pluginConfig != undefined && pluginConfig.isEnabled != undefined) {
@@ -142,7 +150,12 @@
142150

143151
this.model.install.subscribe(function(plugin){
144152
self.model.isInstalling(true);
145-
self.cockpit.socket.emit('plugin-finder.install',plugin.name());
153+
self.cockpit.socket.emit('plugin-finder.install',plugin.rawPlugin.name);
154+
});
155+
156+
this.model.uninstall.subscribe(function(plugin){
157+
self.model.isInstalling(true);
158+
self.cockpit.socket.emit('plugin-finder.uninstall',plugin.rawPlugin.name);
146159
});
147160

148161
this.model.requestedPluginDetail.subscribe(function(plugin){
@@ -165,6 +178,11 @@
165178
self.model.isInstalling(false);
166179
});
167180

181+
self.cockpit.socket.on('pluginfinderuninstallresults', function(result){
182+
console.log(result);
183+
self.model.isInstalling(false);
184+
});
185+
168186
self.cockpit.socket.on('pluginfinderinstallstatus', function(status){
169187
console.log(status);
170188
});

src/system-plugins/plugin-finder/public/settings.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
<span class="badge" ><span data-bind="text: raiting"></span> stars</span>
1919
</td>
2020
<td>
21-
<button type="button" class="btn btn-xs btn-default pull-right" data-bind="click: $parent.installPlugin">Install</button>
21+
<button type="button" class="btn btn-xs btn-default pull-right hide" data-bind="click: $parent.installPlugin, style: { display: installed() === false ? 'inherit' : ''}">Install</button>
22+
<button type="button" class="btn btn-xs btn-default pull-right hide" data-bind="click: $parent.uninstallPlugin, style: { display: installed() === true ? 'inherit' : ''}">Uninstall</button>
23+
2224
</td>
2325
</tr>
2426
</tbody>

0 commit comments

Comments
 (0)