On 05/10/2013 10:43 AM, Peter Schneider wrote:
> Hi there,
>
> I would like to know if it is possible to "switch on/off" a "copy-file" (and
> "add-script") sub-job dependent on variants?
>
> For example, depending on the setting of the "myApp.withWebSocket":
>
> <code>
>
>    // ...
>
>    "build" : {
>      "environment" : {
>        "myApp.withWebSocket" : false, // [true|false]
>        // ...
>      }
>    },
>
>    "source" : {
>      "environment" : {
>        "myApp.withWebSocket" : true, // [true|false]
>        // ...
>      }
>    },
>
>    // ...
>
>    "source-script" :
>    {
>      // *** Possible to enable/disable this via environment/variants? ***
>      "add-script": [ { "uri" : "./resource/socket.io/socket.io.js" } ]
>    },
>
>
>    "build-script" :
>    {
>      // *** Possible to enable/disable this via environment/variants? ***
>      "copy-files" : {
>        "files"  : [ "./socket.io/socket.io.min.js",
>                     "./socket.io/WebSocketmain.swf",
>                     "./socket.io/WebSocketMainInsecure.swf" ],
>        "source" : "./source/resource/",
>        "target" : "./build/"
>      },
>      "add-script" : [ { "uri" : "socket.io/socket.io.min.js" } ]
>    },
>
> },
>
> // ...
> </code>
>
> is something like this possible?

Generally, there is no conditional branching in the config. What you 
could do, though, is to mis-use macros to draw in settings from other 
jobs by making the other job's name depend on the macro value. E.g. in 
the case of the 'add-script'  key you could

   "source-script" : {
     "let" : {
        "FLAG" : "do"           // or "no"
     },
     "extend" : ["my-add-script-${FLAG}includer"]
   },

   "my-add-script-doincluder" : {
     "add-script" : [ { "uri" : "./resource/socket.io/socket.io.js" } ]
   },

   "my-add-script-noincluder" : {
     // intentionally left empty
   }

And then set the FLAG macro to "do" or "no" according to what you want. 
You can do this in the global "let" section of your config.json, or on 
the command line with '-m FLAG:no'. The same should work with a 
'copy-files' key. The basic idea is always to have two includer jobs for 
the same set of settings, and depending on a macro you will include one 
or the other.

This is only possible with macros, so you cannot use an environment key 
directly as you intended. But you can work the other way round and make 
the environment key depend on a macro. Unfortunately, only string values 
will work this way with macros so true and false cannot be used in job 
names . So you will have to provide the 'environment' key also as part 
of an includer job.

In your special case it is probably not possible to accumulate several 
settings into a single pair of includer jobs, but you might have to have 
individual pairs for each setting (as you need individual settings in 
different jobs). So you might end up having this pattern of includer 
jobs (job contents mostly omitted for clarity):

   "withWebSocket-env-yes" : {
      "environment" : { "myApp.withWebSocket" : true }
   },

   "withWebSocket-env-no" : {

   }

   "withWebSocket-add-script-yes" : {

   },

   "withWebSocket-add-script-no" : {

   },

   "withWebSocket-copy-files-yes" : {

   }

   "withWebSocket-copy-files-no" : {

   }

(In fact, some of these jobs could actually remain empty). Then use 
these includer jobs in the source and build jobs,  e.g. your build jobs 
could look like this:

   "build" : {
     "extend" : [ "withWebSocket-env-${WithWebSocket}"]
   },

   "build-script" : {
     "extend" : [
       "withWebSocket-env-${WithWebSocket}",
       "withWebSocket-add-script-${WithWebSocket}",
       "withWebSocket-copy-files-${WithWebSocket}"
     ]
   }

and you would set the macro "WithWebSocket" to either "yes" or "no".

HTH,
T.


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to