|
|
|
@ -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'
|
|
|
|
|
|
|
|
|
|