-
Notifications
You must be signed in to change notification settings - Fork 3
/
SkeletonInstall.cfc
58 lines (47 loc) · 2.26 KB
/
SkeletonInstall.cfc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
component extends="commandbox.system.BaseCommand" {
public void function postInstall( required string directory ) {
print.line();
print.boldLine( "===================================" );
print.boldLine( "Preside Empty Skeleton setup wizard" );
print.boldLine( "===================================" );
print.line();
print.line( "You're nearly there. Answer a few questions and we'll get your new site setup and ready to go :)" );
print.line().toConsole();
var appName = "";
var siteId = "";
while( !Len(Trim( appName ) ) ) {
appName = ask( "Enter a name for your site (e.g. My Cool Site): " );
}
siteId = LCase( ReReplace( appName, "\w", "-", "all" ) );
siteId = ReReplace( appName, "-+", "-", "all" );
siteId = ReReplace( appName, "^-+", "" );
siteId = ReReplace( appName, "-+$", "" );
print.line( "");
print.greenLine( "Thank you. Finalizing your template now. NOTE: your admin path is set to /admin/." );
print.line( "");
var configCfcPath = arguments.directory & "/application/config/Config.cfc";
var appCfcPath = arguments.directory & "/Application.cfc";
var boxJsonPath = arguments.directory & "/box.json";
var boxJsonTemplatePath = arguments.directory & "/box.json.template";
var config = FileRead( configCfcPath );
var appcfc = FileRead( appCfcPath );
var boxjson = FileRead( boxJsonTemplatePath );
config = ReplaceNoCase( config , "${site_id}", siteId, "all" );
appcfc = ReplaceNoCase( appcfc , "${site_id}", siteId, "all" );
boxjson = ReplaceNoCase( boxjson, '${site_name}', appName, "all" );
boxjson = ReplaceNoCase( boxjson, '${site_id}', siteId, "all" );
FileWrite( configCfcPath, config );
FileWrite( appCfcPath , appcfc );
FileWrite( boxJsonPath , boxjson );
FileDelete( boxJsonTemplatePath );
print.greenLine( "" );
print.greenLine( "Installing the latest stable Preside release..." );
print.greenLine( "" );
command( "install" ).params( "presidecms" ).run();
command( "install" ).params( "preside-ext-launcher" ).run();
command( "install" ).params( "preside-ext-alt-admin-theme" ).run();
}
private boolean function _validSlug( required string slug ) {
return ReFindNoCase( "^[a-z0-9-_]+$", arguments.slug );
}
}