[[PageOutline(2-5,Contents,pullout)]] = Bitten Recipe Extractor == Description These are two scripts that retrieve a Trac's [https://bitten.edgewall.org/ Bitten] rule sets. These scripts allow you to make off-line changes easily with your favorite text editor. Once the changes have been made, a second script uploads these changes to the server. === Reading and Writing Recipes Each Bitten rule will be a separate .recipe file. Each Python script uses the same single argument, namely the path to your Trac environment: {{{#!sh $ trac-admin /some/trac/environment }}} To be absolutely clear on this, and to add additional text spam to this site: {{{#!sh $ sudo python recipe_get.py /some/trac/environment }}} and: {{{#!sh $ sudo python recipe_put.py /some/trac/environment }}} Accordingly. When you perform a recipe_get.py, a directory will be created with a name equal to your Trac directory with '_recipes' appended to it (trac-directory-name_recipes). The recipes will be saved (or updated for recipes currently residing) in this directory. You can leave these files there and continue to run both scripts for eternity. No need to clean them up. And quite frankly, leaving them alone for backup reasons, is recommended. === Editing the Recipe Files The file syntax is fairly straightforward. The values are delimited by two caret characters. If there is a quicker or better way to do this, please submit a ticket. From the first value to last: * The unique recipe name (this should never be changed) * The path in your repository * Is this recipe active or not? 1 being active, 0 being inactive * The Bitten recipe itself * The minimum revision (if blank, then set to None) * The maximum revision (if blank, then set to None) * The recipe name as seen on the Trac Bitten Builds page * The recipe description I have seen no harm in changing all but the first value. In fact, I have altered the other values with incorrect data, and was easily able to recover from it, by making my corrections, and running the recipe_put.py script again. == Bugs/Feature Requests Existing bugs and feature requests for BittenRecipesExtractorScript are [report:9?COMPONENT=BittenRecipesExtractorScript here]. If you have any issues, create a [/newticket?component=BittenRecipesExtractorScript new ticket]. [[TicketQuery(component=BittenRecipesExtractorScript&group=type,format=progress)]] === Known Issues Pattern matching may include swap and backup specific files from editing your recipes. The only issue this would cause, may be a file with no changes from the original, or other non-desirable changes. Keep this in mind if you are finding recipes not updating with the correct data. Search for hidden files in your recipe directory and delete them. I have attempted to solve this, but unfortunately I have found that Trac allows periods and dashes in the naming convention of Bitten rules. So this rules out a lot of simple pattern matching that can be performed, eg {{{if str.isalnum(file_name)}}}. Super User access is needed when reading and writing to the Trac database directly. Also, on some of my clusters that I work with, multiple version of Python can exist. Hence, if you receive errors like: {{{#!sh ImportError: No module named trac.env }}} You need to adjust your PATH environment to include the path to the Python version that was used to install and run Trac: {{{#!sh $ export PATH=/usr/local/python2.7/bin:$PATH }}} '''Note''': This is the reason I do not include the common `#!/usr/bin/python` interrupter header in my scripts. == Download Download the zipped source from [export:bittenrecipesextractorscript here]. == Source You can check out BittenRecipesExtractorScript from [/svn/bittenrecipesextractorscript here] using Subversion, or [source:bittenrecipesextractorscript browse the source] with Trac. == Recent Changes [[ChangeLog(bittenrecipesextractorscript, 3)]] == Author/Contributors '''Author:''' [wiki:mjasonmiller] [[BR]] '''Maintainer:''' [[Maintainer]] [[BR]] '''Contributors:'''