Project-Easy
view release on metacpan or search on metacpan
lib/Project/Easy/Helper.pm view on Meta::CPAN
package Project::Easy::Helper;
use Data::Dumper;
use Class::Easy;
use IO::Easy;
use Time::Piece;
require Project::Easy;
use Project::Easy::Config;
use Project::Easy::Helper::DB;
use Project::Easy::Helper::Status;
use Project::Easy::Helper::Config;
use Project::Easy::Helper::Console;
our @scriptable = (qw(status config updatedb console));
my $is_colored = 0;
$is_colored = 1
if try_to_use ('Term::ANSIColor');
sub ::initialize {
my $params = \@_;
$params = \@ARGV
unless scalar @$params;
my $namespace = shift @$params;
my @path = ('lib', split '::', $namespace);
my $last = pop @path;
my $project_id = shift @ARGV || lc ($last);
debug "initialization of $namespace, project id is: $project_id";
unless ($namespace) {
die "please specify package namespace";
}
my $data_files = file->__data__files;
my $data = {
namespace => $namespace,
project_id => $project_id,
};
my $project_pm = Project::Easy::Config::string_from_template (
$data_files->{'Project.pm'},
$data
);
my $login = eval {scalar getpwuid ($<)};
my $instance = 'local' . (defined $login ? ".$login" : '');
my $root = dir->current;
my $lib_dir = $root->append (@path)->as_dir;
$lib_dir->create; # recursive directory creation
$last .= '.pm';
my $class_file = $lib_dir->append ($last)->as_file;
$class_file->store_if_empty ($project_pm);
# ok, project skeleton created. now we need to create 'bin' dir
$root->dir_io ('bin')->create;
# now we create several perl scripts to complete installation
create_scripts ($root, $data_files);
# ok, project skeleton created. now we need to create config
my $etc = $root->append ('etc')->as_dir;
$etc->append ($instance)->as_dir->create;
# TODO: store database config
$etc->append ("$project_id.json")->as_file->store_if_empty ('{}');
$etc->append ($instance, "$project_id.json")->as_file->store_if_empty ('{}');
$etc->append ('project-easy')->as_file->store_if_empty ("#!/usr/bin/perl
package LocalConf;
our \$pack = '$namespace';
our \@paths = qw(
);
1;
");
my $var = create_var ($root);
my $instance_file = $var->append ('instance')->as_file;
$instance_file->store_if_empty ($instance);
my $t = $root->append ('t')->as_dir;
$t->create;
create_entity ($namespace, $root, 'default');
# adding sqlite database (sqlite is dependency for dbi::easy)
debug "file contents saving done";
$0 = dir->current->append (qw(etc project-easy))->path;
my $date = localtime->ymd;
my $schema_file = file ('share/sql/default.sql');
$schema_file->parent->create;
$schema_file->store (
"--- $date\ncreate table var (var_name text, var_value text);\n"
);
( run in 2.711 seconds using v1.01-cache-2.11-cpan-13bb782fe5a )