<br><br><div class="gmail_quote">On Mon Jan 05 2015 at 7:59:14 PM Radomir Dopieralski <<a href="mailto:openstack@sheep.art.pl">openstack@sheep.art.pl</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 05/01/15 00:35, Richard Jones wrote:<br>
> On Mon Dec 22 2014 at 8:24:03 PM Radomir Dopieralski<br>
> <<a href="mailto:openstack@sheep.art.pl" target="_blank">openstack@sheep.art.pl</a> <mailto:<a href="mailto:openstack@sheep.art.pl" target="_blank">openstack@sheep.art.pl</a><u></u>>> wrote:<br>
><br>
>     On 20/12/14 21:25, Richard Jones wrote:<br>
>     > This is a good proposal, though I'm unclear on how the<br>
>     > static_settings.py file is populated by a developer (as opposed to a<br>
>     > packager, which you described).<br>
><br>
>     It's not, the developer version is included in the repository, and<br>
>     simply points to where Bower is configured to put the files.<br>
> So just to be clear, as developers we:<br>
><br>
> 1. have a bower.json listing the bower component to use,<br>
> 2. use bower to fetch and install those to the bower_components<br>
> directory at the top level of the Horizon repos checkout, and<br>
> 3. manually edit static_settings.py when we add a new bower component to<br>
> bower.json so it knows the appropriate static files to load from that<br>
> component.<br>
><br>
> Is that correct?<br>
><br>
> The above will increase the burden on those adding or upgrading bower<br>
> components (they'll need to check the bower.json in the component for<br>
> the appropriate static files to link in) but will make life easier for<br>
> the re-packagers since they'll know which files they need to cater for<br>
> in static_settings.py<br>
<br>
Well, I expect you can tell Bower to put the files somewhere else than<br>
in the root directory of the project -- a directory like ``bower_files``<br>
or something (that directory is also added to ``.gitignore`` so that you<br>
don't commit it by mistake). Then only that directory needs to be added<br>
to the ``static_settings.py``. Of course, you still need to make all the<br>
``<script>`` links in appropriate places with the right URLs, but you<br>
would have to do that anyways.<br></blockquote><div><br></div><div>Bower installs into a directory called bower_components in the current directory, which is equivalent to your bower_files above.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Let's look at an example. Suppose you need to a new JavaScript library<br>
called "hipster.js". You add it to the ``bower.json`` file, and run<br>
Bower. Bower downloads the right files and does whatever it is that it<br>
does to them, and puts them in  ``bower_files/hipster-js``. Now you edit<br>
Horizon's templates and add ``<script src="{{ STATIC_URL<br>
}}/hipster-js/hipster.js">`` to ``_scripts.html``. That's it for you.<br>
Since your ``static_settings.py`` file already has a line:<br>
<br>
  ('', os.path.join(BASE_DIR, '/bower_files')),<br>
<br>
in it, it will just work.<br></blockquote><div><br></div><div>Yep, except s/bower_files/bower_components :)</div><div> </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Now, suppose that a packager wants to package this for, say, Debian. And<br>
suppose that Debian has "hipster.js" packaged, except it was called<br>
"bro.js" before, and they left the old name for compatibility reasons.<br>
He will look at the change history to the ``bower.json`` and the<br>
``_scripts.html`` files, take the ``static_settings.py`` file for his<br>
distribution, and add a line:<br>
<br>
  ('hipster-js/hipster.js', '/usr/lib/js_libraries/bro_js/<u></u>bro.js') <br></blockquote><div><br></div><div>Ah! I had forgotten about that feature. Yep, all good :)</div><div><br></div><div><br></div><div>      Richard</div><div> </div></div>