sugos-travis
Version:
Scripts for Travis CI
59 lines (52 loc) • 1.69 kB
JavaScript
/**
* Travis CI 上で他のリポジトリに空 git push する。ただし .npmignore に記載されたファイルの変更のみの場合は無視する。
* @function pushOtherRepository
* @param {Object} options - Optional settings
* @returns {Promise}
*/
const co = require('co')
const defaults = require('defaults')
const { runTasks } = require('ape-tasking')
const exec = require('./util/exec')
const {hasLibraryDiff, setGitConfig, setGithubConfig, isEmptyCommit, checkCiEnv} = require('./util')
const {TRAVIS_REPO_SLUG} = process.env
/** @lends pushOtherRepository */
function pushOtherRepository (options = {}) {
let { taskName, repository, force } = defaults(options, {
taskName: 'Push other repository on Travis CI',
repository: null,
force: false
})
if (!repository) {
throw new Error('Repository name is required in the argument options')
}
return runTasks(taskName, [
checkCiEnv,
() => co(function * () {
let shouldSkip = !force && !hasLibraryDiff() && !isEmptyCommit()
if (shouldSkip) {
return
}
setGitConfig()
setGithubConfig()
clone(repository)
setGitConfig({ cwd: `/tmp/${repository}` })
push(repository)
})
], false)
}
function clone (repository) {
// とりあえず realglobe-Inc のみ
exec(`git clone https://github.com/realglobe-Inc/${repository}.git`, {cwd: '/tmp'})
}
function push (repository) {
let commands = [
`git commit --allow-empty -m "Kick from ${TRAVIS_REPO_SLUG}"`,
'git push origin master'
]
for (let command of commands) {
exec(command, {cwd: `/tmp/${repository}`})
}
}
module.exports = pushOtherRepository