create-bunny-launcher
Version:
Configure your static sites with bunny.net in a single cli command 🐰
3 lines (2 loc) • 3.83 kB
JavaScript
import { createRequire } from 'module';const require = createRequire(import.meta.url);
import{Text as h}from"ink";import f from"react";import u from"fs-extra";import m from"node:path";async function s({cwd:n=process.cwd(),fileName:e}){let i=m.resolve(n,e);return u.pathExists(i)}async function t({cwd:n=process.cwd(),fileName:e}){let i=m.resolve(n,e);if(await s({cwd:n,fileName:e}))return u.readFile(i,"utf8")}import{readPackage as v}from"read-pkg";async function p({cwd:n}){let i=await s({cwd:n,fileName:"package.json"})?await v({cwd:n}):{},a=Object.keys(i?.dependencies??{}),r=Object.keys(i?.devDependencies??{}),o=Object.keys(i?.peerDependencies??{}),l=Object.keys(i?.optionalDependencies??{});return[...a,...r,...o,...l]}async function d({cwd:n=process.cwd()}={}){let e=await y({cwd:n});if(e.packageJson){if(e.packageJson.includes("@angular-devkit/build-angular")&&e.packageJson.includes("@analogjs/platform"))return"analog";if(e.packageJson.includes("@angular-devkit/build-angular")&&!e.packageJson.includes("@analogjs/platform"))return"angular";if(e.packageJson.includes("astro")&&!e.packageJson.includes("@astrojs/starlight"))return"astro";if(e.packageJson.includes("astro")&&e.packageJson.includes("@astrojs/starlight"))return"starlight";if(e.packageJson.includes("@docusaurus/core"))return"docusaurus";if(e.packageJson.includes("@11ty/eleventy"))return"eleventy";if(e.packageJson.includes("ember-cli"))return"ember";if(e.packageJson.includes("gatsby"))return"gatsby";if(e.packageJson.includes("hexo"))return"hexo";if(e.packageJson.includes("hono"))return"hono";if(e.packageJson.includes("metalsmith"))return"metalsmith";if(e.packageJson.includes("next"))return"nextjs";if(e.packageJson.includes("nuxt"))return"nuxt";if(e.packageJson.includes("@builder.io/qwik-city"))return"qwik";if(e.packageJson.includes("@solidjs/start"))return"solid";if(e.packageJson.includes("@sveltejs/kit"))return"svelte";if(e.packageJson.includes("umi"))return"umijs";if(e.packageJson.includes("vitepress"))return"vitepress";if(e.packageJson.includes("vite"))return e.packageJson.includes("lit")?"vite-lit":e.packageJson.includes("preact")&&e.packageJson.includes("@preact/preset-vite")?"vite-preact":e.packageJson.includes("@builder.io/qwik")?"vite-qwik":e.packageJson.includes("react")&&e.packageJson.includes("react-dom")?"vite-react":e.packageJson.includes("solid-js")&&e.packageJson.includes("vite-plugin-solid")?"vite-solid":e.packageJson.includes("svelte")&&e.packageJson.includes("@sveltejs/vite-plugin-svelte")&&!e.packageJson.includes("@sveltejs/kit")?"vite-svelte":e.packageJson.includes("vue")&&e.packageJson.includes("@vitejs/plugin-vue")?"vite-vue":"vite-vanilla"}if(e.gemfile){if(e.gemfile.includes("jekyll"))return"jekyll";if(e.gemfile.includes("middleman")&&!e.slateSh)return"middleman";if(e.gemfile.includes("middleman")&&e.slateSh)return"slate"}return e.indexHtml?.includes("docsify")?"docsify":e.hugoToml?"hugo":e.bookToml?"mdbook":e.mkdocsYml?"mkdocs":e.pelicanconfPy?"pelican":!e.pelicanconfPy&&(e.makeFile?.includes("SPHINX")||e.makeBat?.includes("SPHINX"))?"sphinx":e.configToml?"zola":"other"}async function y({cwd:n=process.cwd()}){let[e,i,a,r,o,l,c,g,k,J,P]=await Promise.all([p({cwd:n}),t({cwd:n,fileName:"Gemfile"}),t({cwd:n,fileName:"index.html"}),t({cwd:n,fileName:"Makefile"}),t({cwd:n,fileName:"make.bat"}),s({cwd:n,fileName:"hugo.toml"}),s({cwd:n,fileName:"book.toml"}),s({cwd:n,fileName:"slate.sh"}),s({cwd:n,fileName:"mkdocs.yml"}),s({cwd:n,fileName:"pelicanconf.py"}),s({cwd:n,fileName:"config.toml"})]);return{bookToml:c,configToml:P,gemfile:i,hugoToml:l,indexHtml:a,makeBat:o,makeFile:r,mkdocsYml:k,packageJson:e,pelicanconfPy:J,slateSh:g}}import{jsx as b}from"react/jsx-runtime";function x(){let[n,e]=f.useState("");return f.useEffect(()=>{d().then(i=>{e(i)})},[]),b(h,{children:n})}export{x as default};