Repository: ahmadawais/wp-continuous-deployment Branch: master Commit: 6bdf0b24c6ea Files: 22 Total size: 44.0 KB Directory structure: gitextract_e_zysvqr/ ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .npmrc ├── changelog.md ├── code-of-conduct.md ├── index.js ├── license ├── package.json ├── readme.md ├── template/ │ ├── assets.yml │ └── release.yml ├── test.js └── utils/ ├── downloadAssets.js ├── exitClone.js ├── finishLine.js ├── handleError.js ├── handleTemplate.js ├── query.js ├── sbx.js ├── shouldCancel.js └── welcome.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true [*] indent_style = tab end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.yml] indent_style = space indent_size = 2 ================================================ FILE: .gitattributes ================================================ * text=auto eol=lf ================================================ FILE: .gitignore ================================================ # NPM # ########## # Ignore all directories called node_modules in current folder and any subfolders. node_modules/ /node_modules/ # Packages # ############ *.7z *.dmg *.gz *.bz2 *.iso *.jar *.rar *.tar *.zip *.tgz *.map # Logs and databases # ###################### *.log *.sql *.env # OS generated files # ###################### **.DS_Store* ehthumbs.db Icon? Thumbs.db ._* # Vim generated files # ###################### *.un~ # SASS # ########## **/.sass-cache **/.sass-cache/* **/.map # Composer # ########## !assets/js/vendor/ wpcs/ /vendor/ # Bower # ########## assets/bower_components/* # Codekit # ########## /codekit-config.json *.codekit **.codekit-cache/* # Compiled Files and Build Dirs # ########## /README.html # PhpStrom Project Files # .idea/ library/vendors/composer assets/img/.DS_Store # No lock files. package-lock.json yarn.lock ================================================ FILE: .npmrc ================================================ package-lock=false ================================================ FILE: changelog.md ================================================ # CHANGELOG All notable changes in this project's [released versions](../../releases) are documented in this file. [![VSCode](https://img.shields.io/badge/-VSCode.pro%20%E2%86%92-gray.svg?colorB=4D2AFF)](https://VSCode.pro/?utm_source=GitHubFOSS) [![Ahmad on Twitter](https://img.shields.io/twitter/follow/mrahmadawais.svg?style=social&label=Follow%20@MrAhmadAwais)](https://twitter.com/mrahmadawais/)
I have released a video course to help you become a better developer — Become a VSCode Power User →


