@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.
Files changed (112) hide show
  1. package/.cspell.json +104 -0
  2. package/.editorconfig +13 -0
  3. package/.eslintignore +3 -0
  4. package/.eslintrc.json +24 -0
  5. package/.github/workflows/publish-npm.yml +32 -0
  6. package/.github/workflows/release-please.yml +25 -0
  7. package/.gitkeep +0 -0
  8. package/.husky/_/post-merge +0 -0
  9. package/.prettierignore +4 -0
  10. package/.prettierrc +8 -0
  11. package/.vscode/settings.json +19 -0
  12. package/CHANGELOG.md +47 -0
  13. package/README.md +115 -0
  14. package/VSCODE_EXTENSIONS.md +11 -0
  15. package/bin/index.js +4 -0
  16. package/docs/HOOKS-SYSTEM.md +172 -0
  17. package/git-deploy.sh +74 -0
  18. package/index.php +17 -0
  19. package/lib/cli.js +15 -0
  20. package/lib/commands/init.js +132 -0
  21. package/lib/core/generator.js +261 -0
  22. package/lib/core/hook-manager.js +172 -0
  23. package/lib/core/infer-ci-capabilities.js +119 -0
  24. package/lib/prompts/index.js +105 -0
  25. package/lib/prompts/loadModulePrompts.js +27 -0
  26. package/lib/utils/generate-from-template.js +17 -0
  27. package/lib/utils/git.js +17 -0
  28. package/lib/utils/logger.js +28 -0
  29. package/modules/deploy/index.js +39 -0
  30. package/modules/deploy/prompts.js +27 -0
  31. package/modules/deploy/templates/.github/workflows/ci.yml.hbs +103 -0
  32. package/modules/deploy/templates/.gitlab/gitlab-ci.yml.hbs +154 -0
  33. package/modules/deploy/templates/bitbucket-pipelines.yml.hbs +97 -0
  34. package/modules/docs/index.js +3 -0
  35. package/modules/docs/prompts.js +8 -0
  36. package/modules/docs/templates/README.md.hbs +160 -0
  37. package/modules/docs/templates/docs/Arquitetura.md +399 -0
  38. package/modules/docs/templates/docs/Deploy-Pipeline.md +113 -0
  39. package/modules/docs/templates/docs/Desenvolvimento.md +1116 -0
  40. package/modules/docs/templates/docs/Getting-Started.md +493 -0
  41. package/modules/docs/templates/docs/Infraestrutura.md +211 -0
  42. package/modules/docs/templates/docs/Monitoramento.md +302 -0
  43. package/modules/docs/templates/docs/Sync-the-Production-DB-with-the-Staging-DB.md +8 -0
  44. package/modules/docs/templates/docs/Troubleshooting.md +3 -0
  45. package/modules/git/.commitlintrc.json +136 -0
  46. package/modules/git/.github/PULL_REQUEST_TEMPLATE.md +42 -0
  47. package/modules/git/.gitlab/merge_request_templates/default.md +42 -0
  48. package/modules/git/.gitmessage +29 -0
  49. package/modules/git/.husky/commit-msg +4 -0
  50. package/modules/git/.husky/pre-commit +27 -0
  51. package/modules/git/.lintstagedrc.json +7 -0
  52. package/modules/git/.vscode/commit-instructions.md +59 -0
  53. package/modules/git/.vscode/conventional-commits.code-snippets +62 -0
  54. package/modules/git/.vscode/copilot.json +39 -0
  55. package/modules/git/docs/CONVENTIONAL-COMMITS.md +131 -0
  56. package/modules/git/index.js +137 -0
  57. package/modules/git/prompts.js +23 -0
  58. package/modules/git/templates/.lando.yml.hbs +13 -0
  59. package/modules/git/templates/package.json.hbs +15 -0
  60. package/modules/git/templates/workspace.json.hbs +114 -0
  61. package/modules/lint/.eslintignore +36 -0
  62. package/modules/lint/.eslintrc.json +8 -0
  63. package/modules/lint/.prettierignore +36 -0
  64. package/modules/lint/.prettierrc.json +29 -0
  65. package/modules/lint/.stylelintignore +19 -0
  66. package/modules/lint/.stylelintrc.json +9 -0
  67. package/modules/lint/index.js +15 -0
  68. package/modules/lint/pint.json +26 -0
  69. package/modules/lint/prompts.js +16 -0
  70. package/modules/lint/templates/.lando.yml.hbs +10 -0
  71. package/modules/lint/templates/package.json.hbs +16 -0
  72. package/modules/lint/templates/workspace.json.hbs +56 -0
  73. package/modules/php/index.js +3 -0
  74. package/modules/php/prompts.js +8 -0
  75. package/modules/php/scripts/php-wrapper.sh +38 -0
  76. package/modules/php/scripts/pint-wrapper.sh +44 -0
  77. package/modules/php/templates/.lando.yml.hbs +11 -0
  78. package/modules/php/templates/composer.json.hbs +6 -0
  79. package/modules/php/templates/workspace.json.hbs +74 -0
  80. package/modules/redis/prompts.js +8 -0
  81. package/modules/redis/templates/.lando.yml.hbs +8 -0
  82. package/modules/sage/index.js +20 -0
  83. package/modules/sage/prompts.js +16 -0
  84. package/modules/sage/templates/.lando.yml.hbs +64 -0
  85. package/modules/sage/templates/theme/composer.json.hbs +18 -0
  86. package/modules/sage/templates/theme/package.json.hbs +11 -0
  87. package/modules/sage/templates/theme/style.css.hbs +13 -0
  88. package/modules/sage/templates/theme/vite.config.js.hbs +53 -0
  89. package/modules/sage/templates/workspace.json.hbs +67 -0
  90. package/modules/test-directory/assets/module-file.txt +1 -0
  91. package/modules/test-directory/index.js +19 -0
  92. package/modules/test-directory/prompts.js +8 -0
  93. package/modules/test-directory/test-assets/file1.txt +1 -0
  94. package/modules/test-directory/test-assets/file2.txt +1 -0
  95. package/modules/test-directory/test-assets/subfolder/config.json +4 -0
  96. package/package.json +54 -0
  97. package/release-please-config.json +17 -0
  98. package/server/php/php.ini +48 -0
  99. package/server/www/rocket.conf +283 -0
  100. package/templates/.editorconfig.hbs +39 -0
  101. package/templates/.env.hbs +48 -0
  102. package/templates/.gitignore.hbs +86 -0
  103. package/templates/.lando.yml.hbs +44 -0
  104. package/templates/README.md.hbs +12 -0
  105. package/templates/composer.json.hbs +60 -0
  106. package/templates/package.json.hbs +47 -0
  107. package/templates/server/cmd/install-wp.sh.hbs +58 -0
  108. package/templates/server/www/vhosts.conf.hbs +71 -0
  109. package/templates/workspace.json.hbs +177 -0
  110. package/test-copy-directory.js +43 -0
  111. package/test-overwrite.js +45 -0
  112. 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
@@ -0,0 +1,3 @@
1
+ node_modules/
2
+ dist/
3
+ __test-sandbox__/
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
@@ -0,0 +1,4 @@
1
+ node_modules/
2
+ dist/
3
+ __test-sandbox__/
4
+ coverage/
package/.prettierrc ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "semi": true,
3
+ "singleQuote": true,
4
+ "tabWidth": 2,
5
+ "printWidth": 100,
6
+ "trailingComma": "es5",
7
+ "arrowParens": "always"
8
+ }
@@ -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,4 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from '../lib/cli.js';
3
+
4
+ runCli();
@@ -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.