From: Vincent Vanwaelscappel Date: Fri, 21 Apr 2023 06:44:04 +0000 (+0200) Subject: wait #5876 @0.75 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=7a060069b30584870f6f2aeb32d90f08eafa857b;p=fluidbook-toolbox.git wait #5876 @0.75 --- diff --git a/app/Http/Controllers/Admin/Operations/Tools/GitReposCreate.php b/app/Http/Controllers/Admin/Operations/Tools/GitReposCreate.php index 22af142b1..01740dca5 100644 --- a/app/Http/Controllers/Admin/Operations/Tools/GitReposCreate.php +++ b/app/Http/Controllers/Admin/Operations/Tools/GitReposCreate.php @@ -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" -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])); }