Skip to content

Commit c956b57

Browse files
committed
updated README
1 parent a8a4c83 commit c956b57

File tree

10 files changed

+185
-196
lines changed

10 files changed

+185
-196
lines changed

README.md

+8
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ This command creates a new Dappur application in the specified folder using the
2424
$ dapp new name (--theme=THEME_REPO --dashboard=THEME_REPO --vagrant)
2525
```
2626

27+
### `url`
28+
This command allows you to install official and custom themes from git repositories.
29+
- **url** - Git repo url for the theme that you wish to install.
30+
- **--download-only (Optional)** - If set, the theme will be copied into the view folder, but the database will not be updated.
31+
```
32+
$ dapp theme url (--theme=THEME_REPO --dashboard=THEME_REPO --vagrant)
33+
```
34+
2735
### `controller`
2836
This command generated a new controller class in `app/src/Controller` as well as having the controller automatically added to the container dependencies with an entry in `app/src/bootstrap/controllers.php`
2937
- **name** - The name of your controller class in `PascalCase` format. This command also supports generating nested class names, i.e. `NewController\SubController`.

src/Dapp/Console/Command/App.php

+26-30
Original file line numberDiff line numberDiff line change
@@ -36,42 +36,38 @@ protected function execute(InputInterface $input, OutputInterface $output)
3636
}
3737
}
3838

39-
if (CliUtils::isDappur()) {
40-
$class = getcwd() . '/app/src/App/'.$className.'.php';
41-
$base = getcwd() . '/app/src/App/';
42-
$namespace = 'Dappur\App';
43-
$classFileName = "";
39+
$dappur = CliUtils::isDappur();
40+
$class = getcwd() . '/app/src/App/'.$className.'.php';
41+
$base = getcwd() . '/app/src/App/';
42+
$namespace = 'Dappur\App';
43+
$classFileName = "";
4444

45-
if (file_exists($class)) {
46-
throw new \InvalidArgumentException('That controller already exists.');
47-
}
45+
if (file_exists($class)) {
46+
throw new \InvalidArgumentException('That controller already exists.');
47+
}
4848

49-
foreach ($separated as $sep) {
50-
if ($sep == end($separated)) {
51-
touch($class);
52-
$classFileName = $sep;
53-
continue;
54-
}
55-
mkdir($base . "/$sep");
56-
$base = $base . "/$sep";
57-
$namespace = $namespace . "\\$sep";
49+
foreach ($separated as $sep) {
50+
if ($sep == end($separated)) {
51+
touch($class);
52+
$classFileName = $sep;
53+
continue;
5854
}
55+
mkdir($base . "/$sep");
56+
$base = $base . "/$sep";
57+
$namespace = $namespace . "\\$sep";
58+
}
5959

60-
$phpClass = new ClassModel();
61-
# Namespace
62-
$phpClass->setNamespace(new NamespaceModel($namespace));
60+
$phpClass = new ClassModel();
61+
# Namespace
62+
$phpClass->setNamespace(new NamespaceModel($namespace));
6363

64-
#Class
65-
$name = new ClassNameModel($classFileName, 'App');
66-
$phpClass->setName($name);
64+
#Class
65+
$name = new ClassNameModel($classFileName, 'App');
66+
$phpClass->setName($name);
6767

68-
# Render and write file
69-
$create = file_put_contents($class, $phpClass->render());
68+
# Render and write file
69+
$create = file_put_contents($class, $phpClass->render());
7070

71-
$output->writeln($className . " class successfully added.");
72-
}
73-
71+
$output->writeln($className . " class successfully added.");
7472
}
75-
76-
7773
}

src/Dapp/Console/Command/Controller.php

+43-47
Original file line numberDiff line numberDiff line change
@@ -36,61 +36,57 @@ protected function execute(InputInterface $input, OutputInterface $output)
3636
}
3737
}
3838

39-
if (CliUtils::isDappur()) {
40-
$containerBootstrap = getcwd() . '/app/bootstrap/controllers.php';
41-
$controller = getcwd() . '/app/src/Controller/'.$controllerName.'.php';
42-
$base = getcwd() . '/app/src/Controller/';
43-
$namespace = 'Dappur\Controller';
44-
$controllerFileName = "";
45-
46-
if (file_exists($controller)) {
47-
throw new \InvalidArgumentException('That controller already exists.');
48-
}
39+
$dappur = CliUtils::isDappur();
40+
$containerBootstrap = getcwd() . '/app/bootstrap/controllers.php';
41+
$controller = getcwd() . '/app/src/Controller/'.$controllerName.'.php';
42+
$base = getcwd() . '/app/src/Controller/';
43+
$namespace = 'Dappur\Controller';
44+
$controllerFileName = "";
45+
46+
if (file_exists($controller)) {
47+
throw new \InvalidArgumentException('That controller already exists.');
48+
}
4949

50-
foreach ($separated as $sep) {
51-
if ($sep == end($separated)) {
52-
touch($controller);
53-
$controllerFileName = $sep;
54-
continue;
55-
}
56-
mkdir($base . "/$sep");
57-
$base = $base . "/$sep";
58-
$namespace = $namespace . "\\$sep";
50+
foreach ($separated as $sep) {
51+
if ($sep == end($separated)) {
52+
touch($controller);
53+
$controllerFileName = $sep;
54+
continue;
5955
}
60-
61-
$containerAppend = file_get_contents(__DIR__ . "/../../../../templates/controller-append.tpl");
62-
$containerAppend = str_replace("{{CONTROLLER_NAME_STRIPPED}}", str_replace("\\", "", $controllerName), $containerAppend);
63-
$containerAppend = str_replace("{{CONTROLLER_NAME}}", $controllerName, $containerAppend);
56+
mkdir($base . "/$sep");
57+
$base = $base . "/$sep";
58+
$namespace = $namespace . "\\$sep";
59+
}
60+
61+
$containerAppend = file_get_contents(__DIR__ . "/../../../../templates/controller-append.tpl");
62+
$containerAppend = str_replace("{{CONTROLLER_NAME_STRIPPED}}", str_replace("\\", "", $controllerName), $containerAppend);
63+
$containerAppend = str_replace("{{CONTROLLER_NAME}}", $controllerName, $containerAppend);
6464

65-
$append = file_put_contents($containerBootstrap, $containerAppend, FILE_APPEND | LOCK_EX);
65+
$append = file_put_contents($containerBootstrap, $containerAppend, FILE_APPEND | LOCK_EX);
6666

67-
$phpClass = new ClassModel();
68-
# Namespace
69-
$phpClass->setNamespace(new NamespaceModel($namespace));
67+
$phpClass = new ClassModel();
68+
# Namespace
69+
$phpClass->setNamespace(new NamespaceModel($namespace));
7070

71-
# Uses
72-
$phpClass->addUses(new UseClassModel('Dappur\Controller\Controller as Controller'));
73-
$phpClass->addUses(new UseClassModel('Psr\Http\Message\ServerRequestInterface as Request'));
74-
$phpClass->addUses(new UseClassModel('Psr\Http\Message\ResponseInterface as Response'));
71+
# Uses
72+
$phpClass->addUses(new UseClassModel('Dappur\Controller\Controller as Controller'));
73+
$phpClass->addUses(new UseClassModel('Psr\Http\Message\ServerRequestInterface as Request'));
74+
$phpClass->addUses(new UseClassModel('Psr\Http\Message\ResponseInterface as Response'));
7575

76-
#Class
77-
$name = new ClassNameModel($controllerFileName, 'Controller');
78-
$phpClass->setName($name);
76+
#Class
77+
$name = new ClassNameModel($controllerFileName, 'Controller');
78+
$phpClass->setName($name);
7979

80-
# Sample Method
81-
$defaultMethod = new MethodModel('sample', 'public');
82-
$defaultMethod->addArgument(new ArgumentModel('request', 'Request'));
83-
$defaultMethod->addArgument(new ArgumentModel('response', 'Response'));
84-
$defaultMethod->setBody('return $this->view->render($response, \'home.twig\');');
85-
$phpClass->addMethod($defaultMethod);
80+
# Sample Method
81+
$defaultMethod = new MethodModel('sample', 'public');
82+
$defaultMethod->addArgument(new ArgumentModel('request', 'Request'));
83+
$defaultMethod->addArgument(new ArgumentModel('response', 'Response'));
84+
$defaultMethod->setBody('return $this->view->render($response, \'home.twig\');');
85+
$phpClass->addMethod($defaultMethod);
8686

87-
# Render and write file
88-
$create = file_put_contents($controller, $phpClass->render());
87+
# Render and write file
88+
$create = file_put_contents($controller, $phpClass->render());
8989

90-
$output->writeln($controllerName . " controller successfully added.");
91-
}
92-
90+
$output->writeln($controllerName . " controller successfully added.");
9391
}
94-
95-
9692
}

src/Dapp/Console/Command/Middleware.php

+34-38
Original file line numberDiff line numberDiff line change
@@ -36,50 +36,46 @@ protected function execute(InputInterface $input, OutputInterface $output)
3636
}
3737
}
3838

39-
if (CliUtils::isDappur()) {
40-
$class = getcwd() . '/app/src/Middleware/'.$className.'.php';
41-
$base = getcwd() . '/app/src/Middleware/';
42-
$namespace = 'Dappur\Middleware';
43-
$classFileName = "";
44-
45-
if (file_exists($class)) {
46-
throw new \InvalidArgumentException('That middleware already exists.');
47-
}
39+
$dappur = CliUtils::isDappur();
40+
$class = getcwd() . '/app/src/Middleware/'.$className.'.php';
41+
$base = getcwd() . '/app/src/Middleware/';
42+
$namespace = 'Dappur\Middleware';
43+
$classFileName = "";
44+
45+
if (file_exists($class)) {
46+
throw new \InvalidArgumentException('That middleware already exists.');
47+
}
4848

49-
foreach ($separated as $sep) {
50-
if ($sep == end($separated)) {
51-
touch($class);
52-
$classFileName = $sep;
53-
continue;
54-
}
55-
mkdir($base . "/$sep");
56-
$base = $base . "/$sep";
57-
$namespace = $namespace . "\\$sep";
49+
foreach ($separated as $sep) {
50+
if ($sep == end($separated)) {
51+
touch($class);
52+
$classFileName = $sep;
53+
continue;
5854
}
55+
mkdir($base . "/$sep");
56+
$base = $base . "/$sep";
57+
$namespace = $namespace . "\\$sep";
58+
}
5959

60-
$phpClass = new ClassModel();
61-
# Namespace
62-
$phpClass->setNamespace(new NamespaceModel($namespace));
60+
$phpClass = new ClassModel();
61+
# Namespace
62+
$phpClass->setNamespace(new NamespaceModel($namespace));
6363

64-
#Class
65-
$name = new ClassNameModel($classFileName, 'Middleware');
66-
$phpClass->setName($name);
64+
#Class
65+
$name = new ClassNameModel($classFileName, 'Middleware');
66+
$phpClass->setName($name);
6767

68-
# Method
69-
$defaultMethod = new MethodModel('__invoke', 'public');
70-
$defaultMethod->addArgument(new ArgumentModel('request'));
71-
$defaultMethod->addArgument(new ArgumentModel('response'));
72-
$defaultMethod->addArgument(new ArgumentModel('next'));
73-
$defaultMethod->setBody('return $next($request, $response);');
74-
$phpClass->addMethod($defaultMethod);
68+
# Method
69+
$defaultMethod = new MethodModel('__invoke', 'public');
70+
$defaultMethod->addArgument(new ArgumentModel('request'));
71+
$defaultMethod->addArgument(new ArgumentModel('response'));
72+
$defaultMethod->addArgument(new ArgumentModel('next'));
73+
$defaultMethod->setBody('return $next($request, $response);');
74+
$phpClass->addMethod($defaultMethod);
7575

76-
# Render and write file
77-
$create = file_put_contents($class, $phpClass->render());
76+
# Render and write file
77+
$create = file_put_contents($class, $phpClass->render());
7878

79-
$output->writeln($className . " Middleware class successfully added.");
80-
}
81-
79+
$output->writeln($className . " Middleware class successfully added.");
8280
}
83-
84-
8581
}

src/Dapp/Console/Command/Server.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ protected function configure()
2121

2222
protected function execute(InputInterface $input, OutputInterface $output)
2323
{
24-
CliUtils::isDappur();
24+
$dappur = CliUtils::isDappur();
2525

2626
$port = $input->getArgument('port');
2727

src/Dapp/Console/Command/Theme.php

+12-11
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,21 @@ protected function configure()
2323
->addOption('download-only', null, InputOption::VALUE_OPTIONAL, 'Downloads the theme, but does not change it in the database.', null)
2424
->setHelp('Creates a new Dappur project');
2525

26-
$this->tempDir = realpath(__DIR__.'/../../../../storage/temp');
26+
$this->tempDir = realpath(__DIR__.'/../../../../storage/temp/themes');
2727
$this->themeTempFolder = uniqid();
2828
}
2929

3030

3131
protected function execute(InputInterface $input, OutputInterface $output)
3232
{
33+
// Database Connection
3334
$dappur = \Dappur\Dappurware\CliUtils::isDappur();
3435

3536
// options and arguments
3637
$theme = $input->getArgument('theme');
3738
$noInstall = $input->getParameterOption('--download-only');
3839

40+
// If no theme set, choose from official themes
3941
if (!$theme) {
4042
$helper = $this->getHelper('question');
4143
$question = new ChoiceQuestion(
@@ -59,30 +61,21 @@ protected function execute(InputInterface $input, OutputInterface $output)
5961
}
6062
}
6163

62-
64+
// Validate Theme
6365
$output->writeln('Validating Theme...');
6466
$themeJson = $this->validateTheme($theme, $this->themeTempFolder, $output);
6567
$themeType = $themeJson->type;
66-
67-
if (!$themeType == "frontend" && !$themeType == "dashboard") {
68-
shell_exec("rm -rf {$this->tempDir}/*");
69-
touch("{$this->tempDir}/.gitkeep");
70-
throw new \InvalidArgumentException('Invalid or no theme type detected.');
71-
}
72-
7368
$output->writeln($themeType . ' Theme Detected');
7469
$output->writeln('The `' . $themeJson->name . '` theme will be added to your project.');
7570

7671
// Install Frontend Theme
77-
7872
$install = shell_exec(
7973
"cp -r {$themeJson->directory} " . realpath(getcwd() . "/app/views/")
8074
);
8175

8276
if ($noInstall) {
8377
$output->writeln('The `' . $themeJson->name . '` theme has been installed, but not activated.');
8478
}
85-
8679

8780
if (!$noInstall) {
8881
$output->writeln('Activating `' . $themeJson->name . '` theme...');
@@ -114,16 +107,24 @@ public function validateTheme($themeUrl, $tempFolder)
114107
restore_error_handler();
115108

116109
if (!$jsonOutput) {
110+
shell_exec("rm -rf {$this->tempDir}/*");
117111
throw new \InvalidArgumentException('theme.json file not detected.');
118112
}
119113

120114
if (is_dir(getcwd() . '/app/views/' . $jsonOutput->name)) {
115+
shell_exec("rm -rf {$this->tempDir}/*");
121116
throw new \InvalidArgumentException('It appears this theme is already installed.');
122117
}
123118

119+
if (!$jsonOutput->type == "frontend" && !$jsonOutput->type == "dashboard") {
120+
shell_exec("rm -rf {$this->tempDir}/*");
121+
throw new \InvalidArgumentException('Invalid or no theme type detected.');
122+
}
123+
124124
$jsonOutput->directory = realpath($this->tempDir . '/' . $tempFolder . '/' . $jsonOutput->name);
125125

126126
if (!is_dir($jsonOutput->directory)) {
127+
shell_exec("rm -rf {$this->tempDir}/*");
127128
throw new \InvalidArgumentException('Theme folder not found.');
128129
}
129130

0 commit comments

Comments
 (0)