diff --git a/package.json b/package.json index e43a4c89..a06a5992 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "lowdb": "^1.0.0", "md5": "^2.2.1", "melody.css": "^1.0.2", - "picgo": "^1.2.4", + "picgo": "^1.2.6", "qiniu": "^7.1.1", "vue": "^2.3.3", "vue-electron": "^1.0.6", diff --git a/src/datastore/index.js b/src/datastore/index.js index cef73aac..ddeed766 100644 --- a/src/datastore/index.js +++ b/src/datastore/index.js @@ -43,10 +43,39 @@ if (!db.has('settings.shortKey').value()) { } // init generate clipboard image files +let clipboardFiles = getClipboardFiles() if (!fs.pathExistsSync(path.join(STORE_PATH, 'windows.ps1'))) { - fs.copySync(path.join(__static, '/linux.sh'), path.join(STORE_PATH, '/linux.sh')) - fs.copySync(path.join(__static, '/mac.applescript'), path.join(STORE_PATH, '/mac.applescript')) - fs.copySync(path.join(__static, '/windows.ps1'), path.join(STORE_PATH, '/windows.ps1')) + clipboardFiles.forEach(item => { + fs.copyFileSync(item.origin, item.dest) + }) +} else { + clipboardFiles.forEach(item => { + diffFilesAndUpdate(item.origin, item.dest) + }) +} + +function diffFilesAndUpdate (filePath1, filePath2) { + let file1 = fs.readFileSync(filePath1) + let file2 = fs.readFileSync(filePath2) + + if (!file1.equals(file2)) { + fs.copyFileSync(filePath1, filePath2) + } +} + +function getClipboardFiles () { + let files = [ + '/linux.sh', + '/mac.applescript', + '/windows.ps1' + ] + + return files.map(item => { + return { + origin: path.join(__static, item), + dest: path.join(STORE_PATH, item) + } + }) } export default db diff --git a/static/linux.sh b/static/linux.sh index 15b75ae3..191dc73e 100644 --- a/static/linux.sh +++ b/static/linux.sh @@ -1,16 +1,18 @@ -# from https://github.com/favers/vscode-qiniu-upload-image/blob/master/lib/linux.sh - #!/bin/sh - # require xclip(see http://stackoverflow.com/questions/592620/check-if-a-program-exists-from-a-bash-script/677212#677212) command -v xclip >/dev/null 2>&1 || { echo >&1 "no xclip"; exit 1; } # write image in clipboard to file (see http://unix.stackexchange.com/questions/145131/copy-image-from-clipboard-to-file) -if -xclip -selection clipboard -target image/png -o >/dev/null 2>&1 -then -xclip -selection clipboard -target image/png -o >$1 2>/dev/null -echo $1 +filePath=`xclip -selection clipboard -o 2>/dev/null | grep ^file:// | cut -c8-` +if [ ! -n "$filePath" ] ;then + if + xclip -selection clipboard -target image/png -o >/dev/null 2>&1 + then + xclip -selection clipboard -target image/png -o >$1 2>/dev/null + echo $1 + else + echo "no image" + fi else -echo "no image" -fi \ No newline at end of file + echo $filePath +fi diff --git a/static/mac.applescript b/static/mac.applescript index 91f1b82d..f1ee277e 100644 Binary files a/static/mac.applescript and b/static/mac.applescript differ diff --git a/static/windows.ps1 b/static/windows.ps1 index f52f909f..0ac3c6a5 100644 --- a/static/windows.ps1 +++ b/static/windows.ps1 @@ -4,6 +4,11 @@ param($imagePath) # Adapted from https://github.com/octan3/img-clipboard-dump/blob/master/dump-clipboard-png.ps1 Add-Type -Assembly PresentationCore +$file = Get-Clipboard -Format FileDropList +if ($file -ne $null) { + Convert-Path $file + Exit 1 +} $img = [Windows.Clipboard]::GetImage() if ($img -eq $null) { diff --git a/yarn.lock b/yarn.lock index 6cf16a5a..49628fba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6750,9 +6750,9 @@ performance-now@^2.1.0: version "2.1.0" resolved "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" -picgo@^1.2.4: - version "1.2.4" - resolved "http://registry.npm.taobao.org/picgo/download/picgo-1.2.4.tgz#d5d9f48968e60cbd0f0f628e363abd5a97d6195a" +picgo@^1.2.6: + version "1.2.6" + resolved "http://registry.npm.taobao.org/picgo/download/picgo-1.2.6.tgz#25f4d418592be36ba3fda55a32b56b8a006323bf" dependencies: chalk "^2.4.1" commander "^2.17.0"