|
@@ -2,27 +2,23 @@
|
|
|
|
|
|
namespace FD3;
|
|
namespace FD3;
|
|
|
|
|
|
|
|
+use FD3\Git;
|
|
|
|
+use PHPGit\Exception\GitException;
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Command\Command;
|
|
-use Symfony\Component\Console\Input\InputInterface;
|
|
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
|
|
+use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
|
|
|
|
-use FD3\Git;
|
|
|
|
-use PHPGit\Exception\GitException;
|
|
|
|
-
|
|
|
|
class GetSource extends Command
|
|
class GetSource extends Command
|
|
{
|
|
{
|
|
protected function configure()
|
|
protected function configure()
|
|
{
|
|
{
|
|
- $this
|
|
|
|
- ->setName('get:source')
|
|
|
|
-
|
|
|
|
- ->setDescription('Get the source using a ini file.')
|
|
|
|
-
|
|
|
|
- ->setHelp('This command allows you to fetch code based on the git.ini file configuration...')
|
|
|
|
-
|
|
|
|
- ->addArgument('ini_file', InputArgument::REQUIRED, 'The ini file from where to get the source code config.')
|
|
|
|
|
|
+ $this
|
|
|
|
+ ->setName('get:source')
|
|
|
|
+ ->setDescription('Get the source using a ini file.')
|
|
|
|
+ ->setHelp('This command allows you to fetch code based on the git.ini file configuration...')
|
|
|
|
+ ->addArgument('ini_file', InputArgument::REQUIRED, 'The ini file from where to get the source code config.')
|
|
->addOption('remote-name', null, InputOption::VALUE_REQUIRED, 'Rename the remote to this name.', "upstream")
|
|
->addOption('remote-name', null, InputOption::VALUE_REQUIRED, 'Rename the remote to this name.', "upstream")
|
|
->addOption('push', null, InputOption::VALUE_NONE, 'Push to the remote.')
|
|
->addOption('push', null, InputOption::VALUE_NONE, 'Push to the remote.')
|
|
->addOption('timeout', null, InputOption::VALUE_OPTIONAL, 'Git process timeout in seconds', 10)
|
|
->addOption('timeout', null, InputOption::VALUE_OPTIONAL, 'Git process timeout in seconds', 10)
|
|
@@ -31,19 +27,19 @@ class GetSource extends Command
|
|
|
|
|
|
protected function execute(InputInterface $input, OutputInterface $output)
|
|
protected function execute(InputInterface $input, OutputInterface $output)
|
|
{
|
|
{
|
|
- $file = $input->getArgument("ini_file");
|
|
|
|
-
|
|
|
|
- $realpath = realpath($file);
|
|
|
|
- $dirname = dirname($realpath);
|
|
|
|
- if(!chdir($dirname)){
|
|
|
|
- throw new \Exception("Can't change working directory to ".$dirname);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- $content = parse_ini_file($realpath, true);
|
|
|
|
- foreach($content as $sec => $conf){
|
|
|
|
- $git = new Git();
|
|
|
|
|
|
+ $file = $input->getArgument("ini_file");
|
|
|
|
+
|
|
|
|
+ $realpath = realpath($file);
|
|
|
|
+ $dirname = dirname($realpath);
|
|
|
|
+ if (!chdir($dirname)) {
|
|
|
|
+ throw new \Exception("Can't change working directory to " . $dirname);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $content = parse_ini_file($realpath, true);
|
|
|
|
+ foreach ($content as $sec => $conf) {
|
|
|
|
+ $git = new Git();
|
|
$git->setTimeout($input->getOption("timeout"));
|
|
$git->setTimeout($input->getOption("timeout"));
|
|
- $git_path = $dirname.'/'.$sec;
|
|
|
|
|
|
+ $git_path = $dirname . '/' . $sec;
|
|
|
|
|
|
$url = $conf["url"];
|
|
$url = $conf["url"];
|
|
// Verifico si tiene ssh como protocolo y si la url es de gogs
|
|
// Verifico si tiene ssh como protocolo y si la url es de gogs
|
|
@@ -52,17 +48,17 @@ class GetSource extends Command
|
|
$protocol = 'ssh://';
|
|
$protocol = 'ssh://';
|
|
$url = $protocol . $url;
|
|
$url = $protocol . $url;
|
|
}
|
|
}
|
|
- try{
|
|
|
|
|
|
+ try {
|
|
$output->writeln($url . " -> " . $git_path);
|
|
$output->writeln($url . " -> " . $git_path);
|
|
$git->clone($url, $git_path);
|
|
$git->clone($url, $git_path);
|
|
- }catch (GitException $e){
|
|
|
|
|
|
+ } catch (GitException $e) {
|
|
$git->init($git_path);
|
|
$git->init($git_path);
|
|
- }
|
|
|
|
- $git->setRepository($git_path);
|
|
|
|
|
|
+ }
|
|
|
|
+ $git->setRepository($git_path);
|
|
|
|
|
|
- try{
|
|
|
|
|
|
+ try {
|
|
$git->remote->rm($input->getOption("remote-name"));
|
|
$git->remote->rm($input->getOption("remote-name"));
|
|
- }catch (GitException $e){
|
|
|
|
|
|
+ } catch (GitException $e) {
|
|
}
|
|
}
|
|
$git->remote->add($input->getOption("remote-name"), $url);
|
|
$git->remote->add($input->getOption("remote-name"), $url);
|
|
try {
|
|
try {
|
|
@@ -78,10 +74,10 @@ class GetSource extends Command
|
|
$git->checkout($conf["branch"]);
|
|
$git->checkout($conf["branch"]);
|
|
}
|
|
}
|
|
$branches = $git->branch(array("all" => false, "remotes" => true));
|
|
$branches = $git->branch(array("all" => false, "remotes" => true));
|
|
-
|
|
|
|
|
|
+
|
|
if (isset($branches["remotes/" . $input->getOption("remote-name") . "/" . $conf["branch"]])) {
|
|
if (isset($branches["remotes/" . $input->getOption("remote-name") . "/" . $conf["branch"]])) {
|
|
$git->merge($input->getOption("remote-name") . "/" . $conf["branch"]);
|
|
$git->merge($input->getOption("remote-name") . "/" . $conf["branch"]);
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
$status = $git->status();
|
|
$status = $git->status();
|
|
|
|
|
|
@@ -96,7 +92,7 @@ class GetSource extends Command
|
|
$git->push($input->getOption("remote-name"), $tag, array('force' => true));
|
|
$git->push($input->getOption("remote-name"), $tag, array('force' => true));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|