From f023a19c3eeeea2b014b47fae522a62eab320048 Mon Sep 17 00:00:00 2001
From: Chocobozzz <me@florianbigard.com>
Date: Fri, 5 Jul 2019 15:28:49 +0200
Subject: WIP plugins: install/uninstall

---
 scripts/plugin/install.ts | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100755 scripts/plugin/install.ts

(limited to 'scripts/plugin')

diff --git a/scripts/plugin/install.ts b/scripts/plugin/install.ts
new file mode 100755
index 000000000..8e9c9897f
--- /dev/null
+++ b/scripts/plugin/install.ts
@@ -0,0 +1,39 @@
+import { initDatabaseModels } from '../../server/initializers/database'
+import * as program from 'commander'
+import { PluginManager } from '../../server/lib/plugins/plugin-manager'
+import { isAbsolute } from 'path'
+
+program
+  .option('-n, --pluginName [pluginName]', 'Plugin name to install')
+  .option('-v, --pluginVersion [pluginVersion]', 'Plugin version to install')
+  .option('-p, --pluginPath [pluginPath]', 'Path of the plugin you want to install')
+  .parse(process.argv)
+
+if (!program['pluginName'] && !program['pluginPath']) {
+  console.error('You need to specify a plugin name with the desired version, or a plugin path.')
+  process.exit(-1)
+}
+
+if (program['pluginName'] && !program['pluginVersion']) {
+  console.error('You need to specify a the version of the plugin you want to install.')
+  process.exit(-1)
+}
+
+if (program['pluginPath'] && !isAbsolute(program['pluginPath'])) {
+  console.error('Plugin path should be absolute.')
+  process.exit(-1)
+}
+
+run()
+  .then(() => process.exit(0))
+  .catch(err => {
+    console.error(err)
+    process.exit(-1)
+  })
+
+async function run () {
+  await initDatabaseModels(true)
+
+  const toInstall = program['pluginName'] || program['pluginPath']
+  await PluginManager.Instance.install(toInstall, program['pluginVersion'], !!program['pluginPath'])
+}
-- 
cgit v1.2.3