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