{"id":15296129,"url":"https://github.com/letmaik/crowfood","last_synced_at":"2025-07-27T10:33:17.470Z","repository":{"id":26966628,"uuid":"30429977","full_name":"letmaik/crowfood","owner":"letmaik","description":"Creates dependency files from C/C++ code for creating dependency graphs with snakefood","archived":false,"fork":false,"pushed_at":"2023-08-05T20:59:18.000Z","size":29,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-22T05:35:36.639Z","etag":null,"topics":["cplusplus","dependency-graphs","python"],"latest_commit_sha":null,"homepage":"https://pypi.python.org/pypi/crowfood","language":"Python","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/letmaik.png","metadata":{"files":{"readme":"README.rst","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":"2015-02-06T19:48:00.000Z","updated_at":"2023-08-05T20:59:22.000Z","dependencies_parsed_at":"2024-10-15T01:20:53.325Z","dependency_job_id":null,"html_url":"https://github.com/letmaik/crowfood","commit_stats":{"total_commits":39,"total_committers":2,"mean_commits":19.5,"dds":0.02564102564102566,"last_synced_commit":"25586ae800465d5e22baf7b8d5d61be305d1e156"},"previous_names":["neothemachine/crowfood"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letmaik%2Fcrowfood","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letmaik%2Fcrowfood/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letmaik%2Fcrowfood/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letmaik%2Fcrowfood/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/letmaik","download_url":"https://codeload.github.com/letmaik/crowfood/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227799102,"owners_count":17821606,"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":["cplusplus","dependency-graphs","python"],"created_at":"2024-09-30T18:09:30.025Z","updated_at":"2024-12-02T20:29:14.205Z","avatar_url":"https://github.com/letmaik.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"crowfood\n========\n\n.. image:: https://travis-ci.org/neothemachine/crowfood.svg?branch=master\n    :target: https://travis-ci.org/neothemachine/crowfood\n\nCreates dependency files from C/C++ code for use with \n`snakefood \u003chttps://bitbucket.org/blais/snakefood\u003e`_.\nThis allows you to easily create dependency graphs on file/module/folder/etc. level from your C/C++ codebase.\n\nInstallation\n------------\n\nYou must have Python installed on your system.\n\nIf you don't have snakefood installed yet, install it with ``pip install snakefood`` first.\n\nNow install crowfood with ``pip install crowfood``.\n\nHow to create dependency graphs\n-------------------------------\nGetting started\n'''''''''''''''\n\nLet's assume `/libab` is the root path of your C/C++ project which contains:\n\n.. code-block::\n\n    A.c\n    B.c\n    ab/\n        A.h\n        B.h\n\nWe'll create a simple file-based dependency graph by piping crowfood's \ndependency information to snakefood's ``sfood-graph`` tool to create a graph in DOT format\nwhich is then visualized with ``dot`` itself and saved to a pdf file:\n\n.. code-block::\n\n    cfood /libab | sfood-graph | dot -Tpdf \u003e simple.pdf\n    \ncrowfood can handle many folder layouts and will output warnings if it can't find ``#include``'s.\nRun ``cfood --help`` to see all options regarding folder layout and include paths.\n\n*TIP*: As a quick fix or to get started with bigger projects, \nuse ``--fuzzy`` to let crowfood search for ``#include`` files purely by their filename\nand ignore folder structure.\n\nGrouping/Clustering\n'''''''''''''''''''\n\nDepending on how big your project is it may make sense to group files together in some way.\n\nOne way is to group matching source and header files as \"modules\":\n\n.. code-block::\n\n    cfood /libab --merge module | sfood-graph | dot -Tpdf \u003e modules.pdf\n\nAnother way is to define clusters in terms of path prefixes.\nFirst, create a file ``clusters`` which contains the prefixes:\n\n.. code-block::\n\n    componenta\n    componentb/partc\n    \nAnd then run:\n\n.. code-block::\n\n    cfood /bigproject | sfood-cluster -f clusters | sfood-graph | dot -Tpdf \u003e clustered.pdf\n\nHave a look at the `snakefood docs \u003chttp://furius.ca/snakefood/doc/snakefood-doc.html\u003e`_\nto get some more inspiration on how to transform the raw dependency output from crowfood\ninto something that makes sense for your project.\nAlways remember that the dependency output is line-based and very easy to handle with\nstandard unix tools, e.g. grep for filtering.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletmaik%2Fcrowfood","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fletmaik%2Fcrowfood","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletmaik%2Fcrowfood/lists"}