Skip to content

Commit 5a18432

Browse files
committed
✨ Feature: new addPlugin api for node projects
1 parent 83535b9 commit 5a18432

28 files changed

+77
-33
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"lint": "eslint src/**/*.ts && npm run build",
1616
"test": "echo \"Error: no test specified\" && exit 1",
1717
"build": "tsc -p . && npm run copy",
18-
"copy": "copyfiles -f src/utils/clipboard/* dist/src/utils/clipboard",
18+
"copy": "copyfiles -f src/utils/clipboard/* dist/src/utils/clipboard && copyfiles -f src/types/* dist/src/types",
1919
"dev": "tsc -w -p .",
2020
"patch": "npm version patch && git push origin master && git push origin --tags",
2121
"minor": "npm version minor && git push origin master && git push origin --tags",

src/core/Lifecycle.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { EventEmitter } from 'events'
22
import PicGo from './PicGo'
3-
import { IPlugin, Undefinable } from 'src/types'
3+
import { IPlugin, Undefinable } from '../types'
44
import { handleUrlEncode } from '../utils/common'
55
import LifecyclePlugins from '../lib/LifecyclePlugins'
66

src/core/PicGo.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import uploaders from '../plugins/uploader'
1010
import transformers from '../plugins/transformer'
1111
import PluginLoader from '../lib/PluginLoader'
1212
import { get, set, unset } from 'lodash'
13-
import { IHelper, IImgInfo, IConfig, IPicGo, IStringKeyMap } from 'src/types'
13+
import { IHelper, IImgInfo, IConfig, IPicGo, IStringKeyMap, IPicGoPlugin } from '../types'
1414
import getClipboardImage from '../utils/getClipboardImage'
1515
import Request from '../lib/Request'
1616
import DB from '../utils/db'
@@ -139,6 +139,22 @@ class PicGo extends EventEmitter implements IPicGo {
139139
unset(this.getConfig(key), propName)
140140
}
141141

142+
/**
143+
* for node project adding a plugin by a simple way
144+
*/
145+
addPlugin (name: string, plugin: IPicGoPlugin): void {
146+
if (!name || !plugin || (typeof plugin !== 'function')) {
147+
this.log.warn('Please provide valid plugin')
148+
return
149+
}
150+
try {
151+
plugin(this).register()
152+
} catch (e) {
153+
this.log.warn('Please provide valid plugin')
154+
this.log.error(e)
155+
}
156+
}
157+
142158
async upload (input?: any[]): Promise<IImgInfo[] | Error> {
143159
if (this.configPath === '') {
144160
this.log.error('The configuration file only supports JSON format.')

src/lib/Commander.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import PicGo from '../core/PicGo'
22
import program, { CommanderStatic } from 'commander'
33
import inquirer, { Inquirer } from 'inquirer'
4-
import { IPlugin } from 'src/types'
4+
import { IPlugin } from '../types'
55
import commanders from '../plugins/commander'
66
import pkg from '../../package.json'
77

src/lib/LifecyclePlugins.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IPlugin } from 'src/types'
1+
import { IPlugin } from '../types'
22

33
class LifecyclePlugins {
44
static currentPlugin: string | null

src/lib/Logger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
IConfig,
1212
Undefinable,
1313
ILogColor
14-
} from 'src/types'
14+
} from '../types'
1515

1616
class Logger {
1717
private readonly level = {

src/lib/PluginHandler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import PicGo from '../core/PicGo'
22
import spawn from 'cross-spawn'
3-
import { IResult, IProcessEnv, Undefinable } from 'src/types'
3+
import { IResult, IProcessEnv, Undefinable } from '../types'
44

55
class PluginHandler {
66
// Thanks to feflow -> https://github.com/feflow/feflow/blob/master/lib/internal/install/plugin.js

src/lib/Request.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import PicGo from '../core/PicGo'
22
import request, { RequestPromiseOptions, RequestPromiseAPI } from 'request-promise-native'
3-
import { Undefinable } from 'src/types'
3+
import { Undefinable } from '../types'
44

55
class Request {
66
ctx: PicGo

src/plugins/commander/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import PicGo from '../../core/PicGo'
2-
import { IPlugin } from 'src/types'
2+
import { IPlugin } from '../../types'
33

44
const config: IPlugin = {
55
handle: (ctx: PicGo) => {

src/plugins/commander/init.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { generate } from '../../utils/initUtils'
66
import { homedir } from 'os'
77
// @ts-expect-error
88
import download from 'download-git-repo'
9-
import { IOptions, IPlugin } from 'src/types'
9+
import { IOptions, IPlugin } from '../../types'
1010
import rm from 'rimraf'
1111

1212
const run = (ctx: PicGo, options: IOptions): void => {

0 commit comments

Comments
 (0)