{"id":19212701,"url":"https://github.com/fasterthanlime/coke","last_synced_at":"2026-02-12T02:04:16.245Z","repository":{"id":66881625,"uuid":"6739907","full_name":"fasterthanlime/coke","owner":"fasterthanlime","description":"Build tool for ooc","archived":false,"fork":false,"pushed_at":"2012-11-19T13:52:15.000Z","size":104,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-01T04:55:07.206Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fasterthanlime.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-11-17T20:50:16.000Z","updated_at":"2016-02-02T15:25:11.000Z","dependencies_parsed_at":"2023-02-20T13:45:33.359Z","dependency_job_id":null,"html_url":"https://github.com/fasterthanlime/coke","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fasterthanlime/coke","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fasterthanlime%2Fcoke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fasterthanlime%2Fcoke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fasterthanlime%2Fcoke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fasterthanlime%2Fcoke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fasterthanlime","download_url":"https://codeload.github.com/fasterthanlime/coke/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fasterthanlime%2Fcoke/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29354695,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T01:03:07.613Z","status":"online","status_checked_at":"2026-02-12T02:00:06.911Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-09T13:47:41.897Z","updated_at":"2026-02-12T02:04:16.232Z","avatar_url":"https://github.com/fasterthanlime.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## A build tool for ooc\n\nUses bottles (JSON files) to set you up for development\n\n## Basic premise\n\nPrograms have a Cokefile, that can contain various targets with various tasks.\n\nLibraries have 'bottles', listed here in this Github repo. Think of bottles\nas homebrew formulas. Under the hood, though, coke can install native\npackages via your system's package manager (apt-get, brew, or a custom solution\non Win32).\n\ncoke requires rock, and will make a few basic sanity checks to make sure we have\nstuff like 'pkg-config' in the path, and 'dylibbundler' on OSX for tasks that\nrequire it (ie. bundling)\n\n## Basic library structure\n\nAll ooc projects with bottles should have the same structure. Let's make a project\nnamed 'foo':\n\n  * foo\n    * foo.use\n    * source\n\n`foo.use` should have a `SourcePath: source` directive so that rock can find the\nsource files.\n\n## Bottle format\n\nA bottle is a simple JSON file that tells you what the library is, how to install\nthe native packages (if any).\n\n### name\n\nThe name of the bottle. It should match the name of the .json file.\n\n### description\n\nA human-readable description of the package - can contain spaces.\n\n### version\n\nThe version of the software it provides. Free-form, string. So far coke\ndoesn't allow to manage more than one version of a software. Get over it :)\n\n### source\n\nWhere to get the software from. This is an array with `[ source_type, source ] `\n\nExamples:\n\n```javascript\n{\n    source: [ 'github', 'nddrylliog/ooc-sdl' ]\n}\n```\n\nAnother example:\n\n```javascript\n{\n    source: [ 'url', 'https://github.com/downloads/nddrylliog/rock/rock-0.9.4-prealpha4-bootstrap-only.tar.bz2' ]\n}\n```\n\n#### GitHub sources\n\nThe reason we support GitHub sources but not 'git' sources is that we can't\nrely on git being present on all platforms. For example, on Win32, you can\ninstall msysgit and get a 'git bash', but the msys/mingw combo you install is\nseparate. So we won't necessarily have 'git' in PATH from where we run coke.\n\nFor GitHub, from a repo's name (e.g. 'nddrylliog/ooc-sdl') we can retrieve the latest\ncommit\n\n```\ncurl -i https://api.github.com/repos/nddrylliog/rock/commits/HEAD\n```\n\nAnd we can get a tarball of the content without having to clone the git repo:\n\n```\nwget https://github.com/nddrylliog/ooc-sdl/archive/master.zip\n```\n\n#### URL sources\n\nThe only supported schemas are 'http' and 'https' for now. coke will use\nlibcurl to retrieve them, so that https is handled with no issue. This is\npretty much a subset of GitHub sources.\n\nWith http sources, to check for an update we don't have commit hashes to\ncompare, but we can compare the name of the last download with the new name,\nin case the registry has been updated.\n\n### platforms\n\nPlatforms defines the underlying packages we need to install for those libraries\nto work. For pure ooc libraries, you don't need to specify a platforms block\nat all, but for bindings of C libraries, this is a life saver.\n\nThe valid keys for this block are as follows:\n\n  * os: can be 'linux', 'osx', 'windows', or '*' (default)\n  * distribution: only valid for linux, can be 'ubuntu', 'arch' or '*' (default)\n  * arch: can be '32', '64', or '*' (default) for now\n  * prio: priority of the platform block: if several blocks apply, they'll be sorted\n    by priority. Default value is 10, it's an integer, set it to whatever you want.\n  * deps: see below\n  * setup: see below\n  * check: see below\n\n#### deps\n\nThis is kinda redundant with .use files, but we'll figure it out as we go. For now,\nthe supported types are:\n\n  * `pkgs`: a pkg-config package, e.g. `sdl`\n\n#### setup\n\nsetup is a child of `platforms`, and it's an array of arrays. Each children of\nsetup is a setup 'step' that you need to take to make sure the underlying libraries\nare there.\n\nThere are different valid types of steps:\n\n  * `apt`: Install an apt package on an Ubuntu/Debian distribution\n  * `brew`: Install a brew package on OSX\n  * `mingw-archive`: Download and extract an archive to `/c/MinGW/MSYS/1.0/`. Such\n     an archive will typically have folders such as `lib`, `include` and `bin`\n\n#### check\n\ncheck is the phase to make sur everything's fine. There are several types of groups.\n\nThe only supported group so far is `c`, which has `headers` and `libs`. The principle\nof the `c` group is to compile a test file (a-la autotools, yep..) with an include,\nlinking it to libs, and make sure it compiles and links fine. We might also collect\nadditional information with otool/ldd/etc. later on for the lulz.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffasterthanlime%2Fcoke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffasterthanlime%2Fcoke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffasterthanlime%2Fcoke/lists"}