fix: move no longer crash for non-existant sub-directory dest

pull/121/merge
NGPixel 7 years ago
parent 4632330d7c
commit 36a6bc0827

@ -5,7 +5,7 @@
const Git = require('git-wrapper2-promise') const Git = require('git-wrapper2-promise')
const Promise = require('bluebird') const Promise = require('bluebird')
const path = require('path') const path = require('path')
const fs = Promise.promisifyAll(require('fs')) const fs = Promise.promisifyAll(require('fs-extra'))
const _ = require('lodash') const _ = require('lodash')
const URL = require('url') const URL = require('url')
@ -37,7 +37,7 @@ module.exports = {
* *
* @return {Object} Git model instance * @return {Object} Git model instance
*/ */
init () { init() {
let self = this let self = this
// -> Build repository path // -> Build repository path
@ -67,7 +67,7 @@ module.exports = {
* @param {Object} appconfig The application config * @param {Object} appconfig The application config
* @return {Object} Promise * @return {Object} Promise
*/ */
_initRepo (appconfig) { _initRepo(appconfig) {
let self = this let self = this
winston.info('Checking Git repository...') winston.info('Checking Git repository...')
@ -141,7 +141,7 @@ module.exports = {
* *
* @return {String} The repo path. * @return {String} The repo path.
*/ */
getRepoPath () { getRepoPath() {
return this._repo.path || path.join(ROOTPATH, 'repo') return this._repo.path || path.join(ROOTPATH, 'repo')
}, },
@ -150,7 +150,7 @@ module.exports = {
* *
* @return {Promise} Resolve on sync success * @return {Promise} Resolve on sync success
*/ */
resync () { resync() {
let self = this let self = this
// Is git remote disabled? // Is git remote disabled?
@ -165,32 +165,32 @@ module.exports = {
return self._git.pull('origin', self._repo.branch).then((cProc) => { return self._git.pull('origin', self._repo.branch).then((cProc) => {
winston.info('Git Pull completed.') winston.info('Git Pull completed.')
}) })
.catch((err) => { .catch((err) => {
winston.error('Unable to fetch from git origin!') winston.error('Unable to fetch from git origin!')
throw err throw err
}) })
.then(() => { .then(() => {
// Check for changes // Check for changes
return self._git.exec('log', 'origin/' + self._repo.branch + '..HEAD').then((cProc) => { return self._git.exec('log', 'origin/' + self._repo.branch + '..HEAD').then((cProc) => {
let out = cProc.stdout.toString() let out = cProc.stdout.toString()
if (_.includes(out, 'commit')) { if (_.includes(out, 'commit')) {
winston.info('Performing push to remote Git repository...') winston.info('Performing push to remote Git repository...')
return self._git.push('origin', self._repo.branch).then(() => { return self._git.push('origin', self._repo.branch).then(() => {
return winston.info('Git Push completed.') return winston.info('Git Push completed.')
}) })
} else { } else {
winston.info('Git Push skipped. Repository is already in sync.') winston.info('Git Push skipped. Repository is already in sync.')
} }
return true return true
})
})
.catch((err) => {
winston.error('Unable to push changes to remote Git repository!')
throw err
}) })
})
.catch((err) => {
winston.error('Unable to push changes to remote Git repository!')
throw err
})
}, },
/** /**
@ -199,7 +199,7 @@ module.exports = {
* @param {String} entryPath The entry path * @param {String} entryPath The entry path
* @return {Promise} Resolve on commit success * @return {Promise} Resolve on commit success
*/ */
commitDocument (entryPath, author) { commitDocument(entryPath, author) {
let self = this let self = this
let gitFilePath = entryPath + '.md' let gitFilePath = entryPath + '.md'
let commitMsg = '' let commitMsg = ''
@ -225,18 +225,21 @@ module.exports = {
* @param {String} newEntryPath The new entry path * @param {String} newEntryPath The new entry path
* @return {Promise<Boolean>} Resolve on success * @return {Promise<Boolean>} Resolve on success
*/ */
moveDocument (entryPath, newEntryPath) { moveDocument(entryPath, newEntryPath) {
let self = this let self = this
let gitFilePath = entryPath + '.md' let gitFilePath = entryPath + '.md'
let gitNewFilePath = newEntryPath + '.md' let gitNewFilePath = newEntryPath + '.md'
let destPathObj = path.parse(this.getRepoPath() + '/' + gitNewFilePath)
return self._git.exec('mv', [gitFilePath, gitNewFilePath]).then((cProc) => { return fs.ensureDir(destPathObj.dir).then(() => {
let out = cProc.stdout.toString() return self._git.exec('mv', [gitFilePath, gitNewFilePath]).then((cProc) => {
if (_.includes(out, 'fatal')) { let out = cProc.stdout.toString()
let errorMsg = _.capitalize(_.head(_.split(_.replace(out, 'fatal: ', ''), ','))) if (_.includes(out, 'fatal')) {
throw new Error(errorMsg) let errorMsg = _.capitalize(_.head(_.split(_.replace(out, 'fatal: ', ''), ',')))
} throw new Error(errorMsg)
return true }
return true
})
}) })
}, },
@ -246,7 +249,7 @@ module.exports = {
* @param {String} msg The commit message * @param {String} msg The commit message
* @return {Promise} Resolve on commit success * @return {Promise} Resolve on commit success
*/ */
commitUploads (msg) { commitUploads(msg) {
let self = this let self = this
msg = msg || 'Uploads repository sync' msg = msg || 'Uploads repository sync'
@ -257,7 +260,7 @@ module.exports = {
}) })
}, },
getHistory (entryPath) { getHistory(entryPath) {
let self = this let self = this
let gitFilePath = entryPath + '.md' let gitFilePath = entryPath + '.md'

@ -9,7 +9,7 @@ block rootNavRight
a.button.is-outlined(v-on:click='$store.dispatch("modalDiscardPage/open")') a.button.is-outlined(v-on:click='$store.dispatch("modalDiscardPage/open")')
i.icon-cross i.icon-cross
span= t('nav.discard') span= t('nav.discard')
a.button(v-on:click='$root.$emit("editor-save")') a.button(v-on:click='$root.$emit("editor/save")')
i.icon-check i.icon-check
span= t('nav.savedocument') span= t('nav.savedocument')

Loading…
Cancel
Save