@hivehub/rulebook 1.2.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 (379) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +539 -0
  3. package/dist/agents/claude-code.d.ts +69 -0
  4. package/dist/agents/claude-code.d.ts.map +1 -0
  5. package/dist/agents/claude-code.js +180 -0
  6. package/dist/agents/claude-code.js.map +1 -0
  7. package/dist/agents/cursor-agent.d.ts +184 -0
  8. package/dist/agents/cursor-agent.d.ts.map +1 -0
  9. package/dist/agents/cursor-agent.js +299 -0
  10. package/dist/agents/cursor-agent.js.map +1 -0
  11. package/dist/agents/gemini-cli.d.ts +69 -0
  12. package/dist/agents/gemini-cli.d.ts.map +1 -0
  13. package/dist/agents/gemini-cli.js +180 -0
  14. package/dist/agents/gemini-cli.js.map +1 -0
  15. package/dist/cli/commands.d.ts +57 -0
  16. package/dist/cli/commands.d.ts.map +1 -0
  17. package/dist/cli/commands.js +1370 -0
  18. package/dist/cli/commands.js.map +1 -0
  19. package/dist/cli/docs-prompts.d.ts +3 -0
  20. package/dist/cli/docs-prompts.d.ts.map +1 -0
  21. package/dist/cli/docs-prompts.js +45 -0
  22. package/dist/cli/docs-prompts.js.map +1 -0
  23. package/dist/cli/prompts.d.ts +6 -0
  24. package/dist/cli/prompts.d.ts.map +1 -0
  25. package/dist/cli/prompts.js +376 -0
  26. package/dist/cli/prompts.js.map +1 -0
  27. package/dist/core/agent-manager.d.ts +89 -0
  28. package/dist/core/agent-manager.d.ts.map +1 -0
  29. package/dist/core/agent-manager.js +546 -0
  30. package/dist/core/agent-manager.js.map +1 -0
  31. package/dist/core/auto-fixer.d.ts +14 -0
  32. package/dist/core/auto-fixer.d.ts.map +1 -0
  33. package/dist/core/auto-fixer.js +207 -0
  34. package/dist/core/auto-fixer.js.map +1 -0
  35. package/dist/core/changelog-generator.d.ts +44 -0
  36. package/dist/core/changelog-generator.d.ts.map +1 -0
  37. package/dist/core/changelog-generator.js +222 -0
  38. package/dist/core/changelog-generator.js.map +1 -0
  39. package/dist/core/cli-bridge.d.ts +113 -0
  40. package/dist/core/cli-bridge.d.ts.map +1 -0
  41. package/dist/core/cli-bridge.js +1094 -0
  42. package/dist/core/cli-bridge.js.map +1 -0
  43. package/dist/core/config-manager.d.ts +65 -0
  44. package/dist/core/config-manager.d.ts.map +1 -0
  45. package/dist/core/config-manager.js +266 -0
  46. package/dist/core/config-manager.js.map +1 -0
  47. package/dist/core/coverage-checker.d.ts +14 -0
  48. package/dist/core/coverage-checker.d.ts.map +1 -0
  49. package/dist/core/coverage-checker.js +176 -0
  50. package/dist/core/coverage-checker.js.map +1 -0
  51. package/dist/core/custom-templates.d.ts +27 -0
  52. package/dist/core/custom-templates.d.ts.map +1 -0
  53. package/dist/core/custom-templates.js +122 -0
  54. package/dist/core/custom-templates.js.map +1 -0
  55. package/dist/core/dependency-checker.d.ts +21 -0
  56. package/dist/core/dependency-checker.d.ts.map +1 -0
  57. package/dist/core/dependency-checker.js +247 -0
  58. package/dist/core/dependency-checker.js.map +1 -0
  59. package/dist/core/detector.d.ts +3 -0
  60. package/dist/core/detector.d.ts.map +1 -0
  61. package/dist/core/detector.js +1443 -0
  62. package/dist/core/detector.js.map +1 -0
  63. package/dist/core/docs-generator.d.ts +9 -0
  64. package/dist/core/docs-generator.d.ts.map +1 -0
  65. package/dist/core/docs-generator.js +531 -0
  66. package/dist/core/docs-generator.js.map +1 -0
  67. package/dist/core/generator.d.ts +16 -0
  68. package/dist/core/generator.d.ts.map +1 -0
  69. package/dist/core/generator.js +561 -0
  70. package/dist/core/generator.js.map +1 -0
  71. package/dist/core/gitignore-generator.d.ts +13 -0
  72. package/dist/core/gitignore-generator.d.ts.map +1 -0
  73. package/dist/core/gitignore-generator.js +307 -0
  74. package/dist/core/gitignore-generator.js.map +1 -0
  75. package/dist/core/health-scorer.d.ts +22 -0
  76. package/dist/core/health-scorer.d.ts.map +1 -0
  77. package/dist/core/health-scorer.js +395 -0
  78. package/dist/core/health-scorer.js.map +1 -0
  79. package/dist/core/logger.d.ts +116 -0
  80. package/dist/core/logger.d.ts.map +1 -0
  81. package/dist/core/logger.js +289 -0
  82. package/dist/core/logger.js.map +1 -0
  83. package/dist/core/merger.d.ts +6 -0
  84. package/dist/core/merger.d.ts.map +1 -0
  85. package/dist/core/merger.js +131 -0
  86. package/dist/core/merger.js.map +1 -0
  87. package/dist/core/migrator.d.ts +19 -0
  88. package/dist/core/migrator.d.ts.map +1 -0
  89. package/dist/core/migrator.js +102 -0
  90. package/dist/core/migrator.js.map +1 -0
  91. package/dist/core/minimal-scaffolder.d.ts +8 -0
  92. package/dist/core/minimal-scaffolder.d.ts.map +1 -0
  93. package/dist/core/minimal-scaffolder.js +51 -0
  94. package/dist/core/minimal-scaffolder.js.map +1 -0
  95. package/dist/core/modern-console-new.d.ts +81 -0
  96. package/dist/core/modern-console-new.d.ts.map +1 -0
  97. package/dist/core/modern-console-new.js +340 -0
  98. package/dist/core/modern-console-new.js.map +1 -0
  99. package/dist/core/modern-console.d.ts +99 -0
  100. package/dist/core/modern-console.d.ts.map +1 -0
  101. package/dist/core/modern-console.js +568 -0
  102. package/dist/core/modern-console.js.map +1 -0
  103. package/dist/core/openspec-manager.d.ts +133 -0
  104. package/dist/core/openspec-manager.d.ts.map +1 -0
  105. package/dist/core/openspec-manager.js +605 -0
  106. package/dist/core/openspec-manager.js.map +1 -0
  107. package/dist/core/openspec-migrator.d.ts +27 -0
  108. package/dist/core/openspec-migrator.d.ts.map +1 -0
  109. package/dist/core/openspec-migrator.js +255 -0
  110. package/dist/core/openspec-migrator.js.map +1 -0
  111. package/dist/core/task-manager.d.ts +65 -0
  112. package/dist/core/task-manager.d.ts.map +1 -0
  113. package/dist/core/task-manager.js +318 -0
  114. package/dist/core/task-manager.js.map +1 -0
  115. package/dist/core/test-task-manager.d.ts +49 -0
  116. package/dist/core/test-task-manager.d.ts.map +1 -0
  117. package/dist/core/test-task-manager.js +121 -0
  118. package/dist/core/test-task-manager.js.map +1 -0
  119. package/dist/core/validator.d.ts +21 -0
  120. package/dist/core/validator.d.ts.map +1 -0
  121. package/dist/core/validator.js +177 -0
  122. package/dist/core/validator.js.map +1 -0
  123. package/dist/core/version-bumper.d.ts +19 -0
  124. package/dist/core/version-bumper.d.ts.map +1 -0
  125. package/dist/core/version-bumper.js +180 -0
  126. package/dist/core/version-bumper.js.map +1 -0
  127. package/dist/core/watcher.d.ts +9 -0
  128. package/dist/core/watcher.d.ts.map +1 -0
  129. package/dist/core/watcher.js +22 -0
  130. package/dist/core/watcher.js.map +1 -0
  131. package/dist/core/workflow-generator.d.ts +10 -0
  132. package/dist/core/workflow-generator.d.ts.map +1 -0
  133. package/dist/core/workflow-generator.js +279 -0
  134. package/dist/core/workflow-generator.js.map +1 -0
  135. package/dist/index.d.ts +3 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +159 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/mcp/handlers/archive-task.d.ts +17 -0
  140. package/dist/mcp/handlers/archive-task.d.ts.map +1 -0
  141. package/dist/mcp/handlers/archive-task.js +36 -0
  142. package/dist/mcp/handlers/archive-task.js.map +1 -0
  143. package/dist/mcp/handlers/create-task.d.ts +17 -0
  144. package/dist/mcp/handlers/create-task.d.ts.map +1 -0
  145. package/dist/mcp/handlers/create-task.js +56 -0
  146. package/dist/mcp/handlers/create-task.js.map +1 -0
  147. package/dist/mcp/handlers/list-tasks.d.ts +22 -0
  148. package/dist/mcp/handlers/list-tasks.d.ts.map +1 -0
  149. package/dist/mcp/handlers/list-tasks.js +42 -0
  150. package/dist/mcp/handlers/list-tasks.js.map +1 -0
  151. package/dist/mcp/handlers/show-task.d.ts +25 -0
  152. package/dist/mcp/handlers/show-task.d.ts.map +1 -0
  153. package/dist/mcp/handlers/show-task.js +43 -0
  154. package/dist/mcp/handlers/show-task.js.map +1 -0
  155. package/dist/mcp/handlers/update-task.d.ts +17 -0
  156. package/dist/mcp/handlers/update-task.d.ts.map +1 -0
  157. package/dist/mcp/handlers/update-task.js +35 -0
  158. package/dist/mcp/handlers/update-task.js.map +1 -0
  159. package/dist/mcp/handlers/validate-task.d.ts +15 -0
  160. package/dist/mcp/handlers/validate-task.d.ts.map +1 -0
  161. package/dist/mcp/handlers/validate-task.js +27 -0
  162. package/dist/mcp/handlers/validate-task.js.map +1 -0
  163. package/dist/mcp/rulebook-config.d.ts +22 -0
  164. package/dist/mcp/rulebook-config.d.ts.map +1 -0
  165. package/dist/mcp/rulebook-config.js +65 -0
  166. package/dist/mcp/rulebook-config.js.map +1 -0
  167. package/dist/mcp/rulebook-server.d.ts +4 -0
  168. package/dist/mcp/rulebook-server.d.ts.map +1 -0
  169. package/dist/mcp/rulebook-server.js +246 -0
  170. package/dist/mcp/rulebook-server.js.map +1 -0
  171. package/dist/types.d.ts +190 -0
  172. package/dist/types.d.ts.map +1 -0
  173. package/dist/types.js +2 -0
  174. package/dist/types.js.map +1 -0
  175. package/dist/utils/file-system.d.ts +9 -0
  176. package/dist/utils/file-system.d.ts.map +1 -0
  177. package/dist/utils/file-system.js +51 -0
  178. package/dist/utils/file-system.js.map +1 -0
  179. package/dist/utils/git-hooks.d.ts +8 -0
  180. package/dist/utils/git-hooks.d.ts.map +1 -0
  181. package/dist/utils/git-hooks.js +440 -0
  182. package/dist/utils/git-hooks.js.map +1 -0
  183. package/dist/utils/rulesignore.d.ts +9 -0
  184. package/dist/utils/rulesignore.d.ts.map +1 -0
  185. package/dist/utils/rulesignore.js +42 -0
  186. package/dist/utils/rulesignore.js.map +1 -0
  187. package/package.json +106 -0
  188. package/templates/cli/AIDER.md +49 -0
  189. package/templates/cli/AMAZON_Q.md +25 -0
  190. package/templates/cli/AUGGIE.md +32 -0
  191. package/templates/cli/CLAUDE.md +32 -0
  192. package/templates/cli/CLAUDE_CODE.md +35 -0
  193. package/templates/cli/CLINE.md +32 -0
  194. package/templates/cli/CODEBUDDY.md +20 -0
  195. package/templates/cli/CODEIUM.md +20 -0
  196. package/templates/cli/CODEX.md +21 -0
  197. package/templates/cli/CONTINUE.md +34 -0
  198. package/templates/cli/CURSOR_CLI.md +28 -0
  199. package/templates/cli/FACTORY.md +18 -0
  200. package/templates/cli/GEMINI.md +35 -0
  201. package/templates/cli/KILOCODE.md +18 -0
  202. package/templates/cli/OPENCODE.md +18 -0
  203. package/templates/cli/_GENERIC_TEMPLATE.md +29 -0
  204. package/templates/commands/rulebook-task-apply.md +67 -0
  205. package/templates/commands/rulebook-task-archive.md +70 -0
  206. package/templates/commands/rulebook-task-create.md +93 -0
  207. package/templates/commands/rulebook-task-list.md +42 -0
  208. package/templates/commands/rulebook-task-show.md +52 -0
  209. package/templates/commands/rulebook-task-validate.md +53 -0
  210. package/templates/core/AGENT_AUTOMATION.md +184 -0
  211. package/templates/core/DAG.md +304 -0
  212. package/templates/core/DOCUMENTATION_RULES.md +37 -0
  213. package/templates/core/QUALITY_ENFORCEMENT.md +68 -0
  214. package/templates/core/RULEBOOK.md +1874 -0
  215. package/templates/frameworks/ANGULAR.md +36 -0
  216. package/templates/frameworks/DJANGO.md +83 -0
  217. package/templates/frameworks/ELECTRON.md +147 -0
  218. package/templates/frameworks/FLASK.md +38 -0
  219. package/templates/frameworks/FLUTTER.md +55 -0
  220. package/templates/frameworks/JQUERY.md +32 -0
  221. package/templates/frameworks/LARAVEL.md +38 -0
  222. package/templates/frameworks/NESTJS.md +43 -0
  223. package/templates/frameworks/NEXTJS.md +127 -0
  224. package/templates/frameworks/NUXT.md +40 -0
  225. package/templates/frameworks/RAILS.md +66 -0
  226. package/templates/frameworks/REACT.md +38 -0
  227. package/templates/frameworks/REACT_NATIVE.md +47 -0
  228. package/templates/frameworks/SPRING.md +39 -0
  229. package/templates/frameworks/SYMFONY.md +36 -0
  230. package/templates/frameworks/VUE.md +36 -0
  231. package/templates/frameworks/ZEND.md +35 -0
  232. package/templates/git/CI_CD_PATTERNS.md +661 -0
  233. package/templates/git/GITHUB_ACTIONS.md +728 -0
  234. package/templates/git/GITLAB_CI.md +730 -0
  235. package/templates/git/GIT_WORKFLOW.md +1157 -0
  236. package/templates/git/SECRETS_MANAGEMENT.md +585 -0
  237. package/templates/hooks/COMMIT_MSG.md +530 -0
  238. package/templates/hooks/POST_CHECKOUT.md +546 -0
  239. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -0
  240. package/templates/hooks/PRE_COMMIT.md +414 -0
  241. package/templates/hooks/PRE_PUSH.md +601 -0
  242. package/templates/hooks/csharp-pre-commit.sh +23 -0
  243. package/templates/hooks/csharp-pre-push.sh +23 -0
  244. package/templates/hooks/dart-pre-commit.sh +30 -0
  245. package/templates/hooks/dart-pre-push.sh +25 -0
  246. package/templates/hooks/elixir-pre-commit.sh +32 -0
  247. package/templates/hooks/elixir-pre-push.sh +31 -0
  248. package/templates/hooks/erlang-pre-commit.sh +30 -0
  249. package/templates/hooks/erlang-pre-push.sh +37 -0
  250. package/templates/hooks/go-pre-commit.sh +40 -0
  251. package/templates/hooks/go-pre-push.sh +31 -0
  252. package/templates/hooks/haskell-pre-commit.sh +41 -0
  253. package/templates/hooks/haskell-pre-push.sh +37 -0
  254. package/templates/hooks/java-pre-commit.sh +34 -0
  255. package/templates/hooks/java-pre-push.sh +24 -0
  256. package/templates/hooks/kotlin-pre-commit.sh +32 -0
  257. package/templates/hooks/kotlin-pre-push.sh +16 -0
  258. package/templates/hooks/php-pre-commit.sh +36 -0
  259. package/templates/hooks/php-pre-push.sh +26 -0
  260. package/templates/hooks/python-pre-commit.sh +51 -0
  261. package/templates/hooks/python-pre-push.sh +25 -0
  262. package/templates/hooks/ruby-pre-commit.sh +33 -0
  263. package/templates/hooks/ruby-pre-push.sh +32 -0
  264. package/templates/hooks/rust-pre-commit.sh +30 -0
  265. package/templates/hooks/rust-pre-push.sh +30 -0
  266. package/templates/hooks/scala-pre-commit.sh +32 -0
  267. package/templates/hooks/scala-pre-push.sh +24 -0
  268. package/templates/hooks/swift-pre-commit.sh +25 -0
  269. package/templates/hooks/swift-pre-push.sh +23 -0
  270. package/templates/hooks/typescript-pre-commit.sh +37 -0
  271. package/templates/hooks/typescript-pre-push.sh +36 -0
  272. package/templates/ides/COPILOT.md +37 -0
  273. package/templates/ides/CURSOR.md +43 -0
  274. package/templates/ides/JETBRAINS_AI.md +35 -0
  275. package/templates/ides/REPLIT.md +36 -0
  276. package/templates/ides/TABNINE.md +29 -0
  277. package/templates/ides/VSCODE.md +40 -0
  278. package/templates/ides/WINDSURF.md +36 -0
  279. package/templates/ides/ZED.md +32 -0
  280. package/templates/languages/ADA.md +58 -0
  281. package/templates/languages/C.md +333 -0
  282. package/templates/languages/CPP.md +743 -0
  283. package/templates/languages/CSHARP.md +417 -0
  284. package/templates/languages/DART.md +332 -0
  285. package/templates/languages/ELIXIR.md +454 -0
  286. package/templates/languages/ERLANG.md +361 -0
  287. package/templates/languages/GO.md +645 -0
  288. package/templates/languages/HASKELL.md +177 -0
  289. package/templates/languages/JAVA.md +607 -0
  290. package/templates/languages/JAVASCRIPT.md +631 -0
  291. package/templates/languages/JULIA.md +97 -0
  292. package/templates/languages/KOTLIN.md +511 -0
  293. package/templates/languages/LISP.md +100 -0
  294. package/templates/languages/LUA.md +74 -0
  295. package/templates/languages/OBJECTIVEC.md +90 -0
  296. package/templates/languages/PHP.md +416 -0
  297. package/templates/languages/PYTHON.md +682 -0
  298. package/templates/languages/R.md +350 -0
  299. package/templates/languages/RUBY.md +421 -0
  300. package/templates/languages/RUST.md +477 -0
  301. package/templates/languages/SAS.md +73 -0
  302. package/templates/languages/SCALA.md +348 -0
  303. package/templates/languages/SOLIDITY.md +580 -0
  304. package/templates/languages/SQL.md +137 -0
  305. package/templates/languages/SWIFT.md +466 -0
  306. package/templates/languages/TYPESCRIPT.md +591 -0
  307. package/templates/languages/ZIG.md +265 -0
  308. package/templates/modules/ATLASSIAN.md +255 -0
  309. package/templates/modules/CONTEXT7.md +54 -0
  310. package/templates/modules/FIGMA.md +267 -0
  311. package/templates/modules/GITHUB_MCP.md +64 -0
  312. package/templates/modules/GRAFANA.md +328 -0
  313. package/templates/modules/NOTION.md +247 -0
  314. package/templates/modules/PLAYWRIGHT.md +90 -0
  315. package/templates/modules/RULEBOOK_MCP.md +156 -0
  316. package/templates/modules/SERENA.md +337 -0
  317. package/templates/modules/SUPABASE.md +223 -0
  318. package/templates/modules/SYNAP.md +69 -0
  319. package/templates/modules/VECTORIZER.md +63 -0
  320. package/templates/services/AZURE_BLOB.md +184 -0
  321. package/templates/services/CASSANDRA.md +239 -0
  322. package/templates/services/DYNAMODB.md +308 -0
  323. package/templates/services/ELASTICSEARCH.md +347 -0
  324. package/templates/services/GCS.md +178 -0
  325. package/templates/services/INFLUXDB.md +265 -0
  326. package/templates/services/KAFKA.md +341 -0
  327. package/templates/services/MARIADB.md +183 -0
  328. package/templates/services/MEMCACHED.md +242 -0
  329. package/templates/services/MINIO.md +201 -0
  330. package/templates/services/MONGODB.md +268 -0
  331. package/templates/services/MYSQL.md +358 -0
  332. package/templates/services/NEO4J.md +247 -0
  333. package/templates/services/ORACLE.md +290 -0
  334. package/templates/services/POSTGRESQL.md +326 -0
  335. package/templates/services/RABBITMQ.md +286 -0
  336. package/templates/services/REDIS.md +292 -0
  337. package/templates/services/S3.md +298 -0
  338. package/templates/services/SQLITE.md +294 -0
  339. package/templates/services/SQLSERVER.md +294 -0
  340. package/templates/workflows/codespell.yml +31 -0
  341. package/templates/workflows/cpp-lint.yml +47 -0
  342. package/templates/workflows/cpp-publish.yml +119 -0
  343. package/templates/workflows/cpp-test.yml +77 -0
  344. package/templates/workflows/dotnet-lint.yml +29 -0
  345. package/templates/workflows/dotnet-publish.yml +40 -0
  346. package/templates/workflows/dotnet-test.yml +41 -0
  347. package/templates/workflows/elixir-lint.yml +45 -0
  348. package/templates/workflows/elixir-publish.yml +49 -0
  349. package/templates/workflows/elixir-test.yml +54 -0
  350. package/templates/workflows/erlang-lint.yml +47 -0
  351. package/templates/workflows/erlang-test.yml +62 -0
  352. package/templates/workflows/go-lint.yml +39 -0
  353. package/templates/workflows/go-publish.yml +95 -0
  354. package/templates/workflows/go-test.yml +59 -0
  355. package/templates/workflows/java-lint.yml +60 -0
  356. package/templates/workflows/java-publish.yml +120 -0
  357. package/templates/workflows/java-test.yml +85 -0
  358. package/templates/workflows/kotlin-lint.yml +34 -0
  359. package/templates/workflows/kotlin-publish.yml +56 -0
  360. package/templates/workflows/kotlin-test.yml +48 -0
  361. package/templates/workflows/php-lint.yml +39 -0
  362. package/templates/workflows/php-publish.yml +50 -0
  363. package/templates/workflows/php-test.yml +54 -0
  364. package/templates/workflows/python-lint.yml +47 -0
  365. package/templates/workflows/python-publish.yml +91 -0
  366. package/templates/workflows/python-test.yml +59 -0
  367. package/templates/workflows/rust-lint.yml +54 -0
  368. package/templates/workflows/rust-publish.yml +66 -0
  369. package/templates/workflows/rust-test.yml +75 -0
  370. package/templates/workflows/solidity-lint.yml +41 -0
  371. package/templates/workflows/solidity-test.yml +47 -0
  372. package/templates/workflows/swift-lint.yml +32 -0
  373. package/templates/workflows/swift-publish.yml +58 -0
  374. package/templates/workflows/swift-test.yml +44 -0
  375. package/templates/workflows/typescript-lint.yml +61 -0
  376. package/templates/workflows/typescript-publish.yml +60 -0
  377. package/templates/workflows/typescript-test.yml +73 -0
  378. package/templates/workflows/zig-lint.yml +27 -0
  379. package/templates/workflows/zig-test.yml +40 -0
@@ -0,0 +1,119 @@
1
+ name: Publish C++ Package
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ tag:
9
+ description: 'Tag to publish (e.g., v1.0.0)'
10
+ required: true
11
+
12
+ jobs:
13
+ build-and-publish:
14
+ runs-on: ${{ matrix.os }}
15
+ strategy:
16
+ matrix:
17
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
18
+ include:
19
+ - os: ubuntu-latest
20
+ artifact_name: linux-x64
21
+ - os: windows-latest
22
+ artifact_name: windows-x64
23
+ - os: macos-latest
24
+ artifact_name: macos-arm64
25
+
26
+ steps:
27
+ - uses: actions/checkout@v5
28
+ with:
29
+ ref: ${{ github.event.inputs.tag || github.ref }}
30
+
31
+ - name: Install dependencies (Ubuntu)
32
+ if: runner.os == 'Linux'
33
+ run: |
34
+ sudo apt-get update
35
+ sudo apt-get install -y cmake ninja-build clang-format-15 clang-tidy-15
36
+
37
+ - name: Install dependencies (macOS)
38
+ if: runner.os == 'macOS'
39
+ run: brew install cmake ninja llvm
40
+
41
+ - name: Install dependencies (Windows)
42
+ if: runner.os == 'Windows'
43
+ run: choco install cmake ninja
44
+
45
+ - name: Run clang-format check
46
+ if: runner.os == 'Linux'
47
+ run: |
48
+ find src include tests -name '*.cpp' -o -name '*.hpp' | \
49
+ xargs clang-format-15 --dry-run --Werror
50
+
51
+ - name: Run clang-tidy
52
+ if: runner.os == 'Linux'
53
+ run: |
54
+ cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
55
+ find src -name '*.cpp' | xargs clang-tidy-15 -p build
56
+
57
+ - name: Configure CMake
58
+ run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
59
+
60
+ - name: Build
61
+ run: cmake --build build --config Release
62
+
63
+ - name: Run tests
64
+ run: ctest --test-dir build --output-on-failure --build-config Release
65
+
66
+ - name: Package
67
+ run: cmake --build build --target package
68
+
69
+ - name: Upload artifacts
70
+ uses: actions/upload-artifact@v4
71
+ with:
72
+ name: ${{ matrix.artifact_name }}
73
+ path: build/*.tar.gz
74
+
75
+ - name: Create GitHub Release
76
+ if: github.event_name == 'release' && matrix.os == 'ubuntu-latest'
77
+ uses: softprops/action-gh-release@v1
78
+ with:
79
+ files: build/*.tar.gz
80
+ body: |
81
+ C++ package release ${{ github.ref_name }}
82
+
83
+ See CHANGELOG.md for details.
84
+ env:
85
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
86
+
87
+ publish-conan:
88
+ runs-on: ubuntu-latest
89
+ if: hashFiles('conanfile.py') != ''
90
+
91
+ steps:
92
+ - uses: actions/checkout@v5
93
+ with:
94
+ ref: ${{ github.event.inputs.tag || github.ref }}
95
+
96
+ - name: Set up Python
97
+ uses: actions/setup-python@v5
98
+ with:
99
+ python-version: '3.11'
100
+
101
+ - name: Install Conan
102
+ run: pip install conan
103
+
104
+ - name: Configure Conan
105
+ run: |
106
+ conan profile detect
107
+ conan remote add conancenter https://center.conan.io
108
+
109
+ - name: Create package
110
+ run: conan create . --build=missing
111
+
112
+ - name: Upload to Conan Center
113
+ if: secrets.CONAN_PASSWORD != ''
114
+ run: |
115
+ conan remote login conancenter ${{ secrets.CONAN_LOGIN_USERNAME }}
116
+ conan upload your-project/* -r conancenter --confirm
117
+ env:
118
+ CONAN_PASSWORD: ${{ secrets.CONAN_PASSWORD }}
119
+
@@ -0,0 +1,77 @@
1
+ name: C++ Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ matrix:
14
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
15
+ compiler: [ gcc, clang ]
16
+ build_type: [ Debug, Release ]
17
+ exclude:
18
+ - os: windows-latest
19
+ compiler: gcc
20
+ - os: macos-latest
21
+ compiler: gcc
22
+
23
+ steps:
24
+ - uses: actions/checkout@v5
25
+
26
+ - name: Install dependencies (Ubuntu)
27
+ if: runner.os == 'Linux'
28
+ run: |
29
+ sudo apt-get update
30
+ sudo apt-get install -y cmake ninja-build lcov
31
+ if [ "${{ matrix.compiler }}" = "clang" ]; then
32
+ sudo apt-get install -y clang-15
33
+ fi
34
+
35
+ - name: Install dependencies (macOS)
36
+ if: runner.os == 'macOS'
37
+ run: |
38
+ brew install cmake ninja lcov llvm
39
+
40
+ - name: Install dependencies (Windows)
41
+ if: runner.os == 'Windows'
42
+ run: |
43
+ choco install cmake ninja
44
+
45
+ - name: Configure CMake
46
+ run: |
47
+ cmake -B build -G Ninja \
48
+ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
49
+ -DBUILD_TESTING=ON \
50
+ -DENABLE_SANITIZERS=${{ matrix.build_type == 'Debug' && runner.os != 'Windows' }}
51
+ env:
52
+ CC: ${{ matrix.compiler == 'clang' && 'clang-15' || 'gcc' }}
53
+ CXX: ${{ matrix.compiler == 'clang' && 'clang++-15' || 'g++' }}
54
+
55
+ - name: Build
56
+ run: cmake --build build --config ${{ matrix.build_type }}
57
+
58
+ - name: Run tests
59
+ run: ctest --test-dir build --output-on-failure --build-config ${{ matrix.build_type }}
60
+
61
+ - name: Generate coverage (Debug + GCC only)
62
+ if: matrix.build_type == 'Debug' && matrix.compiler == 'gcc' && runner.os == 'Linux'
63
+ run: |
64
+ cmake -B build -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=ON
65
+ cmake --build build
66
+ ctest --test-dir build
67
+ lcov --capture --directory build --output-file coverage.info
68
+ lcov --remove coverage.info '/usr/*' '*/tests/*' --output-file coverage.info
69
+
70
+ - name: Upload coverage to Codecov
71
+ uses: codecov/codecov-action@v4
72
+ if: matrix.build_type == 'Debug' && matrix.compiler == 'gcc' && runner.os == 'Linux'
73
+ with:
74
+ files: ./coverage.info
75
+ flags: unittests
76
+ fail_ci_if_error: false
77
+
@@ -0,0 +1,29 @@
1
+ name: .NET Lint
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v5
15
+
16
+ - name: Setup .NET
17
+ uses: actions/setup-dotnet@v4
18
+ with:
19
+ dotnet-version: '8.0.x'
20
+
21
+ - name: Restore dependencies
22
+ run: dotnet restore
23
+
24
+ - name: Format check
25
+ run: dotnet format --verify-no-changes --no-restore
26
+
27
+ - name: Build with warnings as errors
28
+ run: dotnet build --no-restore --configuration Release /warnaserror
29
+
@@ -0,0 +1,40 @@
1
+ name: Publish to NuGet
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ tag:
9
+ description: 'Tag to publish (e.g., v1.0.0)'
10
+ required: true
11
+
12
+ jobs:
13
+ publish:
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - uses: actions/checkout@v5
18
+ with:
19
+ ref: ${{ github.event.inputs.tag || github.ref }}
20
+
21
+ - name: Setup .NET
22
+ uses: actions/setup-dotnet@v4
23
+ with:
24
+ dotnet-version: '8.0.x'
25
+
26
+ - name: Restore dependencies
27
+ run: dotnet restore
28
+
29
+ - name: Build
30
+ run: dotnet build --configuration Release --no-restore
31
+
32
+ - name: Run tests
33
+ run: dotnet test --configuration Release --no-build
34
+
35
+ - name: Pack
36
+ run: dotnet pack --configuration Release --no-build --output nupkgs
37
+
38
+ - name: Publish to NuGet
39
+ run: dotnet nuget push nupkgs/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
40
+
@@ -0,0 +1,41 @@
1
+ name: .NET Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ matrix:
14
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
15
+ dotnet-version: [ '8.0.x' ]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v5
19
+
20
+ - name: Setup .NET
21
+ uses: actions/setup-dotnet@v4
22
+ with:
23
+ dotnet-version: ${{ matrix.dotnet-version }}
24
+
25
+ - name: Restore dependencies
26
+ run: dotnet restore
27
+
28
+ - name: Build
29
+ run: dotnet build --no-restore --configuration Release
30
+
31
+ - name: Run tests
32
+ run: dotnet test --no-build --configuration Release --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
33
+
34
+ - name: Upload coverage to Codecov
35
+ uses: codecov/codecov-action@v4
36
+ if: matrix.os == 'ubuntu-latest'
37
+ with:
38
+ files: ./coverage.opencover.xml
39
+ flags: unittests
40
+ fail_ci_if_error: false
41
+
@@ -0,0 +1,45 @@
1
+ name: Elixir Lint
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v5
15
+
16
+ - name: Set up Elixir
17
+ uses: erlef/setup-beam@v1
18
+ with:
19
+ elixir-version: '1.17'
20
+ otp-version: '27'
21
+
22
+ - name: Restore dependencies cache
23
+ uses: actions/cache@v4
24
+ with:
25
+ path: deps
26
+ key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}
27
+
28
+ - name: Restore PLT cache
29
+ uses: actions/cache@v4
30
+ with:
31
+ path: priv/plts
32
+ key: ${{ runner.os }}-plt-${{ hashFiles('**/mix.lock') }}
33
+
34
+ - name: Install dependencies
35
+ run: mix deps.get
36
+
37
+ - name: Check formatting
38
+ run: mix format --check-formatted
39
+
40
+ - name: Run Credo
41
+ run: mix credo --strict
42
+
43
+ - name: Run Dialyzer
44
+ run: mix dialyzer --format github
45
+
@@ -0,0 +1,49 @@
1
+ name: Publish to Hex.pm
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ tag:
9
+ description: 'Tag to publish (e.g., v1.0.0)'
10
+ required: true
11
+
12
+ jobs:
13
+ publish:
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - uses: actions/checkout@v5
18
+ with:
19
+ ref: ${{ github.event.inputs.tag || github.ref }}
20
+
21
+ - name: Set up Elixir
22
+ uses: erlef/setup-beam@v1
23
+ with:
24
+ elixir-version: '1.17'
25
+ otp-version: '27'
26
+
27
+ - name: Install dependencies
28
+ run: mix deps.get
29
+
30
+ - name: Run tests
31
+ run: mix test
32
+
33
+ - name: Run Credo
34
+ run: mix credo --strict
35
+
36
+ - name: Run Dialyzer
37
+ run: mix dialyzer
38
+
39
+ - name: Build docs
40
+ run: mix docs
41
+
42
+ - name: Build package
43
+ run: mix hex.build
44
+
45
+ - name: Publish to Hex
46
+ run: mix hex.publish --yes
47
+ env:
48
+ HEX_API_KEY: ${{ secrets.HEX_API_KEY }}
49
+
@@ -0,0 +1,54 @@
1
+ name: Elixir Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+
13
+ strategy:
14
+ matrix:
15
+ elixir: ['1.16', '1.17']
16
+ otp: ['26', '27']
17
+
18
+ steps:
19
+ - uses: actions/checkout@v5
20
+
21
+ - name: Set up Elixir
22
+ uses: erlef/setup-beam@v1
23
+ with:
24
+ elixir-version: ${{ matrix.elixir }}
25
+ otp-version: ${{ matrix.otp }}
26
+
27
+ - name: Restore dependencies cache
28
+ uses: actions/cache@v4
29
+ with:
30
+ path: deps
31
+ key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}
32
+ restore-keys: ${{ runner.os }}-mix-
33
+
34
+ - name: Install dependencies
35
+ run: mix deps.get
36
+
37
+ - name: Compile
38
+ run: mix compile --warnings-as-errors
39
+
40
+ - name: Run tests
41
+ run: mix test
42
+
43
+ - name: Generate coverage report
44
+ run: mix coveralls.json
45
+ if: matrix.elixir == '1.17' && matrix.otp == '27'
46
+
47
+ - name: Upload coverage to Codecov
48
+ uses: codecov/codecov-action@v4
49
+ if: matrix.elixir == '1.17' && matrix.otp == '27'
50
+ with:
51
+ files: ./cover/excoveralls.json
52
+ flags: unittests
53
+ fail_ci_if_error: false
54
+
@@ -0,0 +1,47 @@
1
+ name: Erlang Lint
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v5
15
+
16
+ - name: Setup Erlang/OTP
17
+ uses: erlef/setup-beam@v1
18
+ with:
19
+ otp-version: '27'
20
+ rebar3-version: '3.23'
21
+
22
+ - name: Restore dependencies cache
23
+ uses: actions/cache@v4
24
+ with:
25
+ path: |
26
+ _build
27
+ ~/.cache/rebar3
28
+ key: ${{ runner.os }}-otp-27-${{ hashFiles('rebar.lock') }}
29
+ restore-keys: |
30
+ ${{ runner.os }}-otp-27-
31
+
32
+ - name: Compile
33
+ run: rebar3 compile
34
+
35
+ - name: Check formatting
36
+ run: rebar3 as test fmt --check
37
+
38
+ - name: Run Elvis linter
39
+ run: rebar3 as test lint
40
+
41
+ - name: Run Dialyzer
42
+ run: rebar3 dialyzer
43
+
44
+ - name: Cross-reference check
45
+ run: rebar3 xref
46
+
47
+
@@ -0,0 +1,62 @@
1
+ name: Erlang Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ matrix:
14
+ os: [ ubuntu-latest ]
15
+ otp-version: [ '26', '27' ]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v5
19
+
20
+ - name: Setup Erlang/OTP
21
+ uses: erlef/setup-beam@v1
22
+ with:
23
+ otp-version: ${{ matrix.otp-version }}
24
+ rebar3-version: '3.23'
25
+
26
+ - name: Restore dependencies cache
27
+ uses: actions/cache@v4
28
+ with:
29
+ path: |
30
+ _build
31
+ ~/.cache/rebar3
32
+ key: ${{ runner.os }}-otp-${{ matrix.otp-version }}-${{ hashFiles('rebar.lock') }}
33
+ restore-keys: |
34
+ ${{ runner.os }}-otp-${{ matrix.otp-version }}-
35
+
36
+ - name: Compile
37
+ run: rebar3 compile
38
+
39
+ - name: Run Dialyzer
40
+ run: rebar3 dialyzer
41
+
42
+ - name: Run EUnit tests
43
+ run: rebar3 eunit
44
+
45
+ - name: Run Common Test
46
+ run: rebar3 ct
47
+
48
+ - name: Run PropEr properties
49
+ run: rebar3 proper
50
+
51
+ - name: Generate coverage report
52
+ run: rebar3 cover
53
+
54
+ - name: Upload coverage to Codecov
55
+ uses: codecov/codecov-action@v4
56
+ if: matrix.otp-version == '27'
57
+ with:
58
+ files: ./_build/test/cover/eunit.coverdata
59
+ flags: unittests
60
+ fail_ci_if_error: false
61
+
62
+
@@ -0,0 +1,39 @@
1
+ name: Go Lint
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Set up Go
17
+ uses: actions/setup-go@v5
18
+ with:
19
+ go-version: '1.22'
20
+ cache: true
21
+
22
+ - name: Check formatting
23
+ run: |
24
+ if [ "$(gofmt -l . | wc -l)" -gt 0 ]; then
25
+ echo "Code is not formatted. Run: gofmt -w ."
26
+ gofmt -l .
27
+ exit 1
28
+ fi
29
+
30
+ - name: Run go vet
31
+ run: go vet ./...
32
+
33
+ - name: Install golangci-lint
34
+ run: |
35
+ curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
36
+
37
+ - name: Run golangci-lint
38
+ run: $(go env GOPATH)/bin/golangci-lint run --timeout=5m
39
+
@@ -0,0 +1,95 @@
1
+ name: Publish Go Module
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ tag:
9
+ description: 'Tag to publish (e.g., v1.0.0)'
10
+ required: true
11
+
12
+ jobs:
13
+ publish:
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - uses: actions/checkout@v5
18
+ with:
19
+ ref: ${{ github.event.inputs.tag || github.ref }}
20
+ fetch-depth: 0 # Full history for Go modules
21
+
22
+ - name: Set up Go
23
+ uses: actions/setup-go@v5
24
+ with:
25
+ go-version: '1.22'
26
+ cache: true
27
+
28
+ - name: Verify go.mod
29
+ run: |
30
+ if [ ! -f go.mod ]; then
31
+ echo "Error: go.mod not found"
32
+ exit 1
33
+ fi
34
+ go mod verify
35
+
36
+ - name: Download dependencies
37
+ run: go mod download
38
+
39
+ - name: Run tests
40
+ run: go test -v -race -coverprofile=coverage.out ./...
41
+
42
+ - name: Run linters
43
+ run: |
44
+ go vet ./...
45
+ go fmt ./...
46
+ if [ -n "$(gofmt -l .)" ]; then
47
+ echo "Go files must be formatted with gofmt"
48
+ exit 1
49
+ fi
50
+
51
+ - name: Build
52
+ run: go build -v ./...
53
+
54
+ - name: Verify tag format
55
+ run: |
56
+ TAG="${{ github.event.inputs.tag || github.ref_name }}"
57
+ if [[ ! "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$ ]]; then
58
+ echo "Error: Tag must follow semantic versioning (e.g., v1.0.0)"
59
+ exit 1
60
+ fi
61
+ echo "Tag format valid: $TAG"
62
+
63
+ - name: Push tag (if workflow_dispatch)
64
+ if: github.event_name == 'workflow_dispatch'
65
+ run: |
66
+ TAG="${{ github.event.inputs.tag }}"
67
+ git tag -a "$TAG" -m "Release $TAG"
68
+ git push origin "$TAG"
69
+
70
+ - name: Trigger pkg.go.dev update
71
+ run: |
72
+ TAG="${{ github.event.inputs.tag || github.ref_name }}"
73
+ MODULE=$(go list -m)
74
+ echo "Module: $MODULE"
75
+ echo "Version: $TAG"
76
+
77
+ # pkg.go.dev automatically indexes new tags
78
+ # Trigger manual update if needed
79
+ curl -X POST "https://proxy.golang.org/$MODULE/@v/$TAG.info" || true
80
+
81
+ echo "Published $MODULE@$TAG"
82
+ echo "View at: https://pkg.go.dev/$MODULE@$TAG"
83
+
84
+ - name: Create GOPROXY cache entry
85
+ run: |
86
+ TAG="${{ github.event.inputs.tag || github.ref_name }}"
87
+ MODULE=$(go list -m)
88
+
89
+ # Warm up various proxies
90
+ curl -f "https://proxy.golang.org/$MODULE/@v/$TAG.info" || true
91
+ curl -f "https://proxy.golang.org/$MODULE/@v/$TAG.mod" || true
92
+ curl -f "https://proxy.golang.org/$MODULE/@v/$TAG.zip" || true
93
+
94
+ echo "GOPROXY cache warmed for $MODULE@$TAG"
95
+