From 2c9b4e316f508ae4852a0e3eaaebaddf60f74cf0 Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Mon, 13 Nov 2023 17:33:27 -0600 Subject: [PATCH] feat(create-dapp): `npm create @agoric/dapp ...` uses `agoric init` --- packages/agoric-cli/src/sdk-package-names.js | 1 + packages/create-dapp/.gitignore | 83 ++++++++++++++++++++ packages/create-dapp/.npmignore | 14 ++++ packages/create-dapp/CHANGELOG.md | 4 + packages/create-dapp/README.md | 23 ++++++ packages/create-dapp/package.json | 51 ++++++++++++ packages/create-dapp/src/create-dapp.js | 17 ++++ packages/create-dapp/test/test-stub.js | 3 + 8 files changed, 196 insertions(+) create mode 100644 packages/create-dapp/.gitignore create mode 100644 packages/create-dapp/.npmignore create mode 100644 packages/create-dapp/CHANGELOG.md create mode 100644 packages/create-dapp/README.md create mode 100644 packages/create-dapp/package.json create mode 100755 packages/create-dapp/src/create-dapp.js create mode 100644 packages/create-dapp/test/test-stub.js diff --git a/packages/agoric-cli/src/sdk-package-names.js b/packages/agoric-cli/src/sdk-package-names.js index 06a0f9c5ac40..d6b5d4b5b39d 100644 --- a/packages/agoric-cli/src/sdk-package-names.js +++ b/packages/agoric-cli/src/sdk-package-names.js @@ -9,6 +9,7 @@ export default [ "@agoric/cosmic-proto", "@agoric/cosmic-swingset", "@agoric/cosmos", + "@agoric/create-dapp", "@agoric/deploy-script-support", "@agoric/deployment", "@agoric/ertp", diff --git a/packages/create-dapp/.gitignore b/packages/create-dapp/.gitignore new file mode 100644 index 000000000000..bf242669fa4f --- /dev/null +++ b/packages/create-dapp/.gitignore @@ -0,0 +1,83 @@ +.vagrant +/dapps + +# emacs and vim +*~ +[._]*.sw[a-p] + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + +.idea/ + +# dist files +/dist + +# generated integration-test files +integration-test/.cache +integration-test/bundles +integration-test/transform-tests/output + +# generated Sphinx/ReadTheDocs files +/docs/build/ +/demo +t[0-9]* diff --git a/packages/create-dapp/.npmignore b/packages/create-dapp/.npmignore new file mode 100644 index 000000000000..6579415ef239 --- /dev/null +++ b/packages/create-dapp/.npmignore @@ -0,0 +1,14 @@ +.vagrant + +# Demo +demo +dapps + +# scripts +scripts + +# test +test + +# Travis CI +.travis.yml diff --git a/packages/create-dapp/CHANGELOG.md b/packages/create-dapp/CHANGELOG.md new file mode 100644 index 000000000000..e4d87c4d45c4 --- /dev/null +++ b/packages/create-dapp/CHANGELOG.md @@ -0,0 +1,4 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. diff --git a/packages/create-dapp/README.md b/packages/create-dapp/README.md new file mode 100644 index 000000000000..73e9f792c427 --- /dev/null +++ b/packages/create-dapp/README.md @@ -0,0 +1,23 @@ +# Create Agoric Dapp + +To make a new Agoric Dapp in the `foo` subdirectory, you can use: + +``` +$ yarn create @agoric/dapp foo +``` + +or: + +``` +$ npm create @agoric/dapp foo +``` + +or: + +``` +$ pnpm create @agoric/dapp foo +``` + +Each of the above commands are shorthand for installing the `agoric` package, then running `agoric init foo`. + +Please see the [Getting Started website](https://agoric.com/documentation/getting-started/) for information. diff --git a/packages/create-dapp/package.json b/packages/create-dapp/package.json new file mode 100644 index 000000000000..d9d5df11130a --- /dev/null +++ b/packages/create-dapp/package.json @@ -0,0 +1,51 @@ +{ + "name": "@agoric/create-dapp", + "version": "0.1.0", + "description": "Create an Agoric Javascript smart contract application", + "type": "module", + "bin": { + "create-dapp": "src/create-dapp.js" + }, + "files": [ + "src" + ], + "scripts": { + "build": "exit 0", + "test": "ava", + "test:c8": "c8 $C8_OPTIONS ava --config=ava-nesm.config.js", + "test:xs": "exit 0", + "lint-fix": "yarn lint:eslint --fix", + "lint": "run-s --continue-on-error lint:*", + "lint:types": "tsc -p jsconfig.json", + "lint:eslint": "eslint ." + }, + "devDependencies": { + "ava": "^5.2.0", + "c8": "^7.13.0", + "dd-trace": "^3.3.0" + }, + "dependencies": { + "agoric": "^0.21.2-u12.0" + }, + "keywords": [], + "repository": { + "type": "git", + "url": "git+https://github.com/Agoric/agoric-sdk" + }, + "author": "Agoric", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/Agoric/agoric/agoric-sdk" + }, + "homepage": "https://github.com/Agoric/agoric-sdk#readme", + "ava": { + "files": [ + "test/**/test-*.js" + ], + "timeout": "2m", + "workerThreads": false + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/create-dapp/src/create-dapp.js b/packages/create-dapp/src/create-dapp.js new file mode 100755 index 000000000000..0bb1f28ff1cc --- /dev/null +++ b/packages/create-dapp/src/create-dapp.js @@ -0,0 +1,17 @@ +#! /usr/bin/env node +/* global process */ +import { spawnSync } from 'child_process'; +import { createRequire } from 'module'; + +const require = createRequire(import.meta.url); + +const agoricCli = require.resolve('.bin/agoric'); + +const proc = spawnSync(agoricCli, ['init', ...process.argv.slice(2)], { + stdio: 'inherit', +}); + +if (proc.error) { + throw proc.error; +} +process.exit(proc.status); diff --git a/packages/create-dapp/test/test-stub.js b/packages/create-dapp/test/test-stub.js new file mode 100644 index 000000000000..4a05abe39764 --- /dev/null +++ b/packages/create-dapp/test/test-stub.js @@ -0,0 +1,3 @@ +import test from 'ava'; + +test.todo('write some tests');