ValueTree XML editor for .jucer files

A tool for scripting changes to  .jucer files.

I started adding the features to introjucer, but actually it's far more useful as a stand alone tool: 

https://github.com/jcredland/vtcli

I needed it to solve an otherwise complicated build automation problem.  Use at your own risk.  I've only tested it as far as I needed to.

 

EXAMPLE - Editing a .jucer file

 

Before


$ ./vtcli vtcli.jucer --node-name MODULES -x

<?xml version="1.0" encoding="UTF-8"?> <MODULES> <MODULES id="juce_core" showAllCode="1" useLocalCopy="0"/> <MODULES id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> <MODULES id="juce_events" showAllCode="1" useLocalCopy="0"/> </MODULES>

 

Make a change from the command line

$ ./vtcli vtcli.jucer --node-name MODULES -np MODULES id juce_core --write useLocalCopy 1 

 

After

$ ./vtcli vtcli.jucer --node-name MODULES -x

<?xml version="1.0" encoding="UTF-8"?> <MODULES> <MODULES id="juce_core" showAllCode="1" useLocalCopy="1"/> <MODULES id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> <MODULES id="juce_events" showAllCode="1" useLocalCopy="0"/> </MODULES>

Jules - on reflection - it'd be pretty handy integrated into the introjucer.  As it'd be able to validate that the attributes being changed were at least vaild without too much work, provide useful diagnostics if you ever depreciated anything and so on... :)

But it'd open a nice easy world of automation, configuration consistency checks and all sorts...

This is pretty neat, and is a nice general purpose tool - certainly worth considering adding it to the introjucer. What do other people think?

yeah, sometimes in nightly build setups on different machines and vm, it's handy to both modify or extract specific variables from the .jucer files (from command line scripts) to maximize automation.

+100 for me

Now I've started using it there are a couple of changes and additions I'm thinking of putting in: 

  • -np needs a long-form equivalent. 
  • It needs a feature for adding items to strings, rather than replacing them.  Otherwise automating additions to say the compiler defines list is risky as it might overwrite some future jucer change.

 

Looks good to me. I'm used to using command line package managers for web  development, so to e.g. be able to pull in required modules for a project would be useful, and much quicker than fumbling around a gui. 

I think this could link in nicely with the Juce module manager or whatever that might get called...