Changeset 136

Show
Ignore:
Timestamp:
02/10/07 17:55:24 (2 years ago)
Author:
ingy
Message:
 r3303@skinny:  ingy | 2007-02-05 00:35:03 -0800
 Added modules to control the bootstrapping of Kwiki.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/core/Kwiki/kwiki

    r45 r136  
    99 
    1010sub find_base { 
    11     return $ENV{KWIKI_BASE} 
    12       if defined $ENV{KWIKI_BASE}; 
     11    return if defined $ENV{KWIKI_BASE}; 
    1312 
    1413    my $base = $FindBin::Bin; 
     
    2524    chdir $home; 
    2625    $base = abs_path("$base/../../.."); 
    27     return $base if -d "$base/lib/Kwiki" and -d "$base/src/core/Kwiki"; 
    2826 
    29     if ($ENV{HOME}) { 
    30         $base = abs_path("$ENV{HOME}/.kwiki"); 
    31         return $base 
    32           if (-d $base and -w $base); 
    33     } 
    34  
    35     die <<'...'; 
    36  
    37 *ERROR*: Can't locate Kwiki base repository. 
    38  
    39 Try setting the KWIKI_BASE environment variable to a writable directory 
    40 where Kwiki can store site information. Alternately you can create a 
    41 ~/.kwiki/ directory for this purpose. 
    42  
    43 If you install Kwiki from SVN (http://svn.2.kwiki.org/kwiki/trunk/) or 
    44 from a Kwiki download tarball (instead of CPAN), then Kwiki will use 
    45 that directory as the base. 
    46  
    47 NOTE: Installing Kwiki from SVN is recommended. It makes installing and 
    48       updating Kwiki trivial. 
    49  
    50 ... 
     27    die "*ERROR*: Can't locate Kwiki base repository." 
     28        unless -d "$base/lib/Kwiki" and -d "$base/src/core/Kwiki"; 
     29    $ENV{KWIKI_BASE} = $base; 
    5130}  
    5231 
     
    6140    } 
    6241 
    63     my $base = find_base(); 
    64     if (-e "$base/lib") { 
    65         eval "use lib '$base/lib'; 1" 
    66           or die $@; 
    67     } 
    68     $ENV{KWIKI_BASE} = $base; 
     42    find_base(); 
     43    eval "use lib '$ENV{KWIKI_BASE}/lib'; 1" or die $@; 
    6944} 
    7045 
    71 use Kwiki; 
    72 my @configs = qw(config*.yaml -plugins plugins); 
    73 Kwiki->new->load_hub(@configs)->command->process(@ARGV)->hub->remove_hooks; 
     46use Kwiki::Boot; 
     47Kwiki::Boot->class->new->kwiki->hub->command->process(@ARGV)->hub->remove_hooks; 
    7448 
    7549__END__ 
  • trunk/src/core/Kwiki/lib/Kwiki.pm

    r66 r136  
    66 
    77sub process { 
    8     my $hub = $self->load_hub(@_)
     8    my $hub = $self->hub
    99    $hub->registry->load; 
    1010    $hub->add_hooks; 
     
    2020          : print $html; 
    2121    } 
    22 #     close STDOUT unless $self->using_debug; 
    2322    $hub->post_process; 
    2423    $self->destroy_hub; 
  • trunk/src/core/Kwiki/lib/Kwiki/Config.pm

    r100 r136  
    1  
    21package Kwiki::Config; 
    32use Spoon::Config -Base; 
     
    65const class_id => 'config'; 
    76const class_title => 'Kwiki Configuration'; 
    8 const config_file => 'config.yaml'; 
    97field script_name => ''; 
    10 const default_path => [ 'config' ]; 
    118field path => []; 
    12 field plugins_file => ''; 
    13  
    14 sub init { 
    15     $self->add_path(@{$self->default_path}); 
    16     $self->add_file($self->config_file); 
    17 } 
    18  
    19 sub paired_arguments { qw(-plugins) } 
    20 sub new { 
    21     my ($args, @configs) = $self->parse_arguments(@_); 
    22     $self = $self->SUPER::new(@configs); 
    23     if (my $plugins_file = $args->{-plugins}) { 
    24         $self->add_plugins_file($plugins_file); 
    25         $self->plugins_file($plugins_file); 
    26     } 
    27     return $self; 
    28 } 
    299 
    3010sub add_plugins_file { 
  • trunk/src/core/Kwiki/lib/Kwiki/Files.pm

    r87 r136  
    1111#!/usr/bin/perl 
    1212use lib 'lib'; 
    13 use Kwiki
    14 Kwiki->new->debug->process('config*.*', -plugins => 'plugins')
     13use Kwiki::Boot
     14Kwiki::Boot->class->new->kwiki->debug->process
    1515__README__ 
    1616A Kwiki Welcome 
  • trunk/src/core/Spoon/lib/Spoon.pm

    r87 r136  
    44 
    55const class_id => 'main'; 
    6  
    7 sub load_hub { 
    8     $self->destroy_hub; 
    9     my $hub = $self->hub(@_); 
    10     $hub->main($self); 
    11     $self->init; 
    12     return $hub; 
    13 } 
  • trunk/src/core/Spoon/lib/Spoon/Base.pm

    r87 r136  
    1515 
    1616sub hub { 
    17     return $Spoon::Base::HUB  
    18       if defined($Spoon::Base::HUB) and not @_; 
    19     Carp::confess "Too late to create a new hub. One already exists" 
    20       if defined $Spoon::Base::HUB; 
    21      
    22     my ($args, @config_files); 
    23     { 
    24         no warnings; 
    25         local *paired_arguments = sub { qw(-config_class) }; 
    26         ($args, @config_files) = $self->parse_arguments(@_); 
    27     } 
    28     my $config_class = $args->{-config_class} ||  
    29       $self->can('config_class') 
    30       ? $self->config_class 
    31       : 'Spoon::Config'; 
    32     eval "require $config_class"; die $@ if $@; 
    33     my $config = $config_class->new(@config_files); 
    34     my $hub_class = $config->hub_class; 
    35     eval "require $hub_class"; 
    36     my $hub = $hub_class->new( 
    37         config => $config, 
    38         config_files => \@config_files, 
    39     ); 
     17    return $Spoon::Base::HUB; 
    4018} 
    4119 
  • trunk/src/core/Spoon/lib/Spoon/Hub.pm

    r117 r136  
    88field config_files => []; 
    99field all_hooks => []; 
     10field 'config'; 
    1011 
    1112sub new { 
    1213    $self = $self->SUPER::new(@_); 
    1314    $self->init; 
     15    die "Hub already created" 
     16      if defined $Spoon::Base::HUB; 
    1417    $Spoon::Base::HUB = $self; 
    1518} 
  • trunk/src/core/modules.mk

    r71 r136  
    44        Kwiki \ 
    55        Kwiki/Archive \ 
     6        Kwiki/Boot \ 
    67        Kwiki/Template \ 
    78        Kwiki/Theme \ 
     
    3435        Kwiki/Archive.pm \ 
    3536        Kwiki/Base.pm \ 
     37        Kwiki/Boot.pm \ 
    3638        Kwiki/BrowserDetect.pm \ 
    3739        Kwiki/CGI.pm \ 
     
    125127        IO/All/Temp.pm \ 
    126128        Kwiki/Archive/Simple.pm \ 
     129        Kwiki/Boot/V010.pm \ 
    127130        Kwiki/Template/TT2.pm \ 
    128131        Kwiki/Theme/Basic.pm \