|
|
@ -13,6 +13,7 @@ import org.eclipse.jgit.api.Git; |
|
|
|
import org.eclipse.jgit.api.PullCommand; |
|
|
|
import org.eclipse.jgit.api.PullCommand; |
|
|
|
import org.eclipse.jgit.api.errors.GitAPIException; |
|
|
|
import org.eclipse.jgit.api.errors.GitAPIException; |
|
|
|
import org.eclipse.jgit.api.errors.InvalidRemoteException; |
|
|
|
import org.eclipse.jgit.api.errors.InvalidRemoteException; |
|
|
|
|
|
|
|
import org.eclipse.jgit.api.errors.NoHeadException; |
|
|
|
import org.eclipse.jgit.api.errors.TransportException; |
|
|
|
import org.eclipse.jgit.api.errors.TransportException; |
|
|
|
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.core.exc.StreamReadException; |
|
|
|
import com.fasterxml.jackson.core.exc.StreamReadException; |
|
|
@ -44,9 +45,35 @@ public class GitListener { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Метод запускает бесконечный цикл проверки обновлений в репозитарии. |
|
|
|
* Метод запускает бесконечный цикл проверки обновлений в репозитарии. |
|
|
|
|
|
|
|
* @throws IOException |
|
|
|
|
|
|
|
* @throws GitAPIException |
|
|
|
|
|
|
|
* @throws NoHeadException |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public void live(){ |
|
|
|
public void live(Git git) throws NoHeadException, GitAPIException, IOException{ |
|
|
|
//TODO live()
|
|
|
|
while(true){ |
|
|
|
|
|
|
|
Boolean isChanged = GitServiceFace.isChenged(git); |
|
|
|
|
|
|
|
//если удаленная версия отличается от локальной, обновляем локальный репозитарий
|
|
|
|
|
|
|
|
if (isChanged){ |
|
|
|
|
|
|
|
//забираем обновления с удаленного репозитария
|
|
|
|
|
|
|
|
System.out.println("Забираем обновления с удаленного репозитария ..."); |
|
|
|
|
|
|
|
CheckoutCommand checkout = git.checkout(); |
|
|
|
|
|
|
|
checkout.setName("master"); |
|
|
|
|
|
|
|
checkout.call(); |
|
|
|
|
|
|
|
PullCommand pullCmd = git.pull(); |
|
|
|
|
|
|
|
pullCmd.call(); |
|
|
|
|
|
|
|
git.close(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isChanged){ |
|
|
|
|
|
|
|
//скачиваем и извлекаем архив репозитория
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
NetService.download(opt.getZipLink(), opt.getDownloadPath()); |
|
|
|
|
|
|
|
extract(); |
|
|
|
|
|
|
|
} catch (IOException e) { |
|
|
|
|
|
|
|
System.out.println(e.getMessage()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -66,16 +93,17 @@ public class GitListener { |
|
|
|
public Options getOpt() { |
|
|
|
public Options getOpt() { |
|
|
|
return opt; |
|
|
|
return opt; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* распаковка архива |
|
|
|
* распаковка архива |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public void extract()throws IOException{ |
|
|
|
public void extract()throws IOException{ |
|
|
|
//считываем настройки извлечения
|
|
|
|
System.out.println("Распаковка *.zip архива ... "); |
|
|
|
try (ZipFile file = new ZipFile(opt.getZipPath())){ |
|
|
|
try (ZipFile file = new ZipFile(opt.getZipPath())){ |
|
|
|
Enumeration<? extends ZipEntry> zipEntries = file.entries(); |
|
|
|
Enumeration<? extends ZipEntry> zipEntries = file.entries(); |
|
|
|
while (zipEntries.hasMoreElements()){ |
|
|
|
while (zipEntries.hasMoreElements()){ |
|
|
|
ZipEntry zipEntry = zipEntries.nextElement(); |
|
|
|
ZipEntry zipEntry = zipEntries.nextElement(); |
|
|
|
|
|
|
|
System.out.println("... " + zipEntry.getName() + " ..."); |
|
|
|
File newFile = new File(opt.getUnzipPath(), zipEntry.getName()); |
|
|
|
File newFile = new File(opt.getUnzipPath(), zipEntry.getName()); |
|
|
|
newFile.getParentFile().mkdirs(); |
|
|
|
newFile.getParentFile().mkdirs(); |
|
|
|
if (!zipEntry.isDirectory()){ |
|
|
|
if (!zipEntry.isDirectory()){ |
|
|
@ -88,6 +116,8 @@ public class GitListener { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
System.out.println("Файлы размещены в директории: " + opt.getUnzipPath()); |
|
|
|
|
|
|
|
System.out.println("Распаковка архива завершена."); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -99,7 +129,7 @@ public class GitListener { |
|
|
|
/** |
|
|
|
/** |
|
|
|
* инициализируем git: открываем существующий репозиратий или клонируем новый с удаленного репозитария |
|
|
|
* инициализируем git: открываем существующий репозиратий или клонируем новый с удаленного репозитария |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
Boolean isRepoExists = false; |
|
|
|
Boolean isRepoExists = true; |
|
|
|
if(isRepoExists){ |
|
|
|
if(isRepoExists){ |
|
|
|
//открываем существующий репозиторий
|
|
|
|
//открываем существующий репозиторий
|
|
|
|
git = GitServiceFace.open(ear.opt.getGitLocalPath()); |
|
|
|
git = GitServiceFace.open(ear.opt.getGitLocalPath()); |
|
|
@ -107,28 +137,8 @@ public class GitListener { |
|
|
|
//клонируем репозитарий
|
|
|
|
//клонируем репозитарий
|
|
|
|
git = GitServiceFace.copy(ear.getOpt().getGitLink(), ear.getOpt().getGitLocalPath()); |
|
|
|
git = GitServiceFace.copy(ear.getOpt().getGitLink(), ear.getOpt().getGitLocalPath()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
ear.live(git); |
|
|
|
|
|
|
|
|
|
|
|
Boolean isChanged = GitServiceFace.isChenged(git); |
|
|
|
|
|
|
|
//если удаленная версия отличается от локальной, обновляем локальный репозитарий
|
|
|
|
|
|
|
|
if (isChanged){ |
|
|
|
|
|
|
|
//забираем обновления с удаленного репозитария
|
|
|
|
|
|
|
|
System.out.println("забираем обновления с удаленного репозитария ..."); |
|
|
|
|
|
|
|
CheckoutCommand checkout = git.checkout(); |
|
|
|
|
|
|
|
checkout.setName("master"); |
|
|
|
|
|
|
|
checkout.call(); |
|
|
|
|
|
|
|
PullCommand pullCmd = git.pull(); |
|
|
|
|
|
|
|
pullCmd.call(); |
|
|
|
|
|
|
|
git.close(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isChanged){ |
|
|
|
|
|
|
|
//скачиваем и извлекаем архив репозитория
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
NetService.download(ear.opt.getZipLink(), ear.opt.getDownloadPath()); |
|
|
|
|
|
|
|
ear.extract(); |
|
|
|
|
|
|
|
} catch (IOException e) { |
|
|
|
|
|
|
|
System.out.println(e.getMessage()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|