]> _ Git - fluidbook-toolbox.git/commitdiff
wait #5876 @0.75
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 21 Apr 2023 06:44:04 +0000 (08:44 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 21 Apr 2023 06:44:04 +0000 (08:44 +0200)
app/Http/Controllers/Admin/Operations/Tools/GitReposCreate.php

index 22af142b1ce12741e82c4a52fec3943d42045581..01740dca57838d2258373e0e0f42bccc7bd528da 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace App\Http\Controllers\Admin\Operations\Tools;
 
+use App\Notifications\ToolboxNotification;
+use Cubist\Backpack\Magic\Fields\Checkbox;
 use Cubist\Backpack\Magic\Form;
 use Cubist\Util\CommandLine\Git;
 use Cubist\Util\Text;
@@ -12,13 +14,17 @@ trait GitReposCreate
 {
     use BaseTool;
 
+    protected static $_PREFIX = 'git@git.cubedesigners.com:';
+    protected static $_REDMINEPREFIX = '/home/git/repositories/';
+
     public function gitreposcreate()
     {
         $form = new Form(backpack_url('tools/dogitreposcreate'));
         $form->setTitle(__('Créer un répertoire GIT'));
         $form->setSubmitLabel(__('Créer'));
         $form->setSubmitIcon('la-git');
-        $form->addField('repos', \Cubist\Backpack\Magic\Fields\Text::class, __('Nom du répertoire'), ['prefix' => 'git@git.cubedesigners.com:', 'suffix' => '.git']);
+        $form->addField('repos', \Cubist\Backpack\Magic\Fields\Text::class, __('Nom du répertoire'), ['prefix' => self::$_PREFIX, 'suffix' => '.git']);
+        $form->addField('alldevs', Checkbox::class, __('Acessible à tous les développeurs'), ['default' => true]);
 
         return view('tools.form', ['form' => $form]);
     }
@@ -31,16 +37,29 @@ trait GitReposCreate
         $res = ['Add ' . $repos];
         if (!file_exists($gitolite) && !is_dir($gitolite)) {
             $storage = protected_path();
-            $res[] = Git::executeCommand($storage, 'clone git@git.cubedesigners.com:gitolite-admin.git');
+            $res[] = Git::executeCommand($storage, 'clone ' . self::$_PREFIX . 'gitolite-admin.git');
         }
         $res = $res + Git::executeCommands($gitolite, ['stash', 'pull']);
 
-        $projectsConf = $gitolite . '/conf/projects.conf';
-        $projects = trim(file_get_contents($projectsConf));
-        $projects .= "\n@allrepos = $repos\n";
-        file_put_contents($projectsConf, $projects);
+        $files = ['projects' => '@allrepos'];
+
+        if ($request->get('alldevs', true)) {
+            $files['front'] = '@frontprojects';
+        }
+
+        foreach ($files as $file => $varname) {
+            $projectsConf = $gitolite . '/conf/' . $file . '.conf';
+            $projects = trim(file_get_contents($projectsConf));
+            $projects .= "\n$varname = $repos\n";
+            file_put_contents($projectsConf, $projects);
+        }
+
+        $url = self::$_PREFIX . $repos . '.git';
+
         $res = array_merge($res, Git::executeCommands($gitolite, ['commit --author="Toolbox<toolbox@fluidbook.com>" -a -m "Added ' . $repos . ' from Toolbox"', 'push -u origin master']));
 
+        backpack_user()->notify(new ToolboxNotification(__('Répertoire git :name crée', ['name' => $repos]), __('Le répertoire git :name a été crée et est disponible à l\'adresse :url.', ['name' => $repos, 'url' => "`" . $url . "`"]) . "\n" . __('Le chemin pour redmine est :redminepath', ['redminepath', '`' . self::$_REDMINEPREFIX . $repos . '.git`']), [], true));
+
         Log::debug(implode("\n", $res));
         return $this->_success(__('Le répertoire :repos a été crée', ['repos' => $repos]));
     }