|
| 1 | +module.exports = async function (params) { |
| 2 | + let { closeSync, existsSync, mkdirSync, openSync, writeFileSync } = require('fs') |
| 3 | + let { join, resolve } = require('path') |
| 4 | + |
| 5 | + let utils = require('../../lib') |
| 6 | + let error = require('./errors')(params, utils) |
| 7 | + let _inventory = require('@architect/inventory') |
| 8 | + let c = require('@colors/colors/safe') |
| 9 | + |
| 10 | + let dest = resolve('.') |
| 11 | + |
| 12 | + // Error out if folder already exists and it has an arc project already |
| 13 | + if (existsSync(dest)) { |
| 14 | + let inventory = await _inventory({ cwd: dest }) |
| 15 | + let invalid = inventory.inv._project.manifest |
| 16 | + if (invalid) return error('project_found') |
| 17 | + } |
| 18 | + |
| 19 | + // write arc file |
| 20 | + writeFileSync(join(dest, '.arc'), |
| 21 | + `@app |
| 22 | +enhance-app |
| 23 | +
|
| 24 | +@plugins |
| 25 | +enhance/arc-plugin-enhance |
| 26 | +enhance/arc-plugin-styles |
| 27 | +enhance/styles-cribsheet |
| 28 | +` |
| 29 | + ) |
| 30 | + |
| 31 | + const pkgFilePath = join(dest, 'package.json') |
| 32 | + if (!existsSync(pkgFilePath)) { |
| 33 | + writeFileSync( |
| 34 | + pkgFilePath, |
| 35 | + `{ |
| 36 | + "name": "enhance-app", |
| 37 | + "version": "0.0.1", |
| 38 | + "scripts": { |
| 39 | + "start": "npx enhance dev" |
| 40 | + }, |
| 41 | + "devDependencies": { |
| 42 | + "@enhance/cli": "latest", |
| 43 | + "@enhance/types": "latest" |
| 44 | + }, |
| 45 | + "dependencies": { |
| 46 | + "@enhance/arc-plugin-enhance": "latest", |
| 47 | + "@enhance/arc-plugin-styles": "latest", |
| 48 | + "@enhance/styles-cribsheet": "latest" |
| 49 | + } |
| 50 | + } |
| 51 | + ` |
| 52 | + ) |
| 53 | + } |
| 54 | + else { |
| 55 | + return error('package_json_found') |
| 56 | + } |
| 57 | + |
| 58 | + // Create an empty index.html page |
| 59 | + const dir = join(dest, 'app', 'pages') |
| 60 | + if (!existsSync(dir)){ |
| 61 | + mkdirSync(dir, { recursive: true }) |
| 62 | + } |
| 63 | + const index = join(dir, 'index.html') |
| 64 | + if (!existsSync(index)){ |
| 65 | + closeSync(openSync(index, 'w')) |
| 66 | + } |
| 67 | + |
| 68 | + // Success message |
| 69 | + console.error(`Project successfully initialized!\nTo get started, install the dependencies: ${c.bold(c.green(`npm install`))}\nThen start the local development server: ${c.bold(c.green(`npx enhance dev`))}`) |
| 70 | +} |
0 commit comments