Pennebaker / craft-architect

A plugin for importing and exporting content models from Craft 3/4 using JSON.
MIT License
72 stars 6 forks source link

Update GlobalSets via cli #43

Closed joepagan closed 2 years ago

joepagan commented 4 years ago

What changes made

Why

GlobalSets cannot be updated via the cli

Concerns

I am concerned about adding continue here as I am not sure if there is anything necessary further down in the method that this could skip. Previously, without this continue, the method could reach the bottom, and in turn running both update and save methods for a processor. This would result in console errors because of the 2nd save running, even though the update was successful along the lines of:

home already exists

In addition, not sure sure how to best prep your $errors variable, it seems different in a couple of places. Tried to setup the following:

        if ($globalSet === NULL) {
            $errors = [
                'type' => [
                    Architect::t('Could not get GlobalSet: '. $item['handle']),
                ]
            ];
            return [null, $errors];
        }

Though with this I get the following response:

Error:
-
PHP Notice 'yii\base\ErrorException' with message 'Undefined offset: 0'

in /var/www/craft-architect/src/console/controllers/ImportController.php:109

Stack trace:
#0 /var/www/site/craft/vendor/yiisoft/yii2/base/InlineAction.php(57): pennebaker\architect\console\controllers\ImportController->actionUpdate()
#1 /var/www/site/craft/vendor/yiisoft/yii2/base/InlineAction.php(57): ::call_user_func_array:{/var/www/site/craft/vendor/yiisoft/yii2/base/InlineAction.php:57}()
#2 /var/www/site/craft/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams()
#3 /var/www/site/craft/vendor/yiisoft/yii2/console/Controller.php(148): pennebaker\architect\console\controllers\ImportController->runAction()
#4 /var/www/site/craft/vendor/yiisoft/yii2/base/Module.php(528): pennebaker\architect\console\controllers\ImportController->runAction()
#5 /var/www/site/craft/vendor/yiisoft/yii2/console/Application.php(180): craft\console\Application->runAction()
#6 /var/www/site/craft/vendor/craftcms/cms/src/console/Application.php(93): craft\console\Application->runAction()
#7 /var/www/site/craft/vendor/yiisoft/yii2/console/Application.php(147): craft\console\Application->runAction()
#8 /var/www/site/craft/vendor/yiisoft/yii2/base/Application.php(386): craft\console\Application->handleRequest()
#9 /var/www/site/craft/craft(22): craft\console\Application->run()

Can you suggest how this could be better?

Testing

/var/www/site/update.json:

{
  "globalSets": [
        {
            "name": "Company1",
            "handle": "company",
            "fieldLayout": {
                "Company": [
                    "companyName",
                    "companyDescription",
                ]
            }
        }
    ]
}

Run with:

./var/www/site/craft/craft architect/import/update /var/www/site/update.json