Commit 36a6bc08 authored by NGPixel's avatar NGPixel

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

parent 4632330d
......@@ -5,7 +5,7 @@
const Git = require('git-wrapper2-promise')
const Promise = require('bluebird')
const path = require('path')
const fs = Promise.promisifyAll(require('fs'))
const fs = Promise.promisifyAll(require('fs-extra'))
const _ = require('lodash')
const URL = require('url')
......@@ -37,7 +37,7 @@ module.exports = {
*
* @return {Object} Git model instance
*/
init () {
init() {
let self = this
// -> Build repository path
......@@ -67,7 +67,7 @@ module.exports = {
* @param {Object} appconfig The application config
* @return {Object} Promise
*/
_initRepo (appconfig) {
_initRepo(appconfig) {
let self = this
winston.info('Checking Git repository...')
......@@ -141,7 +141,7 @@ module.exports = {
*
* @return {String} The repo path.
*/
getRepoPath () {
getRepoPath() {
return this._repo.path || path.join(ROOTPATH, 'repo')
},
......@@ -150,7 +150,7 @@ module.exports = {
*
* @return {Promise} Resolve on sync success
*/
resync () {
resync() {
let self = this
// Is git remote disabled?
......@@ -165,32 +165,32 @@ module.exports = {
return self._git.pull('origin', self._repo.branch).then((cProc) => {
winston.info('Git Pull completed.')
})
.catch((err) => {
winston.error('Unable to fetch from git origin!')
throw err
})
.then(() => {
// Check for changes
.catch((err) => {
winston.error('Unable to fetch from git origin!')
throw err
})
.then(() => {
// Check for changes
return self._git.exec('log', 'origin/' + self._repo.branch + '..HEAD').then((cProc) => {
let out = cProc.stdout.toString()
return self._git.exec('log', 'origin/' + self._repo.branch + '..HEAD').then((cProc) => {
let out = cProc.stdout.toString()
if (_.includes(out, 'commit')) {
winston.info('Performing push to remote Git repository...')
return self._git.push('origin', self._repo.branch).then(() => {
return winston.info('Git Push completed.')
})
} else {
winston.info('Git Push skipped. Repository is already in sync.')
}
if (_.includes(out, 'commit')) {
winston.info('Performing push to remote Git repository...')
return self._git.push('origin', self._repo.branch).then(() => {
return winston.info('Git Push completed.')
})
} else {
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
* @return {Promise} Resolve on commit success
*/
commitDocument (entryPath, author) {
commitDocument(entryPath, author) {
let self = this
let gitFilePath = entryPath + '.md'
let commitMsg = ''
......@@ -225,18 +225,21 @@ module.exports = {
* @param {String} newEntryPath The new entry path
* @return {Promise<Boolean>} Resolve on success
*/
moveDocument (entryPath, newEntryPath) {
moveDocument(entryPath, newEntryPath) {
let self = this
let gitFilePath = entryPath + '.md'
let gitNewFilePath = newEntryPath + '.md'
let destPathObj = path.parse(this.getRepoPath() + '/' + gitNewFilePath)
return self._git.exec('mv', [gitFilePath, gitNewFilePath]).then((cProc) => {
let out = cProc.stdout.toString()
if (_.includes(out, 'fatal')) {
let errorMsg = _.capitalize(_.head(_.split(_.replace(out, 'fatal: ', ''), ',')))
throw new Error(errorMsg)
}
return true
return fs.ensureDir(destPathObj.dir).then(() => {
return self._git.exec('mv', [gitFilePath, gitNewFilePath]).then((cProc) => {
let out = cProc.stdout.toString()
if (_.includes(out, 'fatal')) {
let errorMsg = _.capitalize(_.head(_.split(_.replace(out, 'fatal: ', ''), ',')))
throw new Error(errorMsg)
}
return true
})
})
},
......@@ -246,7 +249,7 @@ module.exports = {
* @param {String} msg The commit message
* @return {Promise} Resolve on commit success
*/
commitUploads (msg) {
commitUploads(msg) {
let self = this
msg = msg || 'Uploads repository sync'
......@@ -257,7 +260,7 @@ module.exports = {
})
},
getHistory (entryPath) {
getHistory(entryPath) {
let self = this
let gitFilePath = entryPath + '.md'
......
......@@ -9,7 +9,7 @@ block rootNavRight
a.button.is-outlined(v-on:click='$store.dispatch("modalDiscardPage/open")')
i.icon-cross
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
span= t('nav.savedocument')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment