#!/usr/bin/env node /** * Copyright (c) 2017-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ const shell = require('shelljs'); const GIT_USER = process.env.GIT_USER; const CIRCLE_BRANCH = process.env.CIRCLE_BRANCH; const CIRCLE_PROJECT_USERNAME = process.env.CIRCLE_PROJECT_USERNAME; const CIRCLE_PROJECT_REPONAME = process.env.CIRCLE_PROJECT_REPONAME; const CI_PULL_REQUEST = process.env.CI_PULL_REQUEST; const remoteBranch = `https://${GIT_USER}@github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}.git`; if (!shell.which('git')) { shell.echo('Sorry, this script requires git'); shell.exit(1); } if (CI_PULL_REQUEST || CIRCLE_BRANCH !== `master`) { shell.echo('Skipping deploy'); shell.exit(0); } if (shell.exec('docusaurus-build').code) { shell.echo('Error: generating html failed'); shell.exit(1); } shell.cd(__dirname); shell.cd('..'); shell.cd('build'); if (shell.exec(`git clone ${remoteBranch} ${CIRCLE_PROJECT_REPONAME}-gh-pages`).code !== 0) { shell.echo('Error: git clone failed'); shell.exit(1); } shell.cd(`${CIRCLE_PROJECT_REPONAME}-gh-pages`); if (shell.exec('git checkout origin/gh-pages').code + shell.exec('git checkout -b gh-pages').code + shell.exec('git branch --set-upstream-to=origin/gh-pages').code !== 0 ) { shell.echo('Error: Git checkout gh-pages failed'); shell.exit(1); } shell.exec('rm -rf *'); shell.cd('../..'); shell.cp('-R', `build/${CIRCLE_PROJECT_REPONAME}/*`, `build/${CIRCLE_PROJECT_REPONAME}-gh-pages/`); shell.cd(`build/${CIRCLE_PROJECT_REPONAME}-gh-pages`); shell.exec('git add --all'); shell.exec('git commit -m "update website [ci skip]"'); if (shell.exec('git push origin gh-pages').code !== 0) { shell.echo('Error: Git push failed'); shell.exit(1); } else { shell.echo(`Website is live at: https://${CIRCLE_PROJECT_USERNAME}.github.io/${CIRCLE_PROJECT_REPONAME}/`); shell.exit(0); }