VSCode

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/) **CHANGELOG KEY**: `📦 NEW`, `👌 IMPROVE`, `🐛 FIX`, `📖 DOC`, `🚀 RELEASE`, and `✅ TEST` > _I use [Emoji-log](https://github.com/ahmadawais/Emoji-Log), you should try it and simplify your git commits._
[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.7.1](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.7.0...1.7.1)
[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.7.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.6.0...1.7.0) ![📦 NEW:](https://img.shields.io/badge/-NEW-gray.svg?colorB=3778FF) > 📦 Git test [`a54032c`](https://github.com/ahmadawais/wp-continuous-deployment/commit/a54032ceb30049ef581aa9280d688860ddcbf16e)
> 📦 Dir option [`06438b5`](https://github.com/ahmadawais/wp-continuous-deployment/commit/06438b59cefd75b7d915023ea638bd09c6d8b102)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`0a8c652`](https://github.com/ahmadawais/wp-continuous-deployment/commit/0a8c6520524fc5b03d392d72b07c41cc9bc6ddda)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.6.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.5.1...1.6.0) ![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Typo + Brand color [`a4a38d5`](https://github.com/ahmadawais/wp-continuous-deployment/commit/a4a38d5b3b907d34377cbc25e616870f26bcad14)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`283ef0b`](https://github.com/ahmadawais/wp-continuous-deployment/commit/283ef0be72981d2f9da273028e522eb8300661b8)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.5.1](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.4.0...1.5.1) ![👌 IMPROVE:](https://img.shields.io/badge/-IMPROVEMENT-gray.svg?colorB=39AA54) > 👌 Merge branch 'master' [`5dcc34e`](https://github.com/ahmadawais/wp-continuous-deployment/commit/5dcc34e5b4884b2ffffe8112ea7f0e517f0b4ef2)
![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Typo [`27d8206`](https://github.com/ahmadawais/wp-continuous-deployment/commit/27d82062fda5a82f185a61214ed70cc29787d266)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`e2e9368`](https://github.com/ahmadawais/wp-continuous-deployment/commit/e2e93685ea6fb23d85c1bd7d63963025bd7caea8)
> 📖 Changelog update [`e5fc723`](https://github.com/ahmadawais/wp-continuous-deployment/commit/e5fc723ea7b0b83ae21572c4e928de8136e5299d)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.4.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.3.0...1.4.0) ![📦 NEW:](https://img.shields.io/badge/-NEW-gray.svg?colorB=3778FF) > 📦 Deps update [`13890eb`](https://github.com/ahmadawais/wp-continuous-deployment/commit/13890eb71601517ec635e20d69f3f81966b57de7)
![👌 IMPROVE:](https://img.shields.io/badge/-IMPROVEMENT-gray.svg?colorB=39AA54) > 👌 Lingo [`84a1021`](https://github.com/ahmadawais/wp-continuous-deployment/commit/84a10219ea9b53b3a406c7fa57d8fa18862dc4ac)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`ebd2fe9`](https://github.com/ahmadawais/wp-continuous-deployment/commit/ebd2fe9302768b66a049594bcef950fb1dd56d5b)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.3.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.2.0...1.3.0) ![📦 NEW:](https://img.shields.io/badge/-NEW-gray.svg?colorB=3778FF) > 📦 Gif [`e436940`](https://github.com/ahmadawais/wp-continuous-deployment/commit/e436940b13c051065e526d86138e083efe80962a)
![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Typos [`ff02c14`](https://github.com/ahmadawais/wp-continuous-deployment/commit/ff02c14b89816529df7d4842a270571daabf990a)
> 🐛 Bad instruction [`9922e33`](https://github.com/ahmadawais/wp-continuous-deployment/commit/9922e336514c1e478d471c21fe8a0c5f5a459806)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`3571696`](https://github.com/ahmadawais/wp-continuous-deployment/commit/35716966deced7daed41366f4ea59618a05c1482)
> 📖 Lingo Format [`cb40880`](https://github.com/ahmadawais/wp-continuous-deployment/commit/cb40880042272a810e651c4acde57f5b1153be42)
> 📖 Lingo [`d510525`](https://github.com/ahmadawais/wp-continuous-deployment/commit/d510525a6141513bf59adb6fce86254d448a1805)
> 📖 Name [`4205a98`](https://github.com/ahmadawais/wp-continuous-deployment/commit/4205a986403066cca33423e014ca9987322af48b)
> 📖 Gif or didn't happen [`f6eac9f`](https://github.com/ahmadawais/wp-continuous-deployment/commit/f6eac9fd483375b6c3c8e4ae0ccd3607b37cf769)
> 📖 Credits [`a6e5d12`](https://github.com/ahmadawais/wp-continuous-deployment/commit/a6e5d1285d703877d4c5959023188500869fc4b6)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.2.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.1.0...1.2.0) ![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Extraneous logs and modules [`cd68d60`](https://github.com/ahmadawais/wp-continuous-deployment/commit/cd68d6087b1d2fff12e94251a3976a471f64a112)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`e01cec6`](https://github.com/ahmadawais/wp-continuous-deployment/commit/e01cec6b5187e70b57d15b2f1bc6aa1306bf1ea4)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.1.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.0.3...1.1.0) ![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Current working dir [`28f6538`](https://github.com/ahmadawais/wp-continuous-deployment/commit/28f6538e81ad12f36b5241cd283b3abebdbbeb7c)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`9c25267`](https://github.com/ahmadawais/wp-continuous-deployment/commit/9c25267aee2ff2369f8c8869f46aed92242f8100)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.0.3](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.0.2...1.0.3) ![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Current working dir [`9d6c72e`](https://github.com/ahmadawais/wp-continuous-deployment/commit/9d6c72e975479aa1f3bcc2d0e0e9b41b8fc935bc)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`12cf7c9`](https://github.com/ahmadawais/wp-continuous-deployment/commit/12cf7c95fd4831495b7fa2b0274eda0b5f962feb)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.0.2](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.0.1...1.0.2) ![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Download Dir [`fcb1d6d`](https://github.com/ahmadawais/wp-continuous-deployment/commit/fcb1d6dcf0aa96d24dda641aeccb3897897f8184)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`2184fd6`](https://github.com/ahmadawais/wp-continuous-deployment/commit/2184fd6e78c9c6db32b585c2d1d2b8fa1a847610)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.0.1](https://github.com/ahmadawais/wp-continuous-deployment/compare/1.0.0...1.0.1) ![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`eaabd43`](https://github.com/ahmadawais/wp-continuous-deployment/commit/eaabd43c2c2f86aa98dedb80cffa38f94c310710)
> 📖 General Availability [`9f3d8e2`](https://github.com/ahmadawais/wp-continuous-deployment/commit/9f3d8e2e0142872ea20a6f1000f89bf27bf9c5d4)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [1.0.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.9.2...1.0.0) ![📦 NEW:](https://img.shields.io/badge/-NEW-gray.svg?colorB=3778FF) > 📦 Empty Dir [`5b33c69`](https://github.com/ahmadawais/wp-continuous-deployment/commit/5b33c697325a809d3570504e402b83808d0e2dba)
![👌 IMPROVE:](https://img.shields.io/badge/-IMPROVEMENT-gray.svg?colorB=39AA54) > 👌 Sync downloads [`6b9bc9e`](https://github.com/ahmadawais/wp-continuous-deployment/commit/6b9bc9ec44664ce149ff64666c325ff81f2016f2)
> 👌 Finish line messages [`5e90ddd`](https://github.com/ahmadawais/wp-continuous-deployment/commit/5e90ddd18d78f2e79eb75f2cbdefee2f546e45c1)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Improve instructions [`09ca108`](https://github.com/ahmadawais/wp-continuous-deployment/commit/09ca108bb553f3089906b049ab3a40d0377b6a5a)
> 📖 Changelog update [`6d4560e`](https://github.com/ahmadawais/wp-continuous-deployment/commit/6d4560e24b62d1411d74598fea0a8211cbf97aa5)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.9.2](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.9.1...0.9.2) ![👌 IMPROVE:](https://img.shields.io/badge/-IMPROVEMENT-gray.svg?colorB=39AA54) > 👌 Rename the build [`e0c0204`](https://github.com/ahmadawais/wp-continuous-deployment/commit/e0c02049797c6328a0317aef4817f77d640d8bd6)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`e0541a7`](https://github.com/ahmadawais/wp-continuous-deployment/commit/e0541a784fb2446fbf1672e878db52331f461a07)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.9.1](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.9.0...0.9.1) ![👌 IMPROVE:](https://img.shields.io/badge/-IMPROVEMENT-gray.svg?colorB=39AA54) > 👌 Slug situation [`ed69f91`](https://github.com/ahmadawais/wp-continuous-deployment/commit/ed69f916f1edeb887663309bb96deb652c1b43b0)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`1e1e57a`](https://github.com/ahmadawais/wp-continuous-deployment/commit/1e1e57af01e1b2ce8e9af1f553e0b8ac1df300e0)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.9.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.8.0...0.9.0) ![👌 IMPROVE:](https://img.shields.io/badge/-IMPROVEMENT-gray.svg?colorB=39AA54) > 👌 Docs [`de5d639`](https://github.com/ahmadawais/wp-continuous-deployment/commit/de5d6394512f4b12ef1159c3fcbc2e97003eeebd)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`4eb97e9`](https://github.com/ahmadawais/wp-continuous-deployment/commit/4eb97e9183b1566aed542b3d6e1e7c41be8569ae)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.8.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.7.0...0.8.0) ![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Workflows directory [`0fb3fe2`](https://github.com/ahmadawais/wp-continuous-deployment/commit/0fb3fe2a836457e9e7f570045e261fae7cdbb324)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`5868483`](https://github.com/ahmadawais/wp-continuous-deployment/commit/5868483aad2017d373b76d5b9fe16ab0d1b159ee)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.7.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.6.0...0.7.0) ![👌 IMPROVE:](https://img.shields.io/badge/-IMPROVEMENT-gray.svg?colorB=39AA54) > 👌 Docs grammar [`15202a0`](https://github.com/ahmadawais/wp-continuous-deployment/commit/15202a0decab1cb0c9b06dce1a0570fafd397794)
> 👌 Lingo [`5ab640b`](https://github.com/ahmadawais/wp-continuous-deployment/commit/5ab640b1a9c8976d702afd1c03aad02437f3975d)
> 👌 Syntax format [`9f03858`](https://github.com/ahmadawais/wp-continuous-deployment/commit/9f038580e7224a01b105481467f72aa51e512ea2)
![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Workflows [`1b79674`](https://github.com/ahmadawais/wp-continuous-deployment/commit/1b79674e79a2ad0d75271ddcd9471c292fbad20a)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`16ac479`](https://github.com/ahmadawais/wp-continuous-deployment/commit/16ac479136520993ea8ef94e227f566cd77cd602)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.6.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.5.0...0.6.0) ![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 New release docs [`a3d7e4e`](https://github.com/ahmadawais/wp-continuous-deployment/commit/a3d7e4e024441abec3a58ccb48051f2536160902)
> 📖 Changelog update [`d1de036`](https://github.com/ahmadawais/wp-continuous-deployment/commit/d1de03638f67888b5ac680cd89f4a8b87bcd808e)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.5.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.4.0...0.5.0) ![📦 NEW:](https://img.shields.io/badge/-NEW-gray.svg?colorB=3778FF) > 📦 Download Assets [`47e977d`](https://github.com/ahmadawais/wp-continuous-deployment/commit/47e977d6b04b91e6f027e3f1e4d663f771bfd4d7)
> 📦 Automated GitHub Origin URL [`ead338a`](https://github.com/ahmadawais/wp-continuous-deployment/commit/ead338aa6296c0a9bb194c0abf629602c3e88f76)
![👌 IMPROVE:](https://img.shields.io/badge/-IMPROVEMENT-gray.svg?colorB=39AA54) > 👌 Refactor [`a6186d0`](https://github.com/ahmadawais/wp-continuous-deployment/commit/a6186d0070e999249d067b6eee5abe02226e8711)
> 👌 Lingo [`72828a1`](https://github.com/ahmadawais/wp-continuous-deployment/commit/72828a15819b9ff73377f4a63182cb50b68dc2ff)
> 👌 Syntax format [`48f5fe7`](https://github.com/ahmadawais/wp-continuous-deployment/commit/48f5fe7acb0ae0cc07148248f4ef70d0c1ce9e8b)
> 👌 Refactor welcome [`79d6cc2`](https://github.com/ahmadawais/wp-continuous-deployment/commit/79d6cc24592bff549481ec7a1797a41a290d37ea)
> 👌 Clean logs [`a8c50a6`](https://github.com/ahmadawais/wp-continuous-deployment/commit/a8c50a6688789689c6b8e9111e03b4862e77b0f9)
![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Dynamic link [`bed5dbf`](https://github.com/ahmadawais/wp-continuous-deployment/commit/bed5dbf59e3e2f00174ec5c35167a24a2497ae55)
> 🐛 Extraneous [`d6dcb1d`](https://github.com/ahmadawais/wp-continuous-deployment/commit/d6dcb1da9ec028aab817b180855efa9c8c76bf4d)
> 🐛 Extraneous [`1ead08d`](https://github.com/ahmadawais/wp-continuous-deployment/commit/1ead08d6ce4bd091645ac14653f785cc924e7371)
> 🐛 Log [`ccd0637`](https://github.com/ahmadawais/wp-continuous-deployment/commit/ccd0637b0b276b2483f1b5917bd9018f404bdc3b)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`12685cd`](https://github.com/ahmadawais/wp-continuous-deployment/commit/12685cda0676288ace7954bfccf824e2979c99ce)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.4.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.3.0...0.4.0) ![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Files [`29199a0`](https://github.com/ahmadawais/wp-continuous-deployment/commit/29199a08781563e28f431aaa791f9be6b413504c)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`a061598`](https://github.com/ahmadawais/wp-continuous-deployment/commit/a061598c31595a3376b6474b799587149ab65969)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.3.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.2.0...0.3.0) ![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Extraneous [`0110d54`](https://github.com/ahmadawais/wp-continuous-deployment/commit/0110d54beebe502477e8893b2994c340c33a2c77)
> 🐛 Paths [`039b966`](https://github.com/ahmadawais/wp-continuous-deployment/commit/039b9663232fba76915747f175efe26b1c77838d)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`77ba867`](https://github.com/ahmadawais/wp-continuous-deployment/commit/77ba86773d3e3cf40fa5e6ec71482d6fd1561fca)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: [0.2.0](https://github.com/ahmadawais/wp-continuous-deployment/compare/0.1.0...0.2.0) ![📦 NEW:](https://img.shields.io/badge/-NEW-gray.svg?colorB=3778FF) > 📦 Bin script [`dcd8cc3`](https://github.com/ahmadawais/wp-continuous-deployment/commit/dcd8cc30f5487e522e203e73d3d6c6ecd3335347)
![👌 IMPROVE:](https://img.shields.io/badge/-IMPROVEMENT-gray.svg?colorB=39AA54) > 👌 First version [`6899a19`](https://github.com/ahmadawais/wp-continuous-deployment/commit/6899a19a26fb8718772e876c3b594163610a34b0)
> 👌 Modules [`c3cc26e`](https://github.com/ahmadawais/wp-continuous-deployment/commit/c3cc26ec3e423f5a4110488e03fef42cb4fbc08a)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`9e18d64`](https://github.com/ahmadawais/wp-continuous-deployment/commit/9e18d6427fc2c26b3cbcd81ad9e60639266c9a37)
> 📖 WIP [`548899f`](https://github.com/ahmadawais/wp-continuous-deployment/commit/548899fad3dfac9b8956ea272ef7aa826d59be86)

[![hr](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/hr.png)](/)
### RELEASE: 0.1.0 ![📦 NEW:](https://img.shields.io/badge/-NEW-gray.svg?colorB=3778FF) > 📦 First commit [`fb21981`](https://github.com/ahmadawais/wp-continuous-deployment/commit/fb21981521c8d5c5d143ae6c78daeb5ba1d16069)
> 📦 Welcome [`cad1d7c`](https://github.com/ahmadawais/wp-continuous-deployment/commit/cad1d7c19f55e22e8fe33adaeee39799952f2784)
![🐛 FIX:](https://img.shields.io/badge/-FIX-gray.svg?colorB=ff6347) > 🐛 Version [`1a57907`](https://github.com/ahmadawais/wp-continuous-deployment/commit/1a57907a7895229a4d70fd6cbf55784d4096fa7a)
![📖 DOC:](https://img.shields.io/badge/-DOCS-gray.svg?colorB=978CD4) > 📖 Changelog update [`6d64df2`](https://github.com/ahmadawais/wp-continuous-deployment/commit/6d64df2fc6f54f1af861b73f8a51a2dfe93f973a)


[![📃](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/license.png)](/) ## License & Conduct - MIT © [Ahmad Awais](https://twitter.com/MrAhmadAwais/) - [Code of Conduct](code-of-conduct.md)
[![🙌](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/connect.png)](/) ## Connect

GitHub @AhmadAwais (follow) TO STAY UP TO DATE ON FREE & OPEN SOURCE SOFTWARE

Twitter @MrAhmadAwais (follow) TO GET ONE DEV MINUTE DAILY HOT TIPS & TROLLS

YouTube AhmadAwais (subscribe) TO TECH TALKS & ONE DEV MINUTE VIDEOS

Blog: AhmadAwais.com (read) MOSTLY LONG FORM TECHNICAL ARTICLES

LinkedIn @MrAhmadAwais (connect) WITH THE LINKEDIN PROFILE Y'ALL


[![👌](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/sponsor.png)](/) ## Sponsor Me ([Ahmad Awais](https://twitter.com/mrahmadawais/)) and my incredible wife ([Maedah Batool](https://twitter.com/MaedahBatool/)) are two engineers who fell in love with open source and then with each other. You can read more [about me here](https://ahmadawais.com/about). If you or your company use any of my projects or like what I’m doing then consider backing me. I'm in this for the long run. An open-source developer advocate. - 🌟 **$9.99/month (recommended)** ❯ [Two cups of Caffè latte (coffee) every month →](https://pay.paddle.com/checkout/540217) - 🚀 **$99.99 (one-time sponsor)** ❯ [Support an hour of open-source code →](https://pay.paddle.com/checkout/515568) - 🔰 **$49.99 (one-time sponsor)** ❯ [Support an hour of maintenance →](https://pay.paddle.com/checkout/527253) - ☕️ **$9.99 (one-time sponsor)** ❯ [Lunch/coffee →](https://pay.paddle.com/checkout/527254)
Or you can back me by checking out my super fun video course. As developers, we spend over 200 Hrs/month with our code editors — it's only fair to learn your next editor deeply. This course will save you 15-20 hours every month. Become a VSCode Power User


VSCODE

[![VSCode](https://img.shields.io/badge/-VSCode.pro%20%E2%86%92-gray.svg?colorB=4D2AFF&style=flat)](https://VSCode.pro/?utm_source=GitHubFOSS) [![Ahmad on Twitter](https://img.shields.io/twitter/follow/mrahmadawais.svg?style=social&label=Follow%20@MrAhmadAwais)](https://twitter.com/mrahmadawais/) ================================================ FILE: code-of-conduct.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at me@AhmadAwais.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version] [homepage]: https://contributor-covenant.org [version]: https://contributor-covenant.org/version/1/4/ ================================================ FILE: index.js ================================================ #!/usr/bin/env node // Makes the script crash on unhandled rejections instead of silently // ignoring them. In the future, promise rejections that are not handled will // terminate the Node.js process with a non-zero exit code. process.on('unhandledRejection', err => { handleError(`UNHANDLED ERROR`, err); }); const ora = require('ora'); const spinner = ora({ text: '' }); const chalk = require('chalk'); const to = require('await-to-js').default; const handlebars = require('handlebars'); const { Toggle, prompt } = require('enquirer'); const gitRemoteOriginUrl = require('git-remote-origin-url'); const handleError = require('./utils/handleError.js'); const welcome = require('./utils/welcome.js'); const finishLine = require('./utils/finishLine.js'); const handleTemplate = require('./utils/handleTemplate.js'); const shouldCancel = require('./utils/shouldCancel.js'); const exitClone = require('./utils/exitClone.js'); const downloadAssets = require('./utils/downloadAssets.js'); const gParse = require('git-url-parse'); const isItGit = require('is-it-git'); const dim = chalk.dim; const yellow = chalk.bold.yellow; const green = chalk.bold.green; handlebars.registerHelper('raw-helper', options => options.fn()); (async () => { welcome(); // Root. const promptClone = new Toggle({ name: `clone`, message: `Are you running this in the root directory of your WordPress plugin's GitHub repo clone?` }); const [errClone, clone] = await to(promptClone.run()); handleError(`FAILED ON CLONE`, errClone); await shouldCancel(clone); // Moving forward. exitClone(clone); exitClone(isItGit()); // Slug. const promptSlug = { type: `input`, name: `wpslug`, initial: `cf7-customizer`, message: `What is your WordPress.org plugin slug?\n${dim( `It's the last part of the URL, after ${dim(`"https://wordpress.org/plugins/"`)} e.g.` )}` }; const [errSlug, wpslug] = await to(prompt(promptSlug)); handleError(`FAILED ON SLUG`, errSlug); await shouldCancel(wpslug); const slug = wpslug.wpslug; // GitHub. const getGitHubUrl = await gitRemoteOriginUrl(); const urlObj = getGitHubUrl ? gParse(getGitHubUrl) : false; const gitHubUrl = urlObj ? `https://github.com/${urlObj.owner}/${urlObj.name}` : false; if (!gitHubUrl) { const promptUrl = { type: `input`, name: `url`, initial: `https://github.com/owner/repo`, message: `What is your plugin's GitHub repository URL?` }; const [errUrl, url] = await to(prompt(promptUrl)); handleError(`FAILED ON GITHUB URL`, errUrl); await shouldCancel(url); gitHubUrl = url.url; } spinner.start(`${yellow(`GITHUB ACTIONS`)} creating…`); handleTemplate(slug); spinner.succeed(`${green(`GITHUB ACTIONS`)} created`); const hasAssets = await downloadAssets(slug, spinner); finishLine(slug, gitHubUrl, hasAssets); })(); ================================================ FILE: license ================================================ The MIT License (MIT) Copyright (c) 2020-present Ahmad Awais. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: package.json ================================================ { "name": "wp-continuous-deployment", "version": "1.7.1", "description": "Continuous-Deployment for WordPress plugins with GitHub actions", "license": "MIT", "repository": "ahmadawais/wp-continuous-deployment", "author": { "name": "Ahmad Awais", "email": "me@AhmadAwais.com", "url": "https://twitter.com/MrAhmadAwais" }, "keywords": [ "wp-continuous-deployment", "Ahmad Awais", "ahmadawais" ], "bin": { "wp-continuous-deployment": "./index.js" }, "dependencies": { "@scarf/scarf": "^1.0.6", "arrify": "^2.0.1", "await-to-js": "^2.1.1", "axios": "^0.19.2", "chalk": "^3.0.0", "cli-welcome": "^1.4.0", "download": "^7.1.0", "enquirer": "^2.3.4", "get-urls": "^9.2.0", "git-remote-origin-url": "^3.1.0", "git-url-parse": "^11.1.2", "handlebars": "^4.7.3", "is-dir-empty": "^1.1.0", "is-it-git": "^1.1.0", "log-symbols": "^3.0.0", "make-dir": "^3.0.2", "ora": "^4.0.3" }, "devDependencies": { "clear-any-console": "^1.16.0" }, "scripts": { "start": "node index.js", "test": "node test.js", "sbx": "node ./utils/sbx.js", "clean": "rm -rf '.github' && rm -rf '.wordpress-org'" } } ================================================ FILE: readme.md ================================================ # WP Continuous Deployment [![DOWNLOADS](https://img.shields.io/npm/dt/wp-continuous-deployment?label=DOWNLOADS%20%20❯&colorA=6A788D&colorB=6A788D&style=flat)](https://www.npmjs.com/package/wp-continuous-deployment) [![Learn VSCode](https://img.shields.io/badge/-VSCODE.pro%20%E2%86%92-gray.svg?colorB=6A788D&style=flat)](https://VSCode.pro/?utm_source=GitHubFOSS) [![Follow @MrAhmadAwais on Twitter](https://img.shields.io/badge/FOLLOW%20@MRAHMADAWAIS%20%E2%86%92-gray.svg?colorA=6A788D&colorB=6A788D&style=flat)](https://twitter.com/mrahmadawais/) > DevOps free Continuous-Deployment pipeline for WordPress plugins with GitHub Actions.
[![📟](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/install.png)](./../../) ## Install ```sh npx wp-continuous-deployment ```
[![⚙️](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/usage.png)](./../../) ## Usage ### ❯ BEFORE 1. Make sure your plugin is on WordPress.org 2. Put your WordPress plugin on GitHub 3. Clone the GitHub repo in your PC and browse it with command line 4. Run `npx wp-console-deployment` in the root directory of the cloned GitHub repo ```sh npx wp-continuous-deployment ``` ### ❯ ONE-TIME SETUP - Follow the instructions, set the slug of your plugin which is the last part of the URL, e.g., for my plugin wordpress.org/plugins/cf7-customizer/ the slug is `cf7-customizer` - Add you WordPress.org SVN username/password (it's the same credentials you use for login.WordPress.org) in your plugin's GitHub repository settings. - Go to `https://github.com/owner/repo/settings/secrets` make sure to change the `owner/repo` part. ![secrets](https://on.ahmda.ws/3a3b87/c) ### ❯ AFTER 1. All your plugin assets must have been downloaded in the `.wordpress-org` directory 2. Now for each commit/push to master your assets & readme will get deployed (provided there are no other files modified. If other files are changed the build will be canceled) 3. And for each new tag/push, a new version of the plugin will be deployed 4. So, go ahead, make changes, git commit, and then run: `git tag 2.0.0 && git push --tags` — considering 2.0.0 is the new version
[![📝](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/log.png)](changelog.md) ## Changelog [❯ Read the changelog here →](changelog.md)
**KEY**: `📦 NEW`, `👌 IMPROVE`, `🐛 FIX`, `📖 DOC`, `🚀 RELEASE`, and `✅ TEST` > _I use [Emoji-log](https://github.com/ahmadawais/Emoji-Log), you should try it and simplify your git commits._
[![📃](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/license.png)](./../../) ## License & Conduct - MIT © [Ahmad Awais](https://twitter.com/MrAhmadAwais/) - [Code of Conduct](code-of-conduct.md) - Thank you, 10up & Helen for the awesome GitHub Actions
[![🙌](https://raw.githubusercontent.com/ahmadawais/stuff/master/images/git/connect.png)](./../../) ## Connect

GitHub @AhmadAwais (follow) To stay up to date on free & open-source software

Twitter @MrAhmadAwais (follow) To get #OneDevMinute daily hot tips & trolls

YouTube AhmadAwais (subscribe) To tech talks & #OneDevMinute videos

Blog: AhmadAwais.com (read) In-depth & long form technical articles

LinkedIn @MrAhmadAwais (connect) On the LinkedIn profile y'all

================================================ FILE: template/assets.yml ================================================ name: "👌 IMPROVE: Assets or readme" on: push: branches: - master jobs: master: name: "build" runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: WordPress.org plugin asset/readme update uses: 10up/action-wordpress-plugin-asset-update@master env: GITHUB_TOKEN: ${{{{raw-helper}}}}{{ secrets.GITHUB_TOKEN }}{{{{/raw-helper}}}} SVN_USERNAME: ${{{{raw-helper}}}}{{ secrets.SVN_USERNAME }}{{{{/raw-helper}}}} SVN_PASSWORD: ${{{{raw-helper}}}}{{ secrets.SVN_PASSWORD }}{{{{/raw-helper}}}} SLUG: "{{slug}}" ================================================ FILE: template/release.yml ================================================ name: "🚀 RELEASE: To WordPress.org" on: push: tags: - "*" jobs: tag: name: "build" runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: WordPress Plugin Deploy uses: 10up/action-wordpress-plugin-deploy@master env: GITHUB_TOKEN: ${{{{raw-helper}}}}{{ secrets.GITHUB_TOKEN }}{{{{/raw-helper}}}} SVN_USERNAME: ${{{{raw-helper}}}}{{ secrets.SVN_USERNAME }}{{{{/raw-helper}}}} SVN_PASSWORD: ${{{{raw-helper}}}}{{ secrets.SVN_PASSWORD }}{{{{/raw-helper}}}} SLUG: "{{slug}}" ================================================ FILE: test.js ================================================ const wpContinuousDeployment = require('./index.js'); wpContinuousDeployment(); ================================================ FILE: utils/downloadAssets.js ================================================ const path = require("path"); const chalk = require("chalk"); const axios = require("axios"); const green = chalk.bold.green; const yellow = chalk.bold.yellow; const arrify = require("arrify"); const getUrls = require("get-urls"); const download = require("download"); const to = require("await-to-js").default; const logSymbols = require("log-symbols"); const handleError = require("./handleError.js"); const isDirEmpty = require("is-dir-empty"); const dest = path.resolve(process.cwd(), "./.wordpress-org/"); module.exports = async (slug, spinner) => { spinner.start(`${yellow(`ASSETS`)} finding…`); const url = `https://ps.w.org/${slug}/assets/`; const [errRes, res] = await to(axios.get(url)); // handleError("FAILED ON ASSETS", errRes); // Not needed. if (errRes) { spinner.warn(`${yellow(`No ASSETS`)} found`); } else { const urlData = res.data.replace( /href="/g, `href="https://ps.w.org/${slug}/assets/` ); const getLinks = arrify(getUrls(urlData)); // Remove the first and last. const buildLinks = getLinks.slice(1, getLinks.length - 1); // Remove the languages link. const links = buildLinks.filter( link => link !== `https://ps.w.org/${slug}/assets/languages` ); spinner.succeed( `${green(`ASSETS`)} found ${links.length} asset${ links.length > 1 ? `s` : `` }` ); spinner.start(`${yellow(`ASSETS`)} downloading…`); const [errDown, down] = await to( Promise.all( links.map(async (link, i) => { await download(link, dest); spinner.start( `${yellow(`ASSETS`)} downloading ${i + 1}/${links.length}…` ); }) ) ); handleError("FAILED ON FILE DOWNLOADS", errDown); spinner.succeed( `${green(`ASSETS`)} downloaded ${links.length}/${links.length}` ); } // Check if assets were downloaded. const isEmpty = await isDirEmpty(dest); // Return true if not empty. return !isEmpty; }; ================================================ FILE: utils/exitClone.js ================================================ const logSymbols = require("log-symbols"); const chalk = require("chalk"); const green = chalk.bold.green; const red = chalk.bold.red; const yellow = chalk.bold.yellow; module.exports = clone => { if (!clone) { console.log(`${red(`${logSymbols.error} Nops. You're doing it wrong.`)}`); console.log( yellow(` ${logSymbols.info} Follow these steps: 1. Put your WordPress plugin on GitHub (https://repo.new) 2. Clone the GitHub repo in your PC and browse it with command line 3. Run ${green( `npx wp-console-deployment` )} in the root directory of the cloned repo `) ); process.exit(0); } }; ================================================ FILE: utils/finishLine.js ================================================ const chalk = require("chalk"); const logSymbols = require("log-symbols"); const dim = chalk.dim; const green = chalk.bold.green; const yellow = chalk.bold.yellow; // Final notice. module.exports = (slug, url, hasAssets) => { console.log( `${logSymbols.success} ${green(`…and that was it.`)} ${yellow( `Wait, a couple more things to set up` )}` ); console.log(`\n${logSymbols.info} ${yellow(`One-time setup:`)} Remember the username and password you use at https://login.WordPress.org ❯❯ Go to ${dim(`${url}/settings/secrets`)} 1. Click "Add New Secret" add name ${green( `SVN_USERNAME` )} and fill the value with your username 2. Click "Add New Secret" again; add name ${green( `SVN_PASSWORD` )} and fill the value with your password`); console.log(`\n${logSymbols.success} ${green(`Now what?!`)}`); if (!hasAssets) { console.log( `- Make sure all plugin assets were downloaded to the ${green( `.wordpress-org` )} directory\n- Or manually download from ${dim( `https://ps.w.org/${slug}/` )} (if exists) ${dim(`assets`)} directory` ); } console.log(`- Now for each commit/push to master your assets & readme will get deployed - And for each new tag/push a new version of plugin will be deployed - So, go ahead, make change, git commit, and then run: ${green(`git tag 2.0.0 && git push --tags`)} ${dim(`# Considering 2.0.0 is the new version`)} `); }; ================================================ FILE: utils/handleError.js ================================================ const ora = require("ora"); const chalk = require("chalk"); const red = chalk.bold.red; const yellow = chalk.bold.yellow; const spinner = ora({ text: "" }); module.exports = (heading, err, displayError = true, exit = true) => { if (err) { console.log(); if (displayError) { spinner.fail(`${red(heading)}`); spinner.fail(`${red(`ERROR →`)} ${err.name}`); spinner.fail(`${red(`REASON →`)} ${err.message}`); spinner.fail(`${red(`ERROR STACK ↓ \n`)} ${err.stack}\n`); } else { spinner.warn(`${yellow(heading)}`); } if (exit) { process.exit(0); } else { return false; } } }; ================================================ FILE: utils/handleTemplate.js ================================================ const fs = require("fs"); const path = require("path"); const makeDir = require("make-dir"); const handlebars = require("handlebars"); handlebars.registerHelper("raw-helper", options => options.fn()); module.exports = async slug => { const files = [`assets`, `release`]; for (file of files) { const fileContents = fs.readFileSync( path.join(__dirname, `./../template/${file}.yml`), `utf8` ); const source = fileContents.toString(); const template = handlebars.compile(source); const rendered = template({ slug }); await makeDir(`./.github/workflows/`); await makeDir(`./.wordpress-org/`); const done = fs.writeFileSync( `./.github/workflows/${file}.yml`, rendered, `utf8` ); } }; ================================================ FILE: utils/query.js ================================================ const shouldCancel = require("./shouldCancel.js"); export default (question, type) => { const query = new Toggle(question); const [err, res] = await to(query.run()); handleError(type, err); await shouldCancel(res); }; ================================================ FILE: utils/sbx.js ================================================ #!/usr/bin/env node // Makes the script crash on unhandled rejections instead of silently // ignoring them. In the future, promise rejections that are not handled will // terminate the Node.js process with a non-zero exit code. process.on("unhandledRejection", err => { console.log("err", err); }); const clearConsole = require("clear-any-console"); (async () => { clearConsole(); })(); ================================================ FILE: utils/shouldCancel.js ================================================ const chalk = require("chalk"); const yellow = chalk.bold.yellow; // Exit gracefully if user trying to cancel. module.exports = async action => { if (action === undefined) { console.log(yellow(`❯ Cancelled!\n`)); process.exit(0); } }; ================================================ FILE: utils/welcome.js ================================================ const pkg = require("./../package.json"); const welcome = require("cli-welcome"); module.exports = () => { // Use it. welcome( `WP Continuous Deployment`, ` by Awais.dev 👋`, { bgColor: `#d54e21`, color: `#000000`, bold: true, clear: true, version: `v${pkg.version}` } ); };