{ "info": { "author": "Alex Turbov", "author_email": "I.zaufi@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Software Development :: Version Control" ], "description": "What is Chewy?\n==============\n\nChewy is a _CMake Helpers Easy Way sYnchronizer_.\nChewy was designed to help an expecienced programmers to manage [CMake](http://cmake.org) modules\nin their projects (just like package managers do).\nIt allows to check versions of CMake modules and to keep their freshness by synchronizing\nwith a repository (or even few repositories), so you always have last versions of them in\nall of your projects.\n\nMotivation\n==========\n\nIf you are an experienced developer who use CMake as a build-system in your daily work, you should\nbe close with such kind of a situation. You are developing a CMake module for your current project (it\ncould be a some specific library's finder or just some kind of helper). But some time latter you are\ncopying that module to another (possible just started) project. As a result, some black day you have\nfound yourself as an owner of a work-environment directory fulled of a great many of local copies of\ndifferent projects with tens of non-synchronized CMake modules inside. New ones have fresh versions.\nBut you would like to update versions of modules from more ancient ones.\n\nThere are situations also when you are coming back to an years ago abandoned project and injecting\nsome interesting changes in a rush of programming creativity. But day latter you are realizing what\nsuch a brilliant find should be propagated to all other projects.\n\nIn moments like that, you could feel some unclear desire in your mind. It would be so great to keep\nall of your modules (in an accurate sorted and classified way with tiny name tags attached to them)\nin your own storage and just to have possibility to synchronize them from different projects!\nA sharp programmer's brain are suggesting a possible solution. You can take all your modules away to\na separate VCS repository and plug it in as an 'external' one to you project's repository. You can\u2026\nbut \"Hey, Houston! We've have a problem here\"! The repository contains a big number of files when you\nneed just a few of them in your project. Not to mention a complexity of external repositories' links\nusing with distributed version control systems. Long story short a laziness wins! Entropy of you\nwork directory are not decreasing with a threatening speed. And you are writing Christmas message to\nSanta asking to have a simple package manager to manage your own cmake-modules as your Christmas\nwish. But deep in you mind you know what in the morning you gonna find a Scottish jumper that was\nbought by you wife in Macys last week\u2026\n\nSounds familiar? So when we glad to introduce our charming shaggy second pilot to you \u2014 Chewy!\n\n\nUsage\n=====\n\nto list repositorie's files by checking manifest\n\n $ chewy list [repo-URL ...]\n\nAs result you gonna see a list of filename, version and module description.\n\n\nTo add new module and all related files to your project tree or to roll back all changes of existed file to\nrepositorie's original one's condition\n\n $ chewy install file-URL ...\n\n\nTo delete installed module and all related files from your project tree. Note: this command doesn't\ndelete any of modules' directory's empty sub directories. This is user's responsibility.\n\n $ chewy uninstall file-PATH ...\n\n\nto receive newest versions of your project's files by checking a repository\n\n $ chewy update [file-PATH ...]\n\n\nto check availability of newest versions of your project's files\n\n $ chewy status [file-PATH ...]\n\nAs result you gonna see a list of\n\n *|U|M|D filename local-version remote-version\n\nwhere,\n- `*` - you have a last version of the module\n- `U` - there is an **U**pdate \n- `M` - the local module was **M**odified\n- `D` - there is no corresponded module on the repository\n\n\nand finally... ;-)\n\n $ chewy jump-to-light-speed\n Uuuuuuuuuur Ahhhhhrrrrr\n Uhrrrrr Ahhhhrrrr\n Aaaaarhg...\n\n\nYour own Chewy-repository\n=========================\n\nLets imagine you have a few fancy CMake-modules, which you want to share between some of your\nC++ projects, and GitHub repository named `https://github/solo/han-shot-first.git`. So:\n\n $ git clone https://github/solo/han-shot-first.git hsf\n $ cd hsf\n\nCopy your modules to repository:\n\n $ cp ~/FindDroidsYouRLooking4.cmake .\n $ cp ~/order-66.cmake .\n\nAnd a complex one, which has two additional files in subdirectory\n\n $ cp ~/ObiWanHelper.cmake .\n $ mkdir jedi-stuff\n $ cp ~/elegant-lightsaber.in jedi-stuff/\n $ cp ~/barbaric-blaster.in jedi-stuff/\n\nPlace them under version control:\n\n git add *.cmake\n git add jedi-stuff\n git -a -m 'Repository init'\n\nSo, now you have three modules under version control, but it isn't Chewy-repository still.\nWhat you have to do is to add a few Chewy-tags to your modules like this:\n\n $ for i in *.cmake; do \\\n > echo \"# X-Chewy-Repobase: https://raw.github/solo/han-shot-first/master/\" >> $i; \\\n > echo \"# X-Chewy-Path: $i\" >> $i; \\\n > echo \"# X-Chewy-Version: 1.0\" >> $i; \\\n > done\n\nNote we just added __comment__ lines to the end of CMake-files, so they don't affect a code\n\nAnd one extra tag, describing dependent files, for a complex module:\n\n $ for i in jedi-stuff/*; do \\\n > echo \"# X-Chewy-AddonFile: $i\" >> ObiWanHelper.cmake; \\\n > done\n\nNote the variable `i` above contains a directory name as soon as a filename: `jedi-stuff/elegan-lightsaber.in`\n\nAt last, you have to give some descriptions for your modules:\n\n $ echo \"# X-Chewy-Description: Help me Obi-Wan Kenobi. You\u2019re my only hope!\" >> ObiWanHelper.cmake\n $ echo \"# X-Chewy-Description: C3PO and R2D2 droid-libraries finder\" >> FindDroidsYouRLooking4.cmake\n $ echo \"# X-Chewy-Description: Add execute-order-66 target to you build system\" >> order-66.cmake\n\nAnd one last move \u2014 launch `chewy-update-manifest` utility from Chewy-package:\n\n $ chewy-update-manifest\n\nThat command gonna create a manifest file, so you may want to add it under version control, fixate all changes\nand push it to origin repository finally:\n\n $ git add manifest\n $ git ci -a -m 'Chewy-repository is done'\n $ git push\n\nNow you can use you fresh shiny Chewy-repository:\n\n $ chewy list https://raw.github/solo/han-shot-first/master\n $ cd ~/work/dark-side-cxx-project/\n $ chewy add https://raw.github/solo/han-shot-first/master/order-66.cmake\n\nOr even:\n\n $ cd ~/work/rebel-alliance-cxx-senator/\n $ chewy add https://raw.github/solo/han-shot-first/master/ObiWanHelper.cmake\n\nAnd if you think some using modules have a new version, you can just update it in any project by easy way:\n\n $ chewy status\n $ chewy update\n\n\n> May the Force be with you!\n\n\nHow to get help\n===============\n\n $ chewy --help\n $ chewy command --help\n $ man chewy # TODO\n\n\nSee also\n========\n\n* [Repository](https://github.com/mutanabbi/chewy-cmake-rep) of reusable CMake modules managed with `chewy`\n\n>Chewy is the best second pilot ever!\n\n[![Downloads](https://pypip.in/d/chewy/badge.png)](https://pypi.python.org/pypi/chewy)\n[![Downloads](https://pypip.in/v/chewy/badge.png)](https://pypi.python.org/pypi/chewy)\n[![Build Status](https://api.travis-ci.org/mutanabbi/chewy.png?branch=master)](https://travis-ci.org/mutanabbi/chewy)", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/mutanabbi/chewy/archive/version-0.4.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mutanabbi/chewy", "keywords": "CMake modules synchronizer", "license": "GNU General Public License v3 or later (GPLv3+)", "maintainer": null, "maintainer_email": null, "name": "chewy", "package_url": "https://pypi.org/project/chewy/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/chewy/", "project_urls": { "Download": "https://github.com/mutanabbi/chewy/archive/version-0.4.tar.gz", "Homepage": "https://github.com/mutanabbi/chewy" }, "release_url": "https://pypi.org/project/chewy/0.4/", "requires_dist": null, "requires_python": null, "summary": "Python script to manage CMake modules", "version": "0.4" }, "last_serial": 961036, "releases": { "0.4": [ { "comment_text": "", "digests": { "md5": "f468dcc3f6cfe4ae61bba07577be785b", "sha256": "225a60ee4bcb6233a09ff80a36e568044e39a7c75c71ea65422f1dc33271f81d" }, "downloads": -1, "filename": "chewy-0.4.tar.gz", "has_sig": false, "md5_digest": "f468dcc3f6cfe4ae61bba07577be785b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38497, "upload_time": "2014-01-05T11:24:20", "url": "https://files.pythonhosted.org/packages/ac/f9/22e41f84fb7c8454ea524f9a3979fdea1ac798218e92b274c8005e731d72/chewy-0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f468dcc3f6cfe4ae61bba07577be785b", "sha256": "225a60ee4bcb6233a09ff80a36e568044e39a7c75c71ea65422f1dc33271f81d" }, "downloads": -1, "filename": "chewy-0.4.tar.gz", "has_sig": false, "md5_digest": "f468dcc3f6cfe4ae61bba07577be785b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38497, "upload_time": "2014-01-05T11:24:20", "url": "https://files.pythonhosted.org/packages/ac/f9/22e41f84fb7c8454ea524f9a3979fdea1ac798218e92b274c8005e731d72/chewy-0.4.tar.gz" } ] }