UNPKG

@aivec/wp-docker-dev-factory

Version:

Spin up local WordPress environments with Docker.

82 lines (72 loc) 2.18 kB
import { FinalInstanceConfig } from '../types'; import { execSync } from 'child_process'; import ngrok from 'ngrok'; import logger from '../logger'; const runNgrok = async (config: FinalInstanceConfig): Promise<void> => { process.env.ngrokRunning = 'true'; process.env.containerName = config.containerName; try { execSync( `docker exec -i ${config.containerName} wp --allow-root plugin activate relative-url`, { stdio: 'inherit', }, ); } catch (e) { console.log(e); } try { execSync( `docker exec -i ${config.containerName} sed -i '/all, stop editing!/ a define("WP_SITEURL", "http://" . $_SERVER["HTTP_HOST"]);' /var/www/html/wp-config.php`, { stdio: 'inherit' }, ); execSync( `docker exec -i ${config.containerName} sed -i '/all, stop editing!/ a define("WP_HOME", "http://" . $_SERVER["HTTP_HOST"]);' /var/www/html/wp-config.php`, { stdio: 'inherit' }, ); } catch (e) { console.log(e); logger.warn('SSL is already toggled ON'); } const url = await ngrok.connect({ addr: config.containerPort, region: 'ap', onStatusChange: (status) => logger.info(status), onLogEvent: (data) => console.log(data), }); logger.info(`ngrok running at ${url}`); }; process.on('SIGINT', () => { if (!process.env.ngrokRunning) { return; } try { execSync( `docker exec -i ${process.env.containerName} wp --allow-root plugin deactivate relative-url`, { stdio: 'inherit', }, ); } catch (e) { console.log(e); } logger.warn('closing ngrok connection'); try { execSync( `docker exec -i ${process.env.containerName} grep 'define("WP_SITEURL"' wp-config.php`, { stdio: 'inherit' }, ); execSync( `docker exec -i ${process.env.containerName} sed -i '/^define("WP_HOME"/d' wp-config.php`, { stdio: 'inherit' }, ); execSync( `docker exec -i ${process.env.containerName} sed -i '/^define("WP_SITEURL"/d' wp-config.php`, { stdio: 'inherit' }, ); } catch (e) { console.log(e); logger.warn('SSL is already toggled OFF'); } }); export default runNgrok;