mirror of
https://github.com/Kuingsmile/PicList.git
synced 2025-01-23 14:48:13 -05:00
✨ Feature: add commandline argvs support for picgo app
for example: picgo.exe ./xxx.jpg
This commit is contained in:
parent
c64959a139
commit
6db86ec359
@ -9,6 +9,7 @@ import { getPicBeds } from './utils/getPicBeds'
|
|||||||
import pkg from '../../package.json'
|
import pkg from '../../package.json'
|
||||||
import picgoCoreIPC from './utils/picgoCoreIPC'
|
import picgoCoreIPC from './utils/picgoCoreIPC'
|
||||||
import fixPath from 'fix-path'
|
import fixPath from 'fix-path'
|
||||||
|
import { getUploadFiles } from './utils/handleArgv'
|
||||||
/**
|
/**
|
||||||
* Set `__static` path to static files in production
|
* Set `__static` path to static files in production
|
||||||
* https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html
|
* https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html
|
||||||
@ -210,6 +211,7 @@ const createWindow = () => {
|
|||||||
window.on('blur', () => {
|
window.on('blur', () => {
|
||||||
window.hide()
|
window.hide()
|
||||||
})
|
})
|
||||||
|
return window
|
||||||
}
|
}
|
||||||
|
|
||||||
const createMiniWidow = () => {
|
const createMiniWidow = () => {
|
||||||
@ -250,6 +252,7 @@ const createMiniWidow = () => {
|
|||||||
miniWindow.on('closed', () => {
|
miniWindow.on('closed', () => {
|
||||||
miniWindow = null
|
miniWindow = null
|
||||||
})
|
})
|
||||||
|
return miniWindow
|
||||||
}
|
}
|
||||||
|
|
||||||
const createSettingWindow = () => {
|
const createSettingWindow = () => {
|
||||||
@ -289,6 +292,7 @@ const createSettingWindow = () => {
|
|||||||
})
|
})
|
||||||
createMenu()
|
createMenu()
|
||||||
createMiniWidow()
|
createMiniWidow()
|
||||||
|
return settingWindow
|
||||||
}
|
}
|
||||||
|
|
||||||
const createMenu = () => {
|
const createMenu = () => {
|
||||||
@ -337,7 +341,7 @@ const uploadClipboardFiles = async () => {
|
|||||||
if (miniWindow.isVisible()) {
|
if (miniWindow.isVisible()) {
|
||||||
win = miniWindow
|
win = miniWindow
|
||||||
} else {
|
} else {
|
||||||
win = settingWindow || window
|
win = settingWindow || window || createSettingWindow()
|
||||||
}
|
}
|
||||||
let img = await new Uploader(undefined, win.webContents).upload()
|
let img = await new Uploader(undefined, win.webContents).upload()
|
||||||
if (img !== false) {
|
if (img !== false) {
|
||||||
@ -367,6 +371,33 @@ const uploadClipboardFiles = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uploadChoosedFiles = async (webContents, files) => {
|
||||||
|
const input = files.map(item => item.path)
|
||||||
|
const imgs = await new Uploader(input, webContents).upload()
|
||||||
|
if (imgs !== false) {
|
||||||
|
const pasteStyle = db.read().get('settings.pasteStyle').value() || 'markdown'
|
||||||
|
let pasteText = ''
|
||||||
|
for (let i in imgs) {
|
||||||
|
const url = imgs[i].url || imgs[i].imgUrl
|
||||||
|
pasteText += pasteTemplate(pasteStyle, url) + '\r\n'
|
||||||
|
const notification = new Notification({
|
||||||
|
title: '上传成功',
|
||||||
|
body: imgs[i].imgUrl,
|
||||||
|
icon: files[i].path
|
||||||
|
})
|
||||||
|
setTimeout(() => {
|
||||||
|
notification.show()
|
||||||
|
}, i * 100)
|
||||||
|
db.read().get('uploaded').insert(imgs[i]).write()
|
||||||
|
}
|
||||||
|
clipboard.writeText(pasteText)
|
||||||
|
window.webContents.send('uploadFiles', imgs)
|
||||||
|
if (settingWindow) {
|
||||||
|
settingWindow.webContents.send('updateGallery')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
picgoCoreIPC(app, ipcMain)
|
picgoCoreIPC(app, ipcMain)
|
||||||
|
|
||||||
// from macOS tray
|
// from macOS tray
|
||||||
@ -397,30 +428,7 @@ ipcMain.on('uploadClipboardFilesFromUploadPage', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.on('uploadChoosedFiles', async (evt, files) => {
|
ipcMain.on('uploadChoosedFiles', async (evt, files) => {
|
||||||
const input = files.map(item => item.path)
|
return uploadChoosedFiles(evt, files)
|
||||||
const imgs = await new Uploader(input, evt.sender).upload()
|
|
||||||
if (imgs !== false) {
|
|
||||||
const pasteStyle = db.read().get('settings.pasteStyle').value() || 'markdown'
|
|
||||||
let pasteText = ''
|
|
||||||
for (let i in imgs) {
|
|
||||||
const url = imgs[i].url || imgs[i].imgUrl
|
|
||||||
pasteText += pasteTemplate(pasteStyle, url) + '\r\n'
|
|
||||||
const notification = new Notification({
|
|
||||||
title: '上传成功',
|
|
||||||
body: imgs[i].imgUrl,
|
|
||||||
icon: files[i].path
|
|
||||||
})
|
|
||||||
setTimeout(() => {
|
|
||||||
notification.show()
|
|
||||||
}, i * 100)
|
|
||||||
db.read().get('uploaded').insert(imgs[i]).write()
|
|
||||||
}
|
|
||||||
clipboard.writeText(pasteText)
|
|
||||||
window.webContents.send('uploadFiles', imgs)
|
|
||||||
if (settingWindow) {
|
|
||||||
settingWindow.webContents.send('updateGallery')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.on('updateShortKey', (evt, oldKey) => {
|
ipcMain.on('updateShortKey', (evt, oldKey) => {
|
||||||
@ -491,12 +499,25 @@ const gotTheLock = app.requestSingleInstanceLock()
|
|||||||
if (!gotTheLock) {
|
if (!gotTheLock) {
|
||||||
app.quit()
|
app.quit()
|
||||||
} else {
|
} else {
|
||||||
if (settingWindow) {
|
app.on('second-instance', (event, commandLine, workingDirectory) => {
|
||||||
if (settingWindow.isMinimized()) {
|
let files = getUploadFiles(commandLine, workingDirectory)
|
||||||
settingWindow.restore()
|
if (files.length > 0) { // 如果有文件列表作为参数,说明是命令行启动
|
||||||
|
let win
|
||||||
|
if (miniWindow && miniWindow.isVisible()) {
|
||||||
|
win = miniWindow
|
||||||
|
} else {
|
||||||
|
win = settingWindow || window || createSettingWindow()
|
||||||
|
}
|
||||||
|
uploadChoosedFiles(win.webContents, files)
|
||||||
|
} else {
|
||||||
|
if (settingWindow) {
|
||||||
|
if (settingWindow.isMinimized()) {
|
||||||
|
settingWindow.restore()
|
||||||
|
}
|
||||||
|
settingWindow.focus()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
settingWindow.focus()
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.platform === 'win32') {
|
if (process.platform === 'win32') {
|
||||||
@ -519,6 +540,16 @@ app.on('ready', () => {
|
|||||||
globalShortcut.register(db.read().get('settings.shortKey.upload').value(), () => {
|
globalShortcut.register(db.read().get('settings.shortKey.upload').value(), () => {
|
||||||
uploadClipboardFiles()
|
uploadClipboardFiles()
|
||||||
})
|
})
|
||||||
|
let files = getUploadFiles()
|
||||||
|
if (files.length > 0) { // 如果有文件列表作为参数,说明是命令行启动
|
||||||
|
let win
|
||||||
|
if (miniWindow && miniWindow.isVisible()) {
|
||||||
|
win = miniWindow
|
||||||
|
} else {
|
||||||
|
win = settingWindow || window || createSettingWindow()
|
||||||
|
}
|
||||||
|
uploadChoosedFiles(win.webContents, files)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
app.on('window-all-closed', () => {
|
app.on('window-all-closed', () => {
|
||||||
|
29
src/main/utils/handleArgv.js
Normal file
29
src/main/utils/handleArgv.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import path from 'path'
|
||||||
|
import fs from 'fs-extra'
|
||||||
|
const getUploadFiles = (argv = process.argv, cwd = process.cwd()) => {
|
||||||
|
let files = argv.slice(1)
|
||||||
|
let result = []
|
||||||
|
if (files.length > 0) {
|
||||||
|
result = files.map(item => {
|
||||||
|
if (path.isAbsolute(item)) {
|
||||||
|
return {
|
||||||
|
path: item
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let tempPath = path.join(cwd, item)
|
||||||
|
if (fs.existsSync(tempPath)) {
|
||||||
|
return {
|
||||||
|
path: tempPath
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).filter(item => item !== null)
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
getUploadFiles
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user