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;
{
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]);
}
$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]));
}