@codigodoleo/wp-kit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cspell.json +104 -0
- package/.editorconfig +13 -0
- package/.eslintignore +3 -0
- package/.eslintrc.json +24 -0
- package/.github/workflows/publish-npm.yml +32 -0
- package/.github/workflows/release-please.yml +25 -0
- package/.gitkeep +0 -0
- package/.husky/_/post-merge +0 -0
- package/.prettierignore +4 -0
- package/.prettierrc +8 -0
- package/.vscode/settings.json +19 -0
- package/CHANGELOG.md +47 -0
- package/README.md +115 -0
- package/VSCODE_EXTENSIONS.md +11 -0
- package/bin/index.js +4 -0
- package/docs/HOOKS-SYSTEM.md +172 -0
- package/git-deploy.sh +74 -0
- package/index.php +17 -0
- package/lib/cli.js +15 -0
- package/lib/commands/init.js +132 -0
- package/lib/core/generator.js +261 -0
- package/lib/core/hook-manager.js +172 -0
- package/lib/core/infer-ci-capabilities.js +119 -0
- package/lib/prompts/index.js +105 -0
- package/lib/prompts/loadModulePrompts.js +27 -0
- package/lib/utils/generate-from-template.js +17 -0
- package/lib/utils/git.js +17 -0
- package/lib/utils/logger.js +28 -0
- package/modules/deploy/index.js +39 -0
- package/modules/deploy/prompts.js +27 -0
- package/modules/deploy/templates/.github/workflows/ci.yml.hbs +103 -0
- package/modules/deploy/templates/.gitlab/gitlab-ci.yml.hbs +154 -0
- package/modules/deploy/templates/bitbucket-pipelines.yml.hbs +97 -0
- package/modules/docs/index.js +3 -0
- package/modules/docs/prompts.js +8 -0
- package/modules/docs/templates/README.md.hbs +160 -0
- package/modules/docs/templates/docs/Arquitetura.md +399 -0
- package/modules/docs/templates/docs/Deploy-Pipeline.md +113 -0
- package/modules/docs/templates/docs/Desenvolvimento.md +1116 -0
- package/modules/docs/templates/docs/Getting-Started.md +493 -0
- package/modules/docs/templates/docs/Infraestrutura.md +211 -0
- package/modules/docs/templates/docs/Monitoramento.md +302 -0
- package/modules/docs/templates/docs/Sync-the-Production-DB-with-the-Staging-DB.md +8 -0
- package/modules/docs/templates/docs/Troubleshooting.md +3 -0
- package/modules/git/.commitlintrc.json +136 -0
- package/modules/git/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- package/modules/git/.gitlab/merge_request_templates/default.md +42 -0
- package/modules/git/.gitmessage +29 -0
- package/modules/git/.husky/commit-msg +4 -0
- package/modules/git/.husky/pre-commit +27 -0
- package/modules/git/.lintstagedrc.json +7 -0
- package/modules/git/.vscode/commit-instructions.md +59 -0
- package/modules/git/.vscode/conventional-commits.code-snippets +62 -0
- package/modules/git/.vscode/copilot.json +39 -0
- package/modules/git/docs/CONVENTIONAL-COMMITS.md +131 -0
- package/modules/git/index.js +137 -0
- package/modules/git/prompts.js +23 -0
- package/modules/git/templates/.lando.yml.hbs +13 -0
- package/modules/git/templates/package.json.hbs +15 -0
- package/modules/git/templates/workspace.json.hbs +114 -0
- package/modules/lint/.eslintignore +36 -0
- package/modules/lint/.eslintrc.json +8 -0
- package/modules/lint/.prettierignore +36 -0
- package/modules/lint/.prettierrc.json +29 -0
- package/modules/lint/.stylelintignore +19 -0
- package/modules/lint/.stylelintrc.json +9 -0
- package/modules/lint/index.js +15 -0
- package/modules/lint/pint.json +26 -0
- package/modules/lint/prompts.js +16 -0
- package/modules/lint/templates/.lando.yml.hbs +10 -0
- package/modules/lint/templates/package.json.hbs +16 -0
- package/modules/lint/templates/workspace.json.hbs +56 -0
- package/modules/php/index.js +3 -0
- package/modules/php/prompts.js +8 -0
- package/modules/php/scripts/php-wrapper.sh +38 -0
- package/modules/php/scripts/pint-wrapper.sh +44 -0
- package/modules/php/templates/.lando.yml.hbs +11 -0
- package/modules/php/templates/composer.json.hbs +6 -0
- package/modules/php/templates/workspace.json.hbs +74 -0
- package/modules/redis/prompts.js +8 -0
- package/modules/redis/templates/.lando.yml.hbs +8 -0
- package/modules/sage/index.js +20 -0
- package/modules/sage/prompts.js +16 -0
- package/modules/sage/templates/.lando.yml.hbs +64 -0
- package/modules/sage/templates/theme/composer.json.hbs +18 -0
- package/modules/sage/templates/theme/package.json.hbs +11 -0
- package/modules/sage/templates/theme/style.css.hbs +13 -0
- package/modules/sage/templates/theme/vite.config.js.hbs +53 -0
- package/modules/sage/templates/workspace.json.hbs +67 -0
- package/modules/test-directory/assets/module-file.txt +1 -0
- package/modules/test-directory/index.js +19 -0
- package/modules/test-directory/prompts.js +8 -0
- package/modules/test-directory/test-assets/file1.txt +1 -0
- package/modules/test-directory/test-assets/file2.txt +1 -0
- package/modules/test-directory/test-assets/subfolder/config.json +4 -0
- package/package.json +54 -0
- package/release-please-config.json +17 -0
- package/server/php/php.ini +48 -0
- package/server/www/rocket.conf +283 -0
- package/templates/.editorconfig.hbs +39 -0
- package/templates/.env.hbs +48 -0
- package/templates/.gitignore.hbs +86 -0
- package/templates/.lando.yml.hbs +44 -0
- package/templates/README.md.hbs +12 -0
- package/templates/composer.json.hbs +60 -0
- package/templates/package.json.hbs +47 -0
- package/templates/server/cmd/install-wp.sh.hbs +58 -0
- package/templates/server/www/vhosts.conf.hbs +71 -0
- package/templates/workspace.json.hbs +177 -0
- package/test-copy-directory.js +43 -0
- package/test-overwrite.js +45 -0
- package/wp-config.php +190 -0
package/.cspell.json
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2",
|
|
3
|
+
"language": "en,pt_BR",
|
|
4
|
+
"dictionaries": [
|
|
5
|
+
"php"
|
|
6
|
+
],
|
|
7
|
+
"import": [
|
|
8
|
+
"@cspell/dict-php/cspell-ext.json",
|
|
9
|
+
"@cspell/dict-pt-br/cspell-ext.json"
|
|
10
|
+
],
|
|
11
|
+
"words": [
|
|
12
|
+
"ACF",
|
|
13
|
+
"appserver",
|
|
14
|
+
"autofetch",
|
|
15
|
+
"azuretools",
|
|
16
|
+
"bitbucket",
|
|
17
|
+
"Blade",
|
|
18
|
+
"bmewburn",
|
|
19
|
+
"bradlc",
|
|
20
|
+
"catppuccin",
|
|
21
|
+
"Catppuccin",
|
|
22
|
+
"commitlint",
|
|
23
|
+
"commitlintrc",
|
|
24
|
+
"composer",
|
|
25
|
+
"conventionalchangelog",
|
|
26
|
+
"davidanson",
|
|
27
|
+
"dbaeumer",
|
|
28
|
+
"eamodio",
|
|
29
|
+
"esbenp",
|
|
30
|
+
"eslint",
|
|
31
|
+
"everforest",
|
|
32
|
+
"felixfbecker",
|
|
33
|
+
"filesize",
|
|
34
|
+
"formulahendry",
|
|
35
|
+
"formuylahendry",
|
|
36
|
+
"gitcz",
|
|
37
|
+
"gitlab",
|
|
38
|
+
"gitmessage",
|
|
39
|
+
"gitmoji",
|
|
40
|
+
"intelephense",
|
|
41
|
+
"johnbillion",
|
|
42
|
+
"junstyle",
|
|
43
|
+
"kohler",
|
|
44
|
+
"lando",
|
|
45
|
+
"laravel",
|
|
46
|
+
"lintstagedrc",
|
|
47
|
+
"lndo",
|
|
48
|
+
"mhutchie",
|
|
49
|
+
"nginx",
|
|
50
|
+
"nonce",
|
|
51
|
+
"phpcbf",
|
|
52
|
+
"phpcs",
|
|
53
|
+
"phpsab",
|
|
54
|
+
"pint",
|
|
55
|
+
"pkief",
|
|
56
|
+
"post_type",
|
|
57
|
+
"realpath",
|
|
58
|
+
"realpathcache",
|
|
59
|
+
"realpathcachettl",
|
|
60
|
+
"realpathttl",
|
|
61
|
+
"roots",
|
|
62
|
+
"Sage",
|
|
63
|
+
"sainnhe",
|
|
64
|
+
"southeners",
|
|
65
|
+
"stylelint",
|
|
66
|
+
"stylelintignore",
|
|
67
|
+
"taxonomies",
|
|
68
|
+
"tungvn",
|
|
69
|
+
"valeryanm",
|
|
70
|
+
"vhosts",
|
|
71
|
+
"vivaxy",
|
|
72
|
+
"webdevops",
|
|
73
|
+
"wordpresstoolbox",
|
|
74
|
+
"wp",
|
|
75
|
+
"wp_enqueue_script",
|
|
76
|
+
"wpackagist",
|
|
77
|
+
"wpdb",
|
|
78
|
+
"yzhang",
|
|
79
|
+
"zhuangtongfa"
|
|
80
|
+
],
|
|
81
|
+
"ignorePaths": [
|
|
82
|
+
"node_modules/**",
|
|
83
|
+
"vendor/**",
|
|
84
|
+
"dist/**",
|
|
85
|
+
"public/**"
|
|
86
|
+
],
|
|
87
|
+
"enableFiletypes": [
|
|
88
|
+
"php",
|
|
89
|
+
"js",
|
|
90
|
+
"ts",
|
|
91
|
+
"json",
|
|
92
|
+
"scss",
|
|
93
|
+
"md",
|
|
94
|
+
"html"
|
|
95
|
+
],
|
|
96
|
+
"languageSettings": [
|
|
97
|
+
{
|
|
98
|
+
"languageId": "php",
|
|
99
|
+
"dictionaries": [
|
|
100
|
+
"php"
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
}
|
package/.editorconfig
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# EditorConfig helps maintain consistent coding styles across editors
|
|
2
|
+
root = true
|
|
3
|
+
|
|
4
|
+
[*]
|
|
5
|
+
charset = utf-8
|
|
6
|
+
end_of_line = lf
|
|
7
|
+
insert_final_newline = true
|
|
8
|
+
indent_style = space
|
|
9
|
+
indent_size = 2
|
|
10
|
+
trim_trailing_whitespace = true
|
|
11
|
+
|
|
12
|
+
[*.md]
|
|
13
|
+
trim_trailing_whitespace = false
|
package/.eslintignore
ADDED
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"root": true,
|
|
3
|
+
"env": {
|
|
4
|
+
"es2022": true,
|
|
5
|
+
"node": true
|
|
6
|
+
},
|
|
7
|
+
"extends": ["eslint:recommended", "prettier"],
|
|
8
|
+
"plugins": ["import"],
|
|
9
|
+
"parserOptions": {
|
|
10
|
+
"ecmaVersion": "latest",
|
|
11
|
+
"sourceType": "module"
|
|
12
|
+
},
|
|
13
|
+
"rules": {
|
|
14
|
+
"no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }],
|
|
15
|
+
"no-console": "off",
|
|
16
|
+
"import/order": [
|
|
17
|
+
"warn",
|
|
18
|
+
{
|
|
19
|
+
"groups": ["builtin", "external", "internal", "parent", "sibling", "index"],
|
|
20
|
+
"newlines-between": "always"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: publish-npm
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published, released, created]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
publish:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- name: Checkout
|
|
13
|
+
uses: actions/checkout@v4
|
|
14
|
+
with:
|
|
15
|
+
fetch-depth: 0
|
|
16
|
+
|
|
17
|
+
- name: Setup Node
|
|
18
|
+
uses: actions/setup-node@v4
|
|
19
|
+
with:
|
|
20
|
+
node-version: '22'
|
|
21
|
+
registry-url: 'https://registry.npmjs.org'
|
|
22
|
+
|
|
23
|
+
- name: Install deps
|
|
24
|
+
run: npm ci --no-audit --no-fund
|
|
25
|
+
|
|
26
|
+
- name: Build (skip if not needed)
|
|
27
|
+
run: echo "No build step"
|
|
28
|
+
|
|
29
|
+
- name: Publish to npm
|
|
30
|
+
env:
|
|
31
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
32
|
+
run: npm publish --access public
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: release-please
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
pull-requests: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
release:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: google-github-actions/release-please-action@v4
|
|
17
|
+
with:
|
|
18
|
+
release-type: node
|
|
19
|
+
package-name: "@codigodoleo/wp-kit"
|
|
20
|
+
changelog-types: |
|
|
21
|
+
[{"type":"feat","section":"Features","hidden":false},
|
|
22
|
+
{"type":"fix","section":"Bug Fixes","hidden":false},
|
|
23
|
+
{"type":"docs","section":"Documentation","hidden":false},
|
|
24
|
+
{"type":"refactor","section":"Refactors","hidden":false},
|
|
25
|
+
{"type":"chore","section":"Chores","hidden":false}]
|
package/.gitkeep
ADDED
|
File without changes
|
|
File without changes
|
package/.prettierignore
ADDED
package/.prettierrc
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"editor.formatOnSave": false,
|
|
3
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
4
|
+
"files.trimTrailingWhitespace": true,
|
|
5
|
+
"files.insertFinalNewline": true,
|
|
6
|
+
"editor.codeActionsOnSave": {
|
|
7
|
+
"source.fixAll": "explicit"
|
|
8
|
+
},
|
|
9
|
+
"files.associations": {
|
|
10
|
+
"*.hbs": "plaintext",
|
|
11
|
+
"*.yml.hbs": "yaml",
|
|
12
|
+
"*.json.hbs": "jsonc",
|
|
13
|
+
"*.php.hbs": "php",
|
|
14
|
+
"*.js.hbs": "javascript",
|
|
15
|
+
"*.css.hbs": "css",
|
|
16
|
+
"*.scss.hbs": "scss",
|
|
17
|
+
"*.vue.hbs": "vue"
|
|
18
|
+
}
|
|
19
|
+
}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.0 (2025-09-27)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add build templates for GitLab CI/CD ([4880c40](https://github.com/lgobatto/wp-kit/commit/4880c40d9c39925e1d112aa617001cd3b1a546f7))
|
|
9
|
+
* **cli:** implementar CLI para scaffolding de projetos WordPress DevOps com comandos de inicialização e prompts interativos ([a65dd0c](https://github.com/lgobatto/wp-kit/commit/a65dd0c6c1f8552b68b4de9e4e17da6c629f134b))
|
|
10
|
+
* **config:** adicionar arquivo .editorconfig e atualizar composer.json e cspell.json com novas configurações e palavras-chave ([fadae79](https://github.com/lgobatto/wp-kit/commit/fadae7950b78c37cf946999bee756e7953cbd629))
|
|
11
|
+
* **config:** adicionar arquivos de configuração do PHP, NGINX e templates para instalação do WordPress, incluindo suporte a variáveis de ambiente e otimizações de cache ([ae4a66d](https://github.com/lgobatto/wp-kit/commit/ae4a66d3223fa2fdcba29228eb7fbeb3607804c8))
|
|
12
|
+
* **config:** adicionar arquivos de configuração para ESLint, Prettier e CSpell, além de recomendações de extensões para VSCode ([e487f54](https://github.com/lgobatto/wp-kit/commit/e487f5451f12df5643ffedf623dedce9ffffa84c))
|
|
13
|
+
* **copy-directory:** implementar funcionalidade de cópia de diretórios com controle de sobrescrita, incluindo testes e documentação atualizada ([baf1eb6](https://github.com/lgobatto/wp-kit/commit/baf1eb6a96539bab656bcb82fcdcc4e0c68ace22))
|
|
14
|
+
* **cspell:** adicionar arquivo de configuração .cspell.json e atualizar associações de arquivos no VSCode ([314a83d](https://github.com/lgobatto/wp-kit/commit/314a83dcb5fbf9de2601734b17998670dfd41987))
|
|
15
|
+
* **cspell:** adicionar novas palavras ao dicionário de verificação ortográfica ([50ab73c](https://github.com/lgobatto/wp-kit/commit/50ab73c39c1d7c72be6359de5e661d75bee652f5))
|
|
16
|
+
* **cspell:** adicionar novas palavras ao dicionário no arquivo .cspell.json para melhorar a verificação ortográfica ([f2f22ed](https://github.com/lgobatto/wp-kit/commit/f2f22edd463e6b57e8eeb4010a65b1732c7e83e7))
|
|
17
|
+
* **cspell:** atualizar configurações do arquivo .cspell.json, adicionando novas palavras e organizando dicionários e tipos de arquivo ([a23ee3b](https://github.com/lgobatto/wp-kit/commit/a23ee3bc458fcbe135cb7c1d57280db8ab7a3c23))
|
|
18
|
+
* **deploy:** adicionar script git-deploy.sh para inicialização de repositório, configuração de remote e push forçado, além de implementar templates de CI/CD para validação e segurança no GitLab ([ad5a37a](https://github.com/lgobatto/wp-kit/commit/ad5a37a9e98489cd0bd18704cad7b8c882a6c0d7))
|
|
19
|
+
* **deploy:** adicionar suporte a configurações de implantação com Docker, incluindo prompts para seleção de estratégia e provedor, além de criar arquivos de configuração necessários ([d42e269](https://github.com/lgobatto/wp-kit/commit/d42e26964748769a79853e465d268f84eaf75a30))
|
|
20
|
+
* **docs:** adicionar documentação completa sobre arquitetura, desenvolvimento, infraestrutura e monitoramento do site Pipefy, incluindo guias de configuração e melhores práticas ([9ed8521](https://github.com/lgobatto/wp-kit/commit/9ed85211b8a378403ef0a31e039879e7c79b54df))
|
|
21
|
+
* **docs:** adicionar novos templates de documentação para configuração, desenvolvimento, infraestrutura e monitoramento do site Pipefy, incluindo guias detalhados e melhores práticas ([ac4653c](https://github.com/lgobatto/wp-kit/commit/ac4653c3a7550e31e90d243cf33c3d13045e86a7))
|
|
22
|
+
* **editorconfig:** adicionar arquivo .editorconfig para padronização de estilos de codificação ([669cbf4](https://github.com/lgobatto/wp-kit/commit/669cbf46d3fd4cfd5cc0c0f12e60b801ecbda421))
|
|
23
|
+
* enhance GitLab CI/CD pipeline with advanced features ([0436062](https://github.com/lgobatto/wp-kit/commit/0436062433d14c694368aafee31d57f3cdb71ba6))
|
|
24
|
+
* **generator:** atualizar a função de geração de arquivos para usar lodash.mergewith e adicionar suporte a estratégias de merge de arrays ([eb5d701](https://github.com/lgobatto/wp-kit/commit/eb5d701dbfcc008dd2229ab558d3446bd1f1851f))
|
|
25
|
+
* **git-workspace:** adicionar suporte para geração de arquivo de workspace do VSCode e novos prompts de configuração para Git ([55670af](https://github.com/lgobatto/wp-kit/commit/55670af798d98f0177f5118fc04e079aa4ee3e78))
|
|
26
|
+
* **git:** adicionar arquivo .gitkeep para manter diretório vazio no repositório ([8bab8e6](https://github.com/lgobatto/wp-kit/commit/8bab8e6d5d87507749df39f12db5f0a5933f7ff7))
|
|
27
|
+
* **git:** adicionar documentação e templates para Conventional Commits, incluindo instruções de uso, configurações do VS Code e melhorias no sistema de hooks para commits automáticos. ([9603051](https://github.com/lgobatto/wp-kit/commit/96030513a607845e894aaa396171c187cf22e2c9))
|
|
28
|
+
* **git:** adicionar suporte a configuração de Git com commitlint, lint-staged e husky, incluindo templates e scripts necessários ([64fa435](https://github.com/lgobatto/wp-kit/commit/64fa435c43371eecd3151801b40a195a469aa547))
|
|
29
|
+
* **git:** adicionar templates e configurações para Conventional Commits, incluindo snippets, documentação e validação de mensagens ([77897ce](https://github.com/lgobatto/wp-kit/commit/77897ce3ed67eb01979e6b6e09c6a6bd242f1877))
|
|
30
|
+
* **hooks:** implementar sistema de hooks para execução de callbacks em momentos específicos, incluindo a adição de um gerenciador de hooks e execução de hooks pós-configuração. ([8ca5679](https://github.com/lgobatto/wp-kit/commit/8ca567986a386b5c5934943daf27ca113da59045))
|
|
31
|
+
* **init:** adicionar arquivo .gitignore e atualizar templates de configuração do Lando para suporte a linting com Yarn ([f697fe2](https://github.com/lgobatto/wp-kit/commit/f697fe22ae268b35f0e4e6a8a2256bea7f1941c7))
|
|
32
|
+
* **init:** adicionar arquivos de configuração do WordPress, incluindo index.php e wp-config.php, com suporte a variáveis de ambiente e configuração para Docker ([d2d8b51](https://github.com/lgobatto/wp-kit/commit/d2d8b51de08abaace6cccf337d3dce79ac816ae9))
|
|
33
|
+
* **init:** adicionar opção de debug e suporte a estratégia de merge 'concat' na geração de arquivos ([b7ea6a2](https://github.com/lgobatto/wp-kit/commit/b7ea6a29b47d2660a9e54a528e594703cdb07a90))
|
|
34
|
+
* **lando:** adicionar instalação do Node.js e Yarn no template .lando.yml.hbs, além de executar script de instalação do WordPress durante o build ([4e6c5fd](https://github.com/lgobatto/wp-kit/commit/4e6c5fd5300d37b0aabdd376a81619e8a85ee55b))
|
|
35
|
+
* **lando:** atualizar configuração do Lando para incluir comandos de build e otimização do tema Sage ([c1125c3](https://github.com/lgobatto/wp-kit/commit/c1125c3461caa6fe98dca127844281904ea6ee6f))
|
|
36
|
+
* **lando:** reorganizar scripts de build e instalação no template .lando.yml.hbs, unificando comandos para o appserver e removendo dependências desnecessárias do serviço node. ([bbe44d9](https://github.com/lgobatto/wp-kit/commit/bbe44d9813b83b1386e80c5aabb6d4e9bab6bcfd))
|
|
37
|
+
* **lint:** adicionar suporte a ferramentas de linting e formatação com ESLint, Prettier e Stylelint, incluindo templates e prompts de configuração ([f8e1823](https://github.com/lgobatto/wp-kit/commit/f8e182383f1ebeaef897f6e13e2a2e4eeb6fdac7))
|
|
38
|
+
* **lint:** atualizar configurações de linting e formatação no workspace.json.hbs, substituir scripts PHP por Pint, e remover wrappers desnecessários, além de adicionar novas tarefas para o Lando. ([59ed719](https://github.com/lgobatto/wp-kit/commit/59ed719676f91ee21f9b2bf02ee54ce3e3deb46a))
|
|
39
|
+
* **lint:** atualizar scripts de linting no package.json e adicionar novo arquivo wp-translation-downloader.lock ao .gitignore ([13db50b](https://github.com/lgobatto/wp-kit/commit/13db50b22f7068f97152ff87529be7edec5ed311))
|
|
40
|
+
* **php:** adicionar scripts wrapper para suporte a ferramentas PHP e configuração no ambiente Lando, incluindo documentação no README.md ([d4bb95e](https://github.com/lgobatto/wp-kit/commit/d4bb95e5b26542a8df4e2f4b615ef637be5fbc51))
|
|
41
|
+
* **setup:** adicionar suporte a CLI com wp-devops-setup, incluindo README.md, configuração do package.json e melhorias nos comandos de inicialização ([514c1e5](https://github.com/lgobatto/wp-kit/commit/514c1e50000434b682495d4d2c6bc66dee1c7a47))
|
|
42
|
+
* **tests:** adicionar script 'open-cursor' ao package.json para abrir o workspace do projeto de teste após a configuração ([481d729](https://github.com/lgobatto/wp-kit/commit/481d7296063889aeef35d890b1dc7013d4a6d195))
|
|
43
|
+
* **tests:** adicionar scripts de configuração e limpeza para testes automatizados ([a376538](https://github.com/lgobatto/wp-kit/commit/a376538a5b725e5433cc5530a6ca5e024b0827c1))
|
|
44
|
+
* **vscode:** adicionar associações de arquivos para suporte a diferentes tipos de templates no settings.json ([f38a1db](https://github.com/lgobatto/wp-kit/commit/f38a1db61e75961b94ba1f3717de9f52baa4c19f))
|
|
45
|
+
* **workspace:** adicionar configurações de busca e salvamento automático no template workspace.json.hbs ([fcbe381](https://github.com/lgobatto/wp-kit/commit/fcbe381a20f6a202f49b4069069dd29d64c1a2ac))
|
|
46
|
+
* **workspace:** adicionar configurações de formatação para Blade, JavaScript, TypeScript, CSS e SCSS no template workspace.json.hbs ([62548c2](https://github.com/lgobatto/wp-kit/commit/62548c2fce183ef0d1717cc49f477dfb1fde202e))
|
|
47
|
+
* **workspace:** adicionar configurações de GitLens no template de workspace ([1c7f39b](https://github.com/lgobatto/wp-kit/commit/1c7f39b4691758a66499b3f7115660ca7173585a))
|
package/README.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# @codigodoleo/wp-kit (CLI: leo-wp)
|
|
2
|
+
|
|
3
|
+
Simplifique e padronize seus projetos WordPress em minutos. Este CLI cria um esqueleto moderno, opinativo e pronto para CI/CD, com integração a temas (Sage), qualidade de código e fluxos de deploy — tudo com escolhas inteligentes e mínima fricção.
|
|
4
|
+
|
|
5
|
+
## Por que usar
|
|
6
|
+
- Padronização entre projetos e equipes
|
|
7
|
+
- Onboarding rápido (menos passos manuais, menos erros)
|
|
8
|
+
- CI/CD dinâmico que se adapta às suas escolhas (GitLab, GitHub ou Bitbucket)
|
|
9
|
+
- Convenções modernas (Conventional Commits, linters, hooks)
|
|
10
|
+
|
|
11
|
+
## Requisitos
|
|
12
|
+
- Node.js 18+ (recomendado 22+)
|
|
13
|
+
- npm
|
|
14
|
+
- Git
|
|
15
|
+
- PHP 8.2+ e Composer (necessário para tema Sage e ferramentas PHP)
|
|
16
|
+
|
|
17
|
+
## Quickstart (1 minuto)
|
|
18
|
+
- Criar projeto interativo:
|
|
19
|
+
```bash
|
|
20
|
+
npx @codigodoleo/wp-kit init --output meu-projeto
|
|
21
|
+
```
|
|
22
|
+
- Projeto padrão (sem perguntas):
|
|
23
|
+
```bash
|
|
24
|
+
npx @codigodoleo/wp-kit init --output meu-projeto --defaults
|
|
25
|
+
```
|
|
26
|
+
- Instalação global (opcional):
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g @codigodoleo/wp-kit
|
|
29
|
+
leo-wp init --output meu-projeto
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## O que é gerado
|
|
33
|
+
- Estrutura WordPress com `content/` (temas, plugins, uploads)
|
|
34
|
+
- Configurações úteis em `server/` e arquivos base (`.env`, `.editorconfig`, etc.)
|
|
35
|
+
- Workspace do VSCode (opcional)
|
|
36
|
+
- Pipelines de CI prontos, conforme o provedor escolhido:
|
|
37
|
+
- GitLab: `.gitlab-ci.yml`
|
|
38
|
+
- GitHub: `.github/workflows/ci.yml`
|
|
39
|
+
- Bitbucket: `bitbucket-pipelines.yml`
|
|
40
|
+
- Convenções de Git e qualidade (husky, commitlint, lint-staged, ESLint, Prettier, Stylelint, Pint)
|
|
41
|
+
- Integração opcional com tema Sage (v10/v11), com build automatizado
|
|
42
|
+
|
|
43
|
+
## Como funciona (visão rápida)
|
|
44
|
+
1. Você roda `init` e responde às perguntas (ou usa `--defaults`).
|
|
45
|
+
2. O CLI infere capacidades (Composer, Node, Sage, Docker) e monta `context.ci`.
|
|
46
|
+
3. O módulo `deploy` gera o pipeline certo para seu provedor (GitLab/GitHub/Bitbucket) com jobs somente do que faz sentido para o seu projeto.
|
|
47
|
+
|
|
48
|
+
Exemplo: Se você ativar Sage 11, ajustamos versões automaticamente (PHP/Node/WP) e incluímos o job de build do tema no CI.
|
|
49
|
+
|
|
50
|
+
## Fluxo recomendado
|
|
51
|
+
1. Execute o comando (interativo):
|
|
52
|
+
```bash
|
|
53
|
+
npx @codigodoleo/wp-kit init --output meu-wp
|
|
54
|
+
```
|
|
55
|
+
2. Escolha o provedor de Git (ex.: GitLab ou GitHub) no prompt do módulo "git".
|
|
56
|
+
3. Ative o módulo "deploy" (gera a pipeline automática).
|
|
57
|
+
4. Se desejar, habilite o tema Sage (o build entra na pipeline automaticamente).
|
|
58
|
+
5. Faça o primeiro commit e suba o repositório. O CI já estará pronto para rodar.
|
|
59
|
+
|
|
60
|
+
## Comandos disponíveis
|
|
61
|
+
- `init [options]` — Inicializa um novo projeto WordPress com DevOps
|
|
62
|
+
- `--help` — Ajuda
|
|
63
|
+
- `--version` — Versão
|
|
64
|
+
|
|
65
|
+
### Opções do `init`
|
|
66
|
+
- `--output <path>` — Diretório de saída do projeto
|
|
67
|
+
- `--defaults` — Usa configurações padrão sem interação
|
|
68
|
+
|
|
69
|
+
## Exemplos práticos
|
|
70
|
+
- Interativo, escolhendo tudo pelo prompt:
|
|
71
|
+
```bash
|
|
72
|
+
npx @codigodoleo/wp-kit init --output site-corporativo
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
- Projeto padrão, sem prompts (padrões inteligentes):
|
|
76
|
+
```bash
|
|
77
|
+
npx @codigodoleo/wp-kit init --output blog-interno --defaults
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Estrutura essencial de pastas
|
|
81
|
+
```
|
|
82
|
+
meu-projeto/
|
|
83
|
+
content/
|
|
84
|
+
themes/
|
|
85
|
+
plugins/
|
|
86
|
+
uploads/
|
|
87
|
+
server/
|
|
88
|
+
.gitlab-ci.yml | .github/workflows/ci.yml | bitbucket-pipelines.yml
|
|
89
|
+
.env, .editorconfig, README.md, etc.
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## CI Dinâmico (como decidimos o que rodar)
|
|
93
|
+
Detectamos automaticamente:
|
|
94
|
+
- `composer.json` (root/tema) → job de Composer
|
|
95
|
+
- `package.json` (root/tema) → job de Node
|
|
96
|
+
- Tema Sage ativo → job de build do tema
|
|
97
|
+
- Deploy Docker escolhido → job de deploy Docker
|
|
98
|
+
|
|
99
|
+
Provedores suportados:
|
|
100
|
+
- GitLab CI, GitHub Actions, Bitbucket Pipelines
|
|
101
|
+
|
|
102
|
+
## Convenções e qualidade
|
|
103
|
+
- Commits: Conventional Commits (ex.: `feat:`, `fix:`, `docs:`)
|
|
104
|
+
- Hooks: Husky + lint-staged
|
|
105
|
+
- Linters: ESLint, Prettier, Stylelint, Pint
|
|
106
|
+
|
|
107
|
+
## Dicas e solução de problemas
|
|
108
|
+
- Pipeline não foi gerado? Verifique se habilitou o módulo `deploy` e qual provedor selecionou no módulo `git`.
|
|
109
|
+
- Tema Sage não compilou? Garanta Composer/Node instalados e que o tema existe em `content/themes/<projectName>`.
|
|
110
|
+
|
|
111
|
+
## Contribuição
|
|
112
|
+
Pull Requests são muito bem-vindos! Use commits convencionais, escreva mudanças pequenas e inclua atualizações na documentação quando necessário.
|
|
113
|
+
|
|
114
|
+
—
|
|
115
|
+
Se quiser entender a fundo (arquitetura, módulos e CI dinâmico), veja a wiki em `docs/` deste repositório.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# 🔌 Recommended VSCode Extensions
|
|
2
|
+
|
|
3
|
+
These extensions ensure consistency and formatting in this project:
|
|
4
|
+
|
|
5
|
+
- [Prettier – Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
|
|
6
|
+
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
|
|
7
|
+
- [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig)
|
|
8
|
+
|
|
9
|
+
Optional:
|
|
10
|
+
|
|
11
|
+
- [Stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint)
|
package/bin/index.js
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Sistema de Hooks e Utilitários
|
|
2
|
+
|
|
3
|
+
O wp-devops-setup inclui um sistema de hooks inspirado no WordPress e utilitários para cópia de arquivos e pastas.
|
|
4
|
+
|
|
5
|
+
## Sistema de Hooks
|
|
6
|
+
|
|
7
|
+
O sistema de hooks do wp-devops-setup é inspirado no sistema de hooks do WordPress e permite que módulos registrem callbacks para serem executados em momentos específicos durante o processo de setup.
|
|
8
|
+
|
|
9
|
+
## Hooks Disponíveis
|
|
10
|
+
|
|
11
|
+
### `after_setup_complete`
|
|
12
|
+
Executado após todo o setup dos módulos ser concluído. Útil para operações que dependem de todos os arquivos terem sido criados.
|
|
13
|
+
|
|
14
|
+
**Parâmetros:**
|
|
15
|
+
- `context` - Contexto do projeto com todas as configurações
|
|
16
|
+
- `generator` - Instância do Generator
|
|
17
|
+
|
|
18
|
+
**Exemplo:**
|
|
19
|
+
```javascript
|
|
20
|
+
// No seu módulo (modules/seu-modulo/index.js)
|
|
21
|
+
export async function setupModule(context, generator) {
|
|
22
|
+
// ... seu setup normal ...
|
|
23
|
+
|
|
24
|
+
// Registra um hook para executar após todo o setup
|
|
25
|
+
generator.hooks.addAction('after_setup_complete', async (context, generator) => {
|
|
26
|
+
// Seu código aqui será executado após todo o setup
|
|
27
|
+
console.log('Setup completo!');
|
|
28
|
+
}, 10); // Prioridade 10
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Métodos do HookManager
|
|
33
|
+
|
|
34
|
+
### addAction(hookName, callback, priority, acceptedArgs)
|
|
35
|
+
Registra uma função para ser executada em um hook específico.
|
|
36
|
+
|
|
37
|
+
**Parâmetros:**
|
|
38
|
+
- `hookName` (string) - Nome do hook
|
|
39
|
+
- `callback` (Function) - Função a ser executada
|
|
40
|
+
- `priority` (number) - Prioridade (padrão: 10, menor número = maior prioridade)
|
|
41
|
+
- `acceptedArgs` (number) - Número de argumentos aceitos pela função
|
|
42
|
+
|
|
43
|
+
### addFilter(hookName, callback, priority, acceptedArgs)
|
|
44
|
+
Registra uma função que retorna um valor (filtro).
|
|
45
|
+
|
|
46
|
+
### doAction(hookName, ...args)
|
|
47
|
+
Executa todos os callbacks registrados para um hook.
|
|
48
|
+
|
|
49
|
+
### applyFilters(hookName, value, ...args)
|
|
50
|
+
Executa um filtro e retorna o valor modificado.
|
|
51
|
+
|
|
52
|
+
### removeAction(hookName, callback, priority)
|
|
53
|
+
Remove um callback de um hook.
|
|
54
|
+
|
|
55
|
+
### hasAction(hookName)
|
|
56
|
+
Verifica se um hook tem callbacks registrados.
|
|
57
|
+
|
|
58
|
+
## Prioridades
|
|
59
|
+
|
|
60
|
+
As prioridades funcionam da seguinte forma:
|
|
61
|
+
- **Menor número = Maior prioridade**
|
|
62
|
+
- Prioridade padrão: 10
|
|
63
|
+
- Hooks com prioridade menor são executados primeiro
|
|
64
|
+
|
|
65
|
+
**Exemplos de prioridades:**
|
|
66
|
+
- `1` - Muito alta prioridade (executa primeiro)
|
|
67
|
+
- `5` - Alta prioridade
|
|
68
|
+
- `10` - Prioridade padrão
|
|
69
|
+
- `15` - Baixa prioridade
|
|
70
|
+
- `20` - Muito baixa prioridade (executa por último)
|
|
71
|
+
|
|
72
|
+
## Exemplos de Uso
|
|
73
|
+
|
|
74
|
+
### Exemplo 1: Commit Git Inicial
|
|
75
|
+
```javascript
|
|
76
|
+
generator.hooks.addAction('after_setup_complete', async (context, generator) => {
|
|
77
|
+
// Faz commit inicial após todo o setup
|
|
78
|
+
execSync('git add .', { cwd: generator.cwd });
|
|
79
|
+
execSync('git commit -m "feat: initial setup"', { cwd: generator.cwd });
|
|
80
|
+
}, 10);
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Exemplo 2: Instalação de Dependências
|
|
84
|
+
```javascript
|
|
85
|
+
generator.hooks.addAction('after_setup_complete', async (context, generator) => {
|
|
86
|
+
// Instala dependências após todo o setup
|
|
87
|
+
execSync('npm install', { cwd: generator.cwd });
|
|
88
|
+
}, 5); // Alta prioridade
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Exemplo 3: Configuração Final
|
|
92
|
+
```javascript
|
|
93
|
+
generator.hooks.addAction('after_setup_complete', async (context, generator) => {
|
|
94
|
+
// Configurações finais que dependem de tudo estar pronto
|
|
95
|
+
console.log('Projeto configurado com sucesso!');
|
|
96
|
+
}, 20); // Baixa prioridade - executa por último
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Exemplo 4: Usando Filtros
|
|
100
|
+
```javascript
|
|
101
|
+
// Registra um filtro
|
|
102
|
+
generator.hooks.addFilter('project_name', (name) => {
|
|
103
|
+
return name.toUpperCase();
|
|
104
|
+
}, 10);
|
|
105
|
+
|
|
106
|
+
// Aplica o filtro
|
|
107
|
+
const finalName = generator.hooks.applyFilters('project_name', 'meu-projeto');
|
|
108
|
+
// Resultado: 'MEU-PROJETO'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Boas Práticas
|
|
112
|
+
|
|
113
|
+
1. **Use prioridades adequadas**: Hooks que dependem de outros devem ter prioridade menor
|
|
114
|
+
2. **Trate erros**: Sempre use try/catch nos seus callbacks
|
|
115
|
+
3. **Logs informativos**: Use o sistema de logs para informar o que está acontecendo
|
|
116
|
+
4. **Verificações**: Sempre verifique se as condições necessárias estão atendidas antes de executar
|
|
117
|
+
|
|
118
|
+
## Hooks Futuros
|
|
119
|
+
|
|
120
|
+
Outros hooks que podem ser adicionados no futuro:
|
|
121
|
+
- `before_setup_start` - Antes de qualquer setup
|
|
122
|
+
- `after_module_setup` - Após cada módulo individual
|
|
123
|
+
- `before_file_generation` - Antes de gerar arquivos
|
|
124
|
+
- `after_file_generation` - Após gerar arquivos
|
|
125
|
+
|
|
126
|
+
## Utilitários de Cópia
|
|
127
|
+
|
|
128
|
+
### copyFile(sourcePathRelative, moduleName, outputName)
|
|
129
|
+
Copia um arquivo individual.
|
|
130
|
+
|
|
131
|
+
**Parâmetros:**
|
|
132
|
+
- `sourcePathRelative` (string) - Caminho relativo do arquivo de origem
|
|
133
|
+
- `moduleName` (string|null) - Nome do módulo (opcional)
|
|
134
|
+
- `outputName` (string) - Nome do arquivo de destino (opcional)
|
|
135
|
+
|
|
136
|
+
**Exemplo:**
|
|
137
|
+
```javascript
|
|
138
|
+
await generator.copyFile('.gitignore');
|
|
139
|
+
await generator.copyFile('config.json', 'meu-modulo', 'custom-config.json');
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### copyDirectory(sourcePathRelative, moduleName, outputName, overwrite)
|
|
143
|
+
Copia uma pasta inteira com controle sobre sobrescrita.
|
|
144
|
+
|
|
145
|
+
**Parâmetros:**
|
|
146
|
+
- `sourcePathRelative` (string) - Caminho relativo da pasta de origem
|
|
147
|
+
- `moduleName` (string|null) - Nome do módulo (opcional)
|
|
148
|
+
- `outputName` (string) - Nome da pasta de destino (opcional)
|
|
149
|
+
- `overwrite` (boolean) - Se deve sobrescrever arquivos existentes (padrão: true)
|
|
150
|
+
|
|
151
|
+
**Comportamento:**
|
|
152
|
+
- Se a pasta de destino não existe: copia toda a pasta
|
|
153
|
+
- Se a pasta de destino existe e `overwrite = true`: mescla conteúdo (sobrescreve arquivos)
|
|
154
|
+
- Se a pasta de destino existe e `overwrite = false`: pula a cópia
|
|
155
|
+
|
|
156
|
+
**Exemplo:**
|
|
157
|
+
```javascript
|
|
158
|
+
// Copia pasta simples (sobrescreve por padrão)
|
|
159
|
+
await generator.copyDirectory('assets', 'meu-modulo');
|
|
160
|
+
|
|
161
|
+
// Copia pasta com nome personalizado
|
|
162
|
+
await generator.copyDirectory('assets', 'meu-modulo', 'custom-assets');
|
|
163
|
+
|
|
164
|
+
// Copia pasta sem sobrescrever
|
|
165
|
+
await generator.copyDirectory('assets', 'meu-modulo', 'protected-assets', false);
|
|
166
|
+
|
|
167
|
+
// Copia pasta de um módulo específico
|
|
168
|
+
await generator.copyDirectory('assets', 'meu-modulo', 'module-assets');
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Recursividade:**
|
|
172
|
+
A função copia recursivamente todas as subpastas e arquivos, mantendo a estrutura de diretórios.
|