@dojoengine/create-dojo
Advanced tools
Comparing version 0.2.7 to 0.2.8
140
bin/index.js
@@ -10,85 +10,81 @@ #!/usr/bin/env node | ||
var templates = [ | ||
{ | ||
value: "react-app", | ||
description: "React app using Dojo", | ||
}, | ||
{ | ||
value: "react-phaser-example", | ||
description: "React/Phaser app using Dojo", | ||
}, | ||
{ | ||
value: "react-app", | ||
description: "React app using Dojo" | ||
}, | ||
{ | ||
value: "react-phaser-example", | ||
description: "React/Phaser app using Dojo" | ||
} | ||
]; | ||
run(); | ||
async function run() { | ||
try { | ||
const { template, projectName } = await prompt(); | ||
console.log(`Downloading ${template}...`); | ||
spawn.sync("npx", [ | ||
"degit", | ||
`dojoengine/dojo.js/examples/${template}`, | ||
`${projectName}`, | ||
]); | ||
await rewritePackageJson(projectName); | ||
console.log(`Downloading dojo-starter...`); | ||
spawn.sync("npx", ["degit", `dojoengine/dojo-starter`, `dojo-starter`]); | ||
} catch (e) { | ||
console.log(e); | ||
} | ||
try { | ||
const { template, projectName } = await prompt(); | ||
console.log(`Downloading ${template}...`); | ||
spawn.sync("npx", [ | ||
"degit", | ||
`dojoengine/dojo.js/examples/${template}`, | ||
`${projectName}` | ||
]); | ||
await rewritePackageJson(projectName); | ||
console.log(`Downloading dojo-starter...`); | ||
spawn.sync("npx", ["degit", `dojoengine/dojo-starter`, `dojo-starter`]); | ||
} catch (e) { | ||
console.log(e); | ||
} | ||
} | ||
async function rewritePackageJson(projectName) { | ||
const packageJsonPath = path.join( | ||
process.cwd(), | ||
projectName, | ||
"package.json" | ||
); | ||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")); | ||
const latestVersion = await getLatestVersion(); | ||
packageJson.name = projectName; | ||
for (let dep of Object.keys(packageJson.dependencies)) { | ||
if ( | ||
dep.startsWith("@dojoengine") && | ||
packageJson.dependencies[dep].startsWith("link:") | ||
) { | ||
packageJson.dependencies[dep] = latestVersion; | ||
} | ||
const packageJsonPath = path.join( | ||
process.cwd(), | ||
projectName, | ||
"package.json" | ||
); | ||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")); | ||
const latestVersion = await getLatestVersion(); | ||
packageJson.name = projectName; | ||
for (let dep of Object.keys(packageJson.dependencies)) { | ||
if (dep.startsWith("@dojoengine") && packageJson.dependencies[dep].startsWith("link:")) { | ||
packageJson.dependencies[dep] = latestVersion; | ||
} | ||
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2)); | ||
} | ||
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2)); | ||
} | ||
async function prompt() { | ||
const template = await select({ | ||
message: "Select a template", | ||
choices: templates, | ||
}); | ||
const projectName = await input({ | ||
message: "Project name ", | ||
validate: (input2) => { | ||
if (/^([A-Za-z\-\_\d])+$/.test(input2)) return true; | ||
else | ||
return "Project name may only include letters, numbers, underscores and hashes."; | ||
}, | ||
default: template, | ||
}); | ||
return { template, projectName }; | ||
const template = await select({ | ||
message: "Select a template", | ||
choices: templates | ||
}); | ||
const projectName = await input({ | ||
message: "Project name ", | ||
validate: (input2) => { | ||
if (/^([A-Za-z\-\_\d])+$/.test(input2)) | ||
return true; | ||
else | ||
return "Project name may only include letters, numbers, underscores and hashes."; | ||
}, | ||
default: template | ||
}); | ||
return { template, projectName }; | ||
} | ||
async function getLatestVersion() { | ||
return new Promise((resolve, reject) => { | ||
https | ||
.get( | ||
"https://registry.npmjs.org/-/package/@dojoengine/core/dist-tags", | ||
(res) => { | ||
if (res.statusCode === 200) { | ||
let body = ""; | ||
res.on("data", (data) => (body += data)); | ||
res.on("end", () => { | ||
resolve(JSON.parse(body).latest); | ||
}); | ||
} else { | ||
reject(); | ||
} | ||
} | ||
) | ||
.on("error", () => { | ||
reject(); | ||
}); | ||
return new Promise((resolve, reject) => { | ||
https.get( | ||
"https://registry.npmjs.org/-/package/@dojoengine/core/dist-tags", | ||
(res) => { | ||
if (res.statusCode === 200) { | ||
let body = ""; | ||
res.on("data", (data) => body += data); | ||
res.on("end", () => { | ||
resolve(JSON.parse(body).latest); | ||
}); | ||
} else { | ||
reject(); | ||
} | ||
} | ||
).on("error", () => { | ||
reject(); | ||
}); | ||
}); | ||
} | ||
//# sourceMappingURL=index.js.map | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@dojoengine/create-dojo", | ||
"version": "0.2.7", | ||
"version": "0.2.8", | ||
"description": "Scaffold Dojo project from examples", | ||
@@ -28,3 +28,3 @@ "module": "index.ts", | ||
}, | ||
"gitHead": "8c864294d40c2fc43d17656bd70843b8c5a00aa7" | ||
"gitHead": "0e93e4dea6e47f4c422e96ed89f793b55412e8a4" | ||
} |
77740
213