Include schemas in deployments
This commit is contained in:
parent
43d33a5937
commit
82f65b6fee
12
README.md
12
README.md
@ -20,10 +20,11 @@ For example, installing core plugins (Interactive mode `-i` on `squeebotd`):
|
|||||||
|
|
||||||
## Interactive mode commands
|
## Interactive mode commands
|
||||||
The following commands are available when starting in interactive mode:
|
The following commands are available when starting in interactive mode:
|
||||||
* `repository help`
|
* `repository help` - Repository management commands
|
||||||
* `plugin help`
|
* `plugin help` - Plugin management commands
|
||||||
* `channel help`
|
* `channel help` - Channel management commands
|
||||||
* `quit`
|
* `quit` - Exit Squeebot
|
||||||
|
* `inspector` - Enter JavaScript REPL (basically the same as running `node` without arguments)
|
||||||
|
|
||||||
## Creating a repository
|
## Creating a repository
|
||||||
In order to create a repository, you need to do the following:
|
In order to create a repository, you need to do the following:
|
||||||
@ -41,8 +42,9 @@ The build command supports a `-w` argument which will execute the entire build c
|
|||||||
Within your new repository, each directory you make will be a plugin. The plugin **must** contain the following:
|
Within your new repository, each directory you make will be a plugin. The plugin **must** contain the following:
|
||||||
1. `plugin.json` - Manifest for your plugin.
|
1. `plugin.json` - Manifest for your plugin.
|
||||||
2. `plugin.js` - Has to be a JavaScript file which exports a class inherited from `Plugin` at `@squeebot/core/lib/plugin`.
|
2. `plugin.js` - Has to be a JavaScript file which exports a class inherited from `Plugin` at `@squeebot/core/lib/plugin`.
|
||||||
|
3. `schema.json` - (optionally) include a JSON schema for the plugin's configuration.
|
||||||
|
|
||||||
**Note:** `plugin.js` only has to exist in the distribution, so `.ts` is fine, but you have to use `$ squeebot repository build <path>`
|
**Note:** `plugin.js` only has to exist in the distribution, so `.ts` is fine, but you **have** to use `$ squeebot repository build <path>`
|
||||||
to build them into JavaScript files.
|
to build them into JavaScript files.
|
||||||
|
|
||||||
Plugin manifest (`plugin.json`) example:
|
Plugin manifest (`plugin.json`) example:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@squeebot/cli",
|
"name": "@squeebot/cli",
|
||||||
"version": "3.4.1",
|
"version": "3.4.2",
|
||||||
"description": "Squeebot v3 runtime, environments and configuration",
|
"description": "Squeebot v3 runtime, environments and configuration",
|
||||||
"main": "dist/squeebot.js",
|
"main": "dist/squeebot.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
@ -99,7 +99,7 @@ export async function buildRepository(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (meta.typescript) {
|
if (meta.typescript) {
|
||||||
console.log('Stripping source files');
|
console.log('Stripping TypeScript source files');
|
||||||
for (const plugin of plugins) {
|
for (const plugin of plugins) {
|
||||||
const plOut = path.join(outDir, plugin.name);
|
const plOut = path.join(outDir, plugin.name);
|
||||||
const listAllFiles = await fs.readdir(plOut);
|
const listAllFiles = await fs.readdir(plOut);
|
||||||
@ -111,6 +111,16 @@ export async function buildRepository(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('Copying configuration schemas');
|
||||||
|
for (const plugin of plugins) {
|
||||||
|
const plOut = path.join(outDir, plugin.name);
|
||||||
|
const schemaFile = path.join(plOut, 'schema.json');
|
||||||
|
const outSchemaFile = path.join(outDir, `${plugin.name}.schema.json`);
|
||||||
|
if (await fs.pathExists(schemaFile)) {
|
||||||
|
await fs.copy(schemaFile, outSchemaFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
console.log('Creating tarballs');
|
console.log('Creating tarballs');
|
||||||
for (const plugin of plugins) {
|
for (const plugin of plugins) {
|
||||||
const plOut = path.join(outDir, plugin.name);
|
const plOut = path.join(outDir, plugin.name);
|
||||||
|
@ -33,9 +33,10 @@ export async function developDeploy(
|
|||||||
console.log('Copying plugins to', pluginsPath);
|
console.log('Copying plugins to', pluginsPath);
|
||||||
const listAllFiles = await fs.readdir(outDir);
|
const listAllFiles = await fs.readdir(outDir);
|
||||||
for (const f of listAllFiles) {
|
for (const f of listAllFiles) {
|
||||||
if (f === 'repository' || f.indexOf('.tgz') !== -1) {
|
if (f === 'repository' || f.endsWith('.tgz') || f.endsWith('.json')) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const dst = path.join(pluginsPath, f);
|
const dst = path.join(pluginsPath, f);
|
||||||
await fs.copy(path.join(outDir, f), dst, {
|
await fs.copy(path.join(outDir, f), dst, {
|
||||||
overwrite: true,
|
overwrite: true,
|
||||||
|
@ -26,9 +26,11 @@ export async function sshDeploy(
|
|||||||
|
|
||||||
console.log('Deploying to %s@%s:%d%s', username, host, port, target);
|
console.log('Deploying to %s@%s:%d%s', username, host, port, target);
|
||||||
|
|
||||||
const fileList = (await fs.readdir(outDir)).filter((val) => {
|
const fileList = (await fs.readdir(outDir)).filter((val) =>
|
||||||
return val === 'repository.json' || val.match('.tgz$');
|
val === 'repository.json'
|
||||||
}).map((x) => path.join(outDir, x));
|
|| val.endsWith('.tgz')
|
||||||
|
|| val.endsWith('schema.json')
|
||||||
|
).map((x) => path.join(outDir, x));
|
||||||
|
|
||||||
const pargs = [
|
const pargs = [
|
||||||
'rsync',
|
'rsync',
|
||||||
|
Loading…
Reference in New Issue
Block a user