Skip to main content

zc.buildout recipe for managing WordPress plugins/themes and MediaWiki extensions

Project description

leocornus.recipe.wpmw
=====================

A buildout recipe trying to provide an easy way to manage WordPress Plugins, themes and
MediaWiki Extenstions.

Detailed Documentation
**********************


This recipe should have 2 major functions: WordPress Plugins and
MediaWiki Extensions

Options
=======

The ``leocornus.recipe.wpmw:Plugins`` recipe could be used to download WordPress
Plugins package, extract to certain folder, and create the symlink to WordPress
wp-content/plugins folder. It supports the following general options:

Options for all recipes:

``ignore-existing``

default is true, ignore existing folder.

Options for plugins recipe:

``plugins``

A list of plugins id and version at format id=version.
e.g. buddypress=1.5.1

``plugins-repo``

The base URL to download the plugins, default is
``http://downloads.wordpress.org/plugin``. This option allow user to get
plugins from an interal repository.

``wordpress-root``

The root folder of WordPress installation. The wp-content/plugins folder
is within it.

Options for extensions recipe:

``extensions``

A list of extensions id and version at format id=version.
e.g. SemanticForms=2.4

``extensions-repo``

The base URL, where we could download the extensions.

``mediawiki-root``

The root folder of MediaWiki installation. We will create symlink in its
extensions sub-folder.

Options for symlink recipe:

``target-folder``

the target folder, from which we create symlink to the link_name.

``link-folder``

the link folder will have all the link names.

``names``

the names used to create the symlink. The following command will be used:
$ ln -s target_folder/name link_folder/name

zc.buildout built in a set of easy to use functions to simplfy the testing for buildout
recipe. Check http://pypi.python.org/pypi/zc.buildout/1.5.2#testing-support for more
details.

Examples for WordPress Plugins
==============================

get ready a empty WordPress plugins folder for testing.

>>> import os.path
>>> wordpress = tmpdir('wordpress')
>>> mkdir(wordpress, 'wp-content')
>>> ls(wordpress)
d wp-content
>>> mkdir(wordpress, 'wp-content', 'plugins')
>>> ls(wordpress, 'wp-content')
d plugins

try to crate a symlink in plugins folder to test the unlink function.

>>> import os
>>> bp = tmpdir('bp-fake')
>>> print bp
/tmp/.../bp-fake
>>> os.symlink(bp, os.path.join(wordpress, 'wp-content', 'plugins', 'buddypress'))
>>> ls(wordpress, 'wp-content', 'plugins')
d buddypress

create a broken symlink, we have to use os.path.lexists to check the link name exist or
not.

>>> bplink = tmpdir('bp-link')
>>> os.symlink(bplink, os.path.join(wordpress, 'wp-content', 'plugins', 'buddypress-links'))
>>> ls(wordpress, 'wp-content', 'plugins')
d buddypress
d buddypress-links
>>> remove(bplink)
>>> ls(wordpress, 'wp-content', 'plugins')
d buddypress
l buddypress-links

Try to run the Plugins recipe. The ``sample_buildout`` is a built-in buildout object
provided by zc.buildout.testing package.

>>> write(sample_buildout, 'buildout.cfg',
... """
... [buildout]
... parts = wpplugins
...
... [wpplugins]
... recipe = leocornus.recipe.wpmw:plugins
... plugins =
... buddypress=1.5.1
... bp-moderation=0.1.4
... buddypress-links=0.5
... wordpress-root = %(wordpress)s
... """ % dict(wordpress=wordpress))

Run the buildout

>>> print system(buildout)
Installing wpplugins.
Downloading http://downloads.wordpress.org/plugin/buddypress.1.5.1.zip
wpplugins: Extracting package to .../sample-buildout/parts/wpplugins/buddypress-1.5.1
wpplugins: Create symlink to .../wordpress/wp-content/plugins/buddypress
Downloading http://downloads.wordpress.org/plugin/bp-moderation.0.1.4.zip
wpplugins: Extracting package to .../sample-buildout/parts/wpplugins/bp-moderation-0.1.4
wpplugins: Create symlink to .../wordpress/wp-content/plugins/bp-moderation
Downloading http://downloads.wordpress.org/plugin/buddypress-links.0.5.zip
wpplugins: Extracting package to .../sample-buildout/parts/wpplugins/buddypress-links-0.5
wpplugins: Create symlink to .../wordpress/wp-content/plugins/buddypress-links

Check the parts folder to make sure all plugins are downloaded.

>>> ls(sample_buildout, 'parts')
d buildout
d wpplugins

>>> ls(sample_buildout, 'parts', 'wpplugins')
d bp-moderation-0.1.4
d buddypress-1.5.1
d buddypress-links-0.5

check the WordPress plugins folder to make sure all symlink are created.

>>> ls(wordpress, 'wp-content', 'plugins')
d bp-moderation
d buddypress
d buddypress-links

Examples for MediaWiki Extensions
=================================

We need a temp server for this testing

>>> import os.path
>>> testdata = join(os.path.dirname(__file__), 'testdata')
>>> server = start_server(testdata)

Prepare an empty MediaWiki extensions folder for testing

>>> mediawiki = tmpdir('mediawiki')
>>> mkdir(mediawiki, 'extensions')
>>> ls(mediawiki)
d extensions

A simple buildout configuration file.

>>> write(sample_buildout, 'buildout.cfg',
... """
... [buildout]
... parts = mwextensions
...
... [mwextensions]
... recipe = leocornus.recipe.wpmw:extensions
... extensions =
... Cite=r37577
... SemanticForms=1.9.1
... SemanticMediaWiki=1.5.1
... extensions-repo = %(server)srepos
... mediawiki-root = %(mediawiki)s
... """ % dict(server=server, mediawiki=mediawiki))

Run the buildout and check the result.

>>> print system(buildout)
Uninstalling wpplugins.
Installing mwextensions.
Downloading http://.../repos/Cite.r37577.zip
mwextensions: Extracting package to .../sample-buildout/parts/mwextensions/Cite-r37577
mwextensions: Create symlink to .../mediawiki/extensions/Cite
Downloading http://.../repos/SemanticForms.1.9.1.zip
mwextensions: Extracting package to .../sample-buildout/parts/mwextensions/SemanticForms-1.9.1
mwextensions: Create symlink to .../mediawiki/extensions/SemanticForms
Downloading http://.../repos/SemanticMediaWiki.1.5.1.zip
mwextensions: Extracting package to .../sample-buildout/parts/mwextensions/SemanticMediaWiki-1.5.1
mwextensions: Create symlink to .../mediawiki/extensions/SemanticMediaWiki

check the parts folder.

>>> ls(sample_buildout, 'parts')
d buildout
d mwextensions
>>> ls(sample_buildout, 'parts', 'mwextensions')
d Cite-r37577
d SemanticForms-1.9.1
d SemanticMediaWiki-1.5.1

check the MediaWiki extensions folder

>>> ls(mediawiki, 'extensions')
d Cite
d SemanticForms
d SemanticMediaWiki

Examples for symlink recipe
===========================

preparing the packages.

>>> target = tmpdir('target')
>>> mkdir(target, 'dirone')
>>> mkdir(target, 'dirtwo')
>>> write(target, 'one.file',
... """
... empty file for testing
... """)
>>> ls(target)
d dirone
d dirtwo
- one.file
>>> links = tmpdir('links')
>>> ls(links)

get ready the buildout config for symlink.

>>> write(sample_buildout, 'buildout.cfg',
... """
... [buildout]
... parts = symlinks
...
... [symlinks]
... recipe = leocornus.recipe.wpmw:symlinks
... target-folder = %(target)s
... link-folder = %(link)s
... names =
... dirone
... dirtwo
... one.file
... noexit.file
... """ % dict(target=target, link=links))

Run the buildout

>>> print system(buildout)
Uninstalling mwextensions.
Installing symlinks.
symlinks: Create symlink to .../links/dirone
symlinks: Create symlink to .../links/dirtwo
symlinks: Create symlink to .../links/one.file
symlinks: Target .../target/noexit.file not exist, ignoring...

Verify the link folder.

>>> ls(links)
d dirone
d dirtwo
l one.file

Change History
**************

1.1.0 (2012-03-07)
=================

- Add the part directory to install result, so buildout will remove
it during uninstalling.

- New symlinks recipe to create symlinks from target folder to link
folder for all names.

1.0.1 (2012-03-06)
==================

- Using os.path.lexists instead of os.path.exists to make sure the
broken symlinks got removed.

1.0.0 (2012-03-05)
==================

- Initial release

Download
***********************

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

leocornus.recipe.wpmw-1.1.0.tar.gz (1.0 MB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page