{"id":22825094,"url":"https://github.com/michaeljklein/animate_modules","last_synced_at":"2025-10-16T01:45:26.424Z","repository":{"id":155486902,"uuid":"117901568","full_name":"michaeljklein/animate_modules","owner":"michaeljklein","description":"Animate the module structure of Haskell packages","archived":false,"fork":false,"pushed_at":"2018-01-18T03:45:09.000Z","size":1291,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-06T05:32:41.118Z","etag":null,"topics":["cli","code-analysis","haskell","ruby"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaeljklein.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-17T22:41:10.000Z","updated_at":"2023-02-15T20:15:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"2d379bce-f1bb-479d-9e7c-e3e77eca6a9d","html_url":"https://github.com/michaeljklein/animate_modules","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeljklein%2Fanimate_modules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeljklein%2Fanimate_modules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeljklein%2Fanimate_modules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaeljklein%2Fanimate_modules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaeljklein","download_url":"https://codeload.github.com/michaeljklein/animate_modules/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246397256,"owners_count":20770523,"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":["cli","code-analysis","haskell","ruby"],"created_at":"2024-12-12T17:09:30.117Z","updated_at":"2025-10-16T01:45:26.368Z","avatar_url":"https://github.com/michaeljklein.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# `animate_modules.rb`\n\nEvery commit in a repository, checkout the commit, run graphmod, render the graph (if new), and then make a gif of the rendered graphs.\n\n\n# Requirements:\n\n\n## [graphmod](https://hackage.haskell.org/package/graphmod)\n\n```bash\n\nstack install graphmod\n```\n\n\n## [dot](www.graphviz.org)\n\n```bash\nbrew install graphviz\n```\n\n\n## ImageMagick\n\n```bash\nbrew install imagemagick\n```\n\n```\n\u003e convert --version\nVersion: ImageMagick 6.9.7-3 Q16 x86_64 2017-01-07 http://www.imagemagick.org\nCopyright: © 1999-2017 ImageMagick Studio LLC\nLicense: http://www.imagemagick.org/script/license.php\nFeatures: Cipher DPC Modules\nDelegates (built-in): bzlib freetype jng jpeg ltdl lzma png tiff xml zlib\n```\n\n\n## Ruby\n\n```\n\u003e ruby --version\nruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]\n```\n\n\n# Usage\n\n```bash\n# Without logging:\nruby animate_modules.rb \"https://github.com/michaeljklein/hackage-stats.git\"\n\n# With logging:\nruby animate_modules.rb \"https://github.com/michaeljklein/hackage-stats.git\" | tee -a animated_modules_https_github_com_michaeljklein_hackage_stats_git.log\n```\n\n```ruby\nanimate_modules.rb [0] [1] [2] [3]\n\nor\n\nruby animate_modules.rb [0] [1] [2] [3]\n\n[0] to_clone     (required)\n[1] out_dir      (default is '.')\n[2] out_filename (default is \"animated_modules_\\#{to_clone.gsub(/\\W+/, '_')}.gif\"\n[3] temp_dir     (default is random-ish)\n```\n\n\n# Examples\n\n\n- [Equirecursive](https://github.com/michaeljklein/Equirecursive)\n\n![examples/animated_modules_https_github_com_michaeljklein_Equirecursive_git.gif](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_Equirecursive_git.gif \"Title\")\n\n[examples/animated_modules_https_github_com_michaeljklein_Equirecursive_git.log](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_Equirecursive_git.log)\n\n\n- [git-details](https://github.com/michaeljklein/git-details)\n\n![examples/animated_modules_https_github_com_michaeljklein_git_details_git.gif](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_git_details_git.gif \"Title\")\n\n[examples/animated_modules_https_github_com_michaeljklein_git_details_git.log](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_git_details_git.log)\n\n\n- [hackage-stats](https://github.com/michaeljklein/hackage-stats)\n\n![examples/animated_modules_https_github_com_michaeljklein_hackage_stats_git.gif](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_hackage_stats_git.gif \"Title\")\n\n[examples/animated_modules_https_github_com_michaeljklein_hackage_stats_git.log](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_hackage_stats_git.log)\n\n\n- [parser-tutorial](https://github.com/michaeljklein/parser-tutorial)\n\n![examples/animated_modules_https_github_com_michaeljklein_parser_tutorial_git.gif](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_parser_tutorial_git.gif \"Title\")\n\n[examples/animated_modules_https_github_com_michaeljklein_parser_tutorial_git.log](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_parser_tutorial_git.log)\n\n\n- [prim-spoon](https://github.com/michaeljklein/prim-spoon)\n\n![examples/animated_modules_https_github_com_michaeljklein_prim_spoon_git.gif](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_prim_spoon_git.gif \"Title\")\n\n[examples/animated_modules_https_github_com_michaeljklein_prim_spoon_git.log](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_prim_spoon_git.log)\n\n\n- [stream-timers](https://github.com/michaeljklein/stream-timers)\n\n![examples/animated_modules_https_github_com_michaeljklein_stream_timers_git.gif](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_michaeljklein_stream_timers_git.gif \"michaeljklein/stream-timers\")\n\n\n- [Pandoc](https://github.com/jgm/pandoc) is too big for this script without changes:\n\n[examples/animated_modules_https_github_com_jgm_pandoc_git.log](\n[examples/animated_modules_https_github_com_michaeljklein_prim_spoon_git.log](https://github.com/michaeljklein/animate_modules/raw/master/examples/animated_modules_https_github_com_jgm_pandoc_git.log)\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaeljklein%2Fanimate_modules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaeljklein%2Fanimate_modules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaeljklein%2Fanimate_modules/lists"}