{"id":15099714,"url":"https://github.com/swagdevops/kamaze-project","last_synced_at":"2026-01-06T15:42:35.456Z","repository":{"id":56879839,"uuid":"136093341","full_name":"SwagDevOps/kamaze-project","owner":"SwagDevOps","description":"Automatize recurrent dev tasks with swag","archived":false,"fork":false,"pushed_at":"2022-08-18T17:49:22.000Z","size":889,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T13:48:19.693Z","etag":null,"topics":["automation","gem","quality","quality-improvement","rake","vagrant"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SwagDevOps.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-04T23:22:37.000Z","updated_at":"2022-08-18T17:46:39.000Z","dependencies_parsed_at":"2022-08-20T23:10:43.279Z","dependency_job_id":null,"html_url":"https://github.com/SwagDevOps/kamaze-project","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SwagDevOps%2Fkamaze-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SwagDevOps%2Fkamaze-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SwagDevOps%2Fkamaze-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SwagDevOps%2Fkamaze-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SwagDevOps","download_url":"https://codeload.github.com/SwagDevOps/kamaze-project/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245858880,"owners_count":20684057,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","gem","quality","quality-improvement","rake","vagrant"],"created_at":"2024-09-25T17:26:33.270Z","updated_at":"2026-01-06T15:42:35.418Z","avatar_url":"https://github.com/SwagDevOps.png","language":"Ruby","readme":"# kamaze-project\n\nThis gem is intended to provide a bunch of recurrent dev tasks, such as:\n\n* packaging (``gem``, ``rubyc``)\n* running automated tests (``rspec``)\n* generating documentation (``yardoc``)\n* checking and/or correcting coding style (``rubocop``)\n* running virtual machines (``vagrant``)\n\nand so on.\n\nAutomation mostly relies on the ``gem`` (and ``gemspec``) standards,\nmost tasks SHOULD run in a sufficient gem context.\n\n## Install\n\n```ruby\ngem 'rake', '~\u003e 13.0'\ngem 'kamaze-project', '~\u003e 1.0'\n```\n\n```sh\ngem install kamaze-project\n```\n\n## Optional dependencies\n\nSome dependencies are optional, as seen inspecting the\n``gems.rb`` file.\n\nFor example, ``rspec`` is considered as a ``development`` dependency,\nbut ``rspec`` is required by the ``test`` task.\nThe ``listen`` gem is optional, due to\n[several system incompatibilities][guard/listen#issues-limitations];\n``listen`` gem is only used by some \"``watch`` optional tasks\".\n\nExample (``gems.rb``) with optional dependencies :\n\n```ruby\ngroup :development do\n  gem 'rake', '~\u003e 13.0'\n  gem 'rubocop', '~\u003e 0.79'\n  gem 'rugged', '~\u003e 0.28'\n  gem 'sys-proc', '~\u003e 1.1'\n\n  # 'listen' is used to \"watch\"\n  # but could be incompatible with some systems\n  gem 'listen', '~\u003e 3.2'\nend\n\ngroup :doc do\n  gem 'yard', '~\u003e 0.9'\nend\n\ngroup :repl do\n  gem 'pry', '~\u003e 0.12'\nend\n\ngroup :test do\n  gem 'rspec', '~\u003e 3.7'\nend\n```\n\n### Troubles with ``rugged`` gem\n\nSome system dependencies are required to install ``rugged``\nas native extensions:\n\n* ``make`` or ``gmake``\n* ``cmake``\n* ``pkg-config``\n* ``libssl-dev`` (asked for OpenSSL TLS backend)\n\ndepending on Linux distributions, and/or package managers,\ndependency names are likely to change.\n\n## Ease of use\n\nThis gem keeps ease of use (and DRY) in mind.\n\nSample of use:\n\n```ruby\nrequire 'kamaze/project'\n\nKamaze::Project.instance do |project|\n  project.subject = Kamaze::Project\n  project.name    = :'kamaze-project'\n  project.tasks   = [\n    'cs:correct', 'cs:control', 'cs:pre-commit',\n    'doc', 'doc:watch', 'gem', 'gem:compile',\n    'shell', 'sources:license', 'test', 'version:edit',\n  ]\nend.load!\n```\n\nA ``project`` has a __name__ and a __subject__.\nProject ``name`` SHOULD be the same as the name of the (eventually)\ngenerated gem package [name][rubygems/specification#name].\n\n## Environment\n\nWhen ``project`` is instantiated,\na ``dotenv`` (``.env``) file CAN be read, evaluated and loaded.\nThis could be useful to set specific environment variables,\nsuch as automake's flag variables:\n\n```sh\nexport CPPFLAGS='-P'\n```\n\nOn the other hand, ``.env`` file COULD define the ``project`` name:\n\n```sh\nexport PROJECT_NAME='kamaze-project'\n```\n\nWhen ``project`` name is defined, on instantiation, the ``PROJECT_NAME``\nenvironment variable is ignored, and has no effect.\nFurthermore a ``mode`` SHOULD be defined, using environment:\n\n```sh\nexport PROJECT_MODE='development'\n```\n\n## Tools\n\n``Kamaze::Project`` provides several ``tools``. Tools are aimed to afford\neasy-to-use and agnostic integration (with low dependency to ``rake``)\nof tools such as ``gem``, ``rubocop``, ``rspec`` or ``yardoc``.\nSome ``cli`` tools integrations, when it is not possible to do otherwise,\nare also provided; such as ``rubyc`` or ``vagrant``.\n\nFurthermore, adding a new tool is really easy.\n\n```ruby\nrequire 'kamaze/project'\n\nclass AwesomeTool \u003c Kamaze::Project::Tools::BaseTool\n  def run\n    # do something awesome\n  end\nend\n\nKamaze::Project.instance do |project|\n  # initialization (as seen above)\n\n  project.tools = {\n    awesome: AwesomeTool,\n  }\nend.load!\n\n# your tool is accessible (through DSL):\ntools.fetch(:awesome)\n```\n\n\u003c!-- hyperlinks --\u003e\n\n[rubygems/specification#name]: http://guides.rubygems.org/specification-reference/#name\n[guard/listen#issues-limitations]: https://github.com/guard/listen/blob/d43cbd510ef151b9365bb9c421ef62496260d3fa/README.md#issues--limitations\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswagdevops%2Fkamaze-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswagdevops%2Fkamaze-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswagdevops%2Fkamaze-project/lists"}