<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -11,11 +11,13 @@ module Radiant
     attr_accessor :extension_paths
     attr_accessor :extensions
     attr_accessor :view_paths
+    attr_accessor :extension_dependencies
 
     def initialize
       self.view_paths = []
       self.extension_paths = default_extension_paths
       self.extensions = [ :all ]
+      self.extension_dependencies = []
       super
     end
 
@@ -32,6 +34,31 @@ module Radiant
       AdminUI.instance
     end
 
+    def extension(ext)
+      @extension_dependencies &lt;&lt; ext unless @extension_dependencies.include?(ext)
+    end
+
+    def check_extension_dependencies
+      unloaded_extensions = []
+      @extension_dependencies.each do |ext|
+        extension = ext.camelcase + 'Extension'
+        begin
+          extension_class = extension.constantize
+          unloaded_extensions &lt;&lt; extension unless defined?(extension_class) &amp;&amp; (extension_class.active?)
+        rescue NameError
+          unloaded_extensions &lt;&lt; extension
+        end
+      end
+      if unloaded_extensions.any?
+        abort &lt;&lt;-end_error
+Missing these required extensions:
+#{unloaded_extensions}
+end_error
+      else
+        return true
+      end
+    end
+
     private
 
       def library_directories
@@ -122,6 +149,7 @@ module Radiant
     def after_initialize
       super
       extension_loader.activate_extensions
+      configuration.check_extension_dependencies
     end
 
     def initialize_default_admin_tabs</diff>
      <filename>lib/radiant/initializer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -170,6 +170,7 @@ describe Radiant::ExtensionLoader do
     Page.should_receive(:load_subclasses)
     @instance.activate_extensions
   end
+
 end
 
 </diff>
      <filename>spec/lib/radiant/extension_loader_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -30,6 +30,29 @@ describe Radiant::Configuration do
   it &quot;should have access to the AdminUI&quot; do
     @configuration.admin.should == Radiant::AdminUI.instance
   end
+
+  it &quot;should initialize extension dependencies&quot; do
+    @configuration.extension_dependencies.should eql([])
+  end
+
+  it &quot;should add extension dependencies&quot; do
+    @configuration.extension('basic')
+    @configuration.extension_dependencies.should eql(['basic'])
+  end
+
+  it &quot;should validate dependencies&quot; do
+    @configuration.extensions = [BasicExtension]
+    @configuration.extension('basic')
+    @configuration.check_extension_dependencies.should be_true
+  end
+
+  it &quot;should report missing dependencies&quot; do
+    @configuration.extensions = [BasicExtension]
+    @configuration.extension('does_not_exist')
+    lambda {
+      @configuration.check_extension_dependencies
+    }.should raise_error(SystemExit)
+  end
 end
 
 describe Radiant::Initializer do
@@ -77,4 +100,10 @@ describe Radiant::Initializer do
   it &quot;should have access to the AdminUI&quot; do
     @initializer.admin.should == Radiant::AdminUI.instance
   end
+
+  it &quot;should check dependent extensions&quot; do
+    @initializer.configuration.should_receive(:check_extension_dependencies)
+    @initializer.after_initialize
+  end
+
 end</diff>
      <filename>spec/lib/radiant/initializer_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>fc383df21f69235e5139691d15ece8e35345fae5</id>
    </parent>
  </parents>
  <author>
    <name>Josh French</name>
    <email>josh@digitalpulp.com</email>
  </author>
  <url>http://github.com/hairballopolis/radiant/commit/73f9cfc9b3caf62080d2b1b6b3a5fc4e42d01a49</url>
  <id>73f9cfc9b3caf62080d2b1b6b3a5fc4e42d01a49</id>
  <committed-date>2009-05-11T12:00:11-07:00</committed-date>
  <authored-date>2009-05-11T12:00:11-07:00</authored-date>
  <message>Extension dependencies</message>
  <tree>cfed314aed380df991ccd059ad1420c8a1808a62</tree>
  <committer>
    <name>Josh French</name>
    <email>josh@digitalpulp.com</email>
  </committer>
</commit>
