This article is part of a longer series covering the n98-magerun power tool
We’re almost at the end of our n98-magerun command review. Today we’re going to blitz through the remaining commands on our plate
$ n98-magerun list local
Available commands for the "local-config:generate" namespace:
local-config:generate Generates local.xml config
$ n98-magerun list index
Available commands for the "index" namespace:
index:list Lists all magento indexes
index:reindex Reindex a magento index by code
index:reindex:all Reindex all magento indexes
$ n98-magerun list extension
Available commands for the "extension" namespace:
extension:download Download magento-connect package
extension:install Install magento-connect package
extension:list List magento connection extensions
extension:search List magento connection extensions
extension:upgrade Upgrade magento-connect package
Let’s get to it.
Local Config
The local-config:generate command will recreate the local configuration file at app/etc/local.xml.
$ n98-magerun local-config:generate
Generate Magento local.xml
Please enter the database host:localhost
Please enter the database username:merlin
Please enter the database password:password12345
Please enter the database name:magento_example_com
Please enter the session save:file
Please enter the admin frontname:admin
Generated config
This file is the first one loaded into the global configuration tree, and is generated by installing Magento. This command appears to exist as a fix for stores with a missing local.xml. Consider the results if you run the command with app/etc/local.xml in place.
$ n98-magerun local-config:generate
local.xml file already exists in folder "/path/to/magento/app/etc"
Also, local-config:generate relies on the existence of the app/etc/local.xml.template file that ships with Magento. Running the command without this will result in the following error.
File /Users/alanstorm/Sites2012/magento1point7pointzeropoint1.dev/app/etc/local.xml.template does not exist.
Finally, while there are interactive prompts for entering data, the script does no validation on the values. Database credentials aren’t checked, it’s possible to enter an invalid session save type, etc. Keep your wits about you when using this command.
Indexer Commands
The index category contains three commands for working with Magento’s indexes. These commands are very similar to the shell/indexer.php script that ships with Magento. For those new to the platform, a Magento “index” is conceptually like an index on a database column, but a more practical definition might be
An index takes data Magento either stores across many tables in a normalized-(ish) way or calculates, and then de-normalizes or caches it for performance and convenience reasons.
You can use the index:list command to fetch a list of all known Magento indexers, (also known as “index processes”).
$ n98-magerun index:list
Index list
+---------------------------+-----------------+--------+
| code | status | time |
+---------------------------+-----------------+--------+
| catalog_product_attribute | pending | 0 |
| catalog_product_price | pending | 2m 52s |
| catalog_url | pending | 5s |
| catalog_product_flat | pending | 1m 27s |
| catalog_category_flat | require_reindex | 1s |
| catalog_category_product | pending | 0 |
| catalogsearch_fulltext | pending | 3s |
| cataloginventory_stock | pending | 1s |
| tag_summary | pending | 0 |
+---------------------------+-----------------+--------+
The status column indicates if Magento thinks a re-index is required (pending being the normal status), and the time column indicates how long the last re-index took.
You can run a specific index process with the index:reindex command
$ n98-magerun index:reindex
$ n98-magerun index:reindex catalog_url
Reindex
Started reindex of: catalog_url
Estimated end: 2013-04-23 04:41:27 UTC
Successfully reindexed catalog_url (Runtime: 5s)
or re-index everything with the index:reindex:all command.
$ n98-magerun index:reindex:all
Successfully reindexed catalog_product_attribute
Successfully reindexed catalog_product_price
Successfully reindexed catalog_url
Successfully reindexed catalog_product_flat
Successfully reindexed catalog_category_flat
Successfully reindexed catalog_category_product
Successfully reindexed catalogsearch_fulltext
Successfully reindexed cataloginventory_stock
Successfully reindexed tag_summary
Magento Connect Commands
The extension category contains commands related to Magento Connect. Magento Connect is the repository of free Magento extensions maintained by eBay Inc.’s Magento division, as well as the ecosystem of tools for installing the extension packages.
While the extension commands may seem like a replacement for the bundled ./mage script, these commands are just wrappers for calls to ./mage. You’ll still need a fully installed and configured Magento Connect to run these commands.
The extension:list command will display a list of every Magento Connect extension that’s available. As of this writing that’s 3800 extensions.
$ mn98-magerun extension:list
+---------------------+--------------------+--------+
| Package | Version | Stabi |
+---------------------+--------------------+--------+
| Lib_Js_Calendar | 1.51.1.1 | stable |
| Lib_Js_Ext | 1.7.0.0 | stable |
| ... snipped ... | | |
| Ivan_ImageZoom | 2.0.0 | stable |
| fullpagecache | 1.0.0 | stable |
+---------------------+--------------------+--------+
If you’re looking for a specific extension, you can perform a simple stristr search on the name with the extension:search command.
$ mn98-magerun extension:search Mage
+-------------------------+----------------+--------+
| Package | Version | Stabi |
+-------------------------+----------------+--------+
| Mage_Pear_Helpers | 1.0.18800 | stable |
| Mage_All | 1.0.19870 | stable |
| Mage_Oscommerce | 1.1.20123 | dev |
| Mage_Checkout | 1.0 | dev |
| Mage_Strikeiron | 1.0.18800 | stable |
| Locale_Mage_Core_fr_FR | 1.0.18800 | beta |
| ... snipped ... | | |
| mageokcustomoptions | 1.0.0.0 | alpha |
| Ivan_ImageZoom | 2.0.0 | stable |
+-------------------------+----------------+--------+
Keep in mind stristr’s search is not a sophisticated algorithm. You’ll notice our search returned Ivan_ImageZoom due to the mage in Image.
Once you’ve found the extension you’re looking for, you may download it with the extension:download command
$ n98-magerun extension:download Pulsestorm_Launcher
Saved to: /path/to/magento/downloader/.cache/community/Pulsestorm_Launcher-1.0.3.tgz
You can also download and automatically install a package with extension:install.
$ n98-magerun extension:install Pulsestorm_Launcher
Checking dependencies of packages
Starting to download Pulsestorm_Launcher-1.0.3.tgz ...
...done: 8,946 bytes
Installing package community/Pulsestorm_Launcher 1.0.3
Package community/Pulsestorm_Launcher 1.0.3 installed successfully
Package installed: community/Pulsestorm_Launcher 1.0.3
And finally, you can use the extension:upgrade command to check-for-then-automatically-install an upgrade for an extension.
$ n98-magerun extension:upgrade Pulsestorm_Launcher
Checking dependencies of packages
Already installed: community/Pulsestorm_Launcher 1.0.3, skipping
In the example above n98-magerun is telling us it didn’t do anything, since the latest version of the Pulse Storm Launcher is already installed. That points to one of the weaknesses of the extension category of commands. While the commands here are useful, you’ll still need to rely on ./mage (or the Connect GUI) if you want to view a list of available upgrades, uninstall an extension, etc.
Wrap Up
And that completes our command coverage of n98-magerun. There’s a few other commands that are worth checking out on your own. The cms category has two commands that are Magento Enterprise Edition only, cms:banner:toggle for publishing a banner, and cms:page:publish for publishing a specific CMS page. There’s also a design:demo-notice command which can toggle a demo notice on/off in your store.
Next time we’ll start digging into setting up your own n98-magerun development environment.