feat: Initial project structure
This commit is contained in:
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
.cache/
|
||||||
|
.DS_Store
|
||||||
|
*.log
|
||||||
1
.husky/pre-commit
Executable file
1
.husky/pre-commit
Executable file
@@ -0,0 +1 @@
|
|||||||
|
corepack pnpm lint-staged
|
||||||
4
.oxfmtrc.json
Normal file
4
.oxfmtrc.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"$schema": "./node_modules/oxfmt/configuration_schema.json",
|
||||||
|
"ignorePatterns": []
|
||||||
|
}
|
||||||
11
.oxlintrc.json
Normal file
11
.oxlintrc.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
||||||
|
"plugins": ["typescript", "unicorn", "oxc"],
|
||||||
|
"categories": {
|
||||||
|
"correctness": "error"
|
||||||
|
},
|
||||||
|
"rules": {},
|
||||||
|
"env": {
|
||||||
|
"builtin": true
|
||||||
|
}
|
||||||
|
}
|
||||||
1
CHANGELOG.md
Normal file
1
CHANGELOG.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# Changelog
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# @lewebsimple/wpop
|
||||||
|
|
||||||
|
WordPress operations CLI for Websimple projects.
|
||||||
54
package.json
Normal file
54
package.json
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"name": "@lewebsimple/wpop",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"private": true,
|
||||||
|
"description": "WordPress operations CLI for Websimple projects.",
|
||||||
|
"author": "Pascal Martineau <pascal@lewebsimple.ca>",
|
||||||
|
"bin": {
|
||||||
|
"wpop": "./dist/cli.js"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc -p tsconfig.json",
|
||||||
|
"changelog": "changelogen",
|
||||||
|
"check": "npm run format:check && npm run lint && npm run typecheck",
|
||||||
|
"dev": "tsx src/cli.ts",
|
||||||
|
"format:check": "oxfmt . --check",
|
||||||
|
"format": "oxfmt . --write",
|
||||||
|
"lint:fix": "oxlint . --fix",
|
||||||
|
"lint": "oxlint .",
|
||||||
|
"prepare": "husky",
|
||||||
|
"release": "changelogen --release --push --noAuthors",
|
||||||
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"commander": "^14.0.3",
|
||||||
|
"consola": "^3.4.2",
|
||||||
|
"execa": "^9.6.1",
|
||||||
|
"prompts": "^2.4.2",
|
||||||
|
"zod": "^4.4.3"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^25.6.0",
|
||||||
|
"@types/prompts": "^2.4.9",
|
||||||
|
"changelogen": "^0.6.2",
|
||||||
|
"husky": "^9.1.7",
|
||||||
|
"lint-staged": "^17.0.2",
|
||||||
|
"oxfmt": "^0.48.0",
|
||||||
|
"oxlint": "^1.63.0",
|
||||||
|
"tsx": "^4.21.0",
|
||||||
|
"typescript": "^6.0.3"
|
||||||
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"*.{js,jsx,ts,tsx,json,jsonc,md,yml,yaml}": [
|
||||||
|
"oxfmt --write"
|
||||||
|
],
|
||||||
|
"*.{js,jsx,ts,tsx}": [
|
||||||
|
"oxlint --fix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"packageManager": "pnpm@10.33.2"
|
||||||
|
}
|
||||||
1499
pnpm-lock.yaml
generated
Normal file
1499
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
23
src/cli.ts
Normal file
23
src/cli.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
import { Command } from "commander";
|
||||||
|
import pkg from "../package.json" with { type: "json" };
|
||||||
|
|
||||||
|
const program = new Command();
|
||||||
|
|
||||||
|
program
|
||||||
|
.name("wpop")
|
||||||
|
.description("WordPress operations CLI for Websimple projects.")
|
||||||
|
.version(pkg.version)
|
||||||
|
.option("--dry-run", "show what would happen without making changes")
|
||||||
|
.option("--json", "output machine-readable JSON")
|
||||||
|
.option("--yes", "skip confirmation prompts")
|
||||||
|
.option("--verbose", "enable verbose logging");
|
||||||
|
|
||||||
|
program
|
||||||
|
.command("deploy")
|
||||||
|
.description("Deploy a WordPress project")
|
||||||
|
.action(() => {
|
||||||
|
throw new Error("Not implemented yet.");
|
||||||
|
});
|
||||||
|
|
||||||
|
program.parse();
|
||||||
19
tsconfig.json
Normal file
19
tsconfig.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2023",
|
||||||
|
"lib": ["ES2023"],
|
||||||
|
"module": "NodeNext",
|
||||||
|
"moduleResolution": "NodeNext",
|
||||||
|
"types": ["node"],
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"strict": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"declaration": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"rootDir": "src",
|
||||||
|
"outDir": "dist"
|
||||||
|
},
|
||||||
|
"include": ["src/**/*.ts"]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user