From 3ae773129ea867a371d698874928a14bd99f9d09 Mon Sep 17 00:00:00 2001 From: delchev Date: Tue, 17 Jul 2018 15:08:22 +0300 Subject: [PATCH] Fixed: #302 - Run On Feature --- .../src/main/resources/ide-git/git/git.js | 23 +++++++++++++++++-- .../src/main/resources/ide-git/index.html | 23 +++++++++++++++++++ .../src/main/resources/ide-git/project.json | 1 + .../core/git/command/CloneCommand.java | 20 +++++++++++++++- .../service/PublisherCoreService.java | 2 +- 5 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 ide/ui/ide-git/src/main/resources/ide-git/project.json diff --git a/ide/ui/ide-git/src/main/resources/ide-git/git/git.js b/ide/ui/ide-git/src/main/resources/ide-git/git/git.js index f3e110e23bc..c9318c04ed8 100644 --- a/ide/ui/ide-git/src/main/resources/ide-git/git/git.js +++ b/ide/ui/ide-git/src/main/resources/ide-git/git/git.js @@ -456,7 +456,10 @@ angular.module('workspace', ['workspace.config', 'ngAnimate', 'ngSanitize', 'ui. announceFileSelected: announceFileSelected, announceFileCreated: announceFileCreated, announceFileOpen: announceFileOpen, - announcePull: announcePull + announcePull: announcePull, + on: function(evt, cb){ + messageHub.subscribe(cb, evt); + } }; }]) .factory('$treeConfig', [function(){ @@ -543,7 +546,7 @@ angular.module('workspace', ['workspace.config', 'ngAnimate', 'ngSanitize', 'ui. .factory('workspaceTreeAdapter', ['$treeConfig', 'workspaceService', 'gitService', '$messageHub', function($treeConfig, WorkspaceService, GitService, $messageHub){ return new WorkspaceTreeAdapter($treeConfig, WorkspaceService, GitService, $messageHub); }]) -.controller('WorkspaceController', ['workspaceService', 'workspaceTreeAdapter', 'gitService', function (workspaceService, workspaceTreeAdapter, gitService) { +.controller('WorkspaceController', ['workspaceService', 'workspaceTreeAdapter', 'gitService', '$messageHub', function (workspaceService, workspaceTreeAdapter, gitService, $messageHub) { this.wsTree; this.workspaces; @@ -604,4 +607,20 @@ angular.module('workspace', ['workspace.config', 'ngAnimate', 'ngSanitize', 'ui. this.wsTree.refresh(); }; + $messageHub.on('git.repository.run', function(msg){ + gitService.cloneProject(this.wsTree, this.selectedWs, msg.data.repository, msg.data.username, msg.data.password); + if (msg.data.uri) { + run(); + } + + function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + + async function run() { + await sleep(2000); + window.open(msg.data.uri, '_blank'); + } + }.bind(this)); + }]); diff --git a/ide/ui/ide-git/src/main/resources/ide-git/index.html b/ide/ui/ide-git/src/main/resources/ide-git/index.html index 70258966c71..5cfca49fb32 100644 --- a/ide/ui/ide-git/src/main/resources/ide-git/index.html +++ b/ide/ui/ide-git/src/main/resources/ide-git/index.html @@ -75,6 +75,29 @@ } } }; + + var getParameterByName = function (name) { + name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); + var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), + results = regex.exec(location.search); + return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); + }; + + var messageHub = new FramesMessageHub(); + var send = function(evtName, data, absolute){ + messageHub.post({data: data}, (absolute ? '' : 'git.') + evtName); + }; + var run = function() { + send("repository.run", metadata, false); + } + var metadata = {}; + metadata.repository = getParameterByName("repository"); + metadata.username = getParameterByName("username"); + metadata.password = getParameterByName("password"); + metadata.uri = getParameterByName("uri"); + if (metadata.repository) { + window.setTimeout(run, 2000); + } }]); diff --git a/ide/ui/ide-git/src/main/resources/ide-git/project.json b/ide/ui/ide-git/src/main/resources/ide-git/project.json new file mode 100644 index 00000000000..83a53954ece --- /dev/null +++ b/ide/ui/ide-git/src/main/resources/ide-git/project.json @@ -0,0 +1 @@ +{"guid":"ide-git","repository":{"type":"git","branch":"master","url":"https://github.com/dirigiblelabs/ide-git.git"}} \ No newline at end of file diff --git a/modules/core/core-git/src/main/java/org/eclipse/dirigible/core/git/command/CloneCommand.java b/modules/core/core-git/src/main/java/org/eclipse/dirigible/core/git/command/CloneCommand.java index 976c4961ab0..136a458b673 100644 --- a/modules/core/core-git/src/main/java/org/eclipse/dirigible/core/git/command/CloneCommand.java +++ b/modules/core/core-git/src/main/java/org/eclipse/dirigible/core/git/command/CloneCommand.java @@ -30,9 +30,11 @@ import org.eclipse.dirigible.core.git.utils.GitProjectProperties; import org.eclipse.dirigible.core.publisher.api.PublisherException; import org.eclipse.dirigible.core.publisher.service.PublisherCoreService; +import org.eclipse.dirigible.core.publisher.synchronizer.PublisherSynchronizer; import org.eclipse.dirigible.core.workspace.api.IProject; import org.eclipse.dirigible.core.workspace.api.IWorkspace; import org.eclipse.dirigible.core.workspace.service.WorkspacesCoreService; +import org.eclipse.dirigible.repository.api.IRepositoryStructure; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.InvalidRemoteException; import org.eclipse.jgit.api.errors.TransportException; @@ -271,7 +273,8 @@ protected void publishProjects(IWorkspace workspace, Set clonedProjects) for (IProject project : projects) { if (project.getName().equals(projectName)) { try { - publisherCoreService.createPublishRequest(workspace.getName(), projectName); + publisherCoreService.createPublishRequest(generateWorkspacePath(workspace.getName()), projectName); + PublisherSynchronizer.forceSynchronization(); logger.info(String.format("Project [%s] has been published", project.getName())); } catch (PublisherException e) { logger.error(String.format("An error occurred while publishing the cloned project [%s]", project.getName()), e); @@ -282,5 +285,20 @@ protected void publishProjects(IWorkspace workspace, Set clonedProjects) } } } + + /** + * Generate workspace path. + * + * @param user + * the user + * @param workspace + * the workspace + * @return the string builder + */ + private String generateWorkspacePath(String workspace) { + StringBuilder relativePath = new StringBuilder(IRepositoryStructure.PATH_USERS).append(IRepositoryStructure.SEPARATOR).append(UserFacade.getName()) + .append(IRepositoryStructure.SEPARATOR).append(workspace); + return relativePath.toString(); + } } diff --git a/modules/core/core-publisher/src/main/java/org/eclipse/dirigible/core/publisher/service/PublisherCoreService.java b/modules/core/core-publisher/src/main/java/org/eclipse/dirigible/core/publisher/service/PublisherCoreService.java index c7298bf59f6..b5822d3f040 100644 --- a/modules/core/core-publisher/src/main/java/org/eclipse/dirigible/core/publisher/service/PublisherCoreService.java +++ b/modules/core/core-publisher/src/main/java/org/eclipse/dirigible/core/publisher/service/PublisherCoreService.java @@ -87,7 +87,7 @@ public PublishRequestDefinition createPublishRequest(String workspace, String pa */ @Override public PublishRequestDefinition createPublishRequest(String workspace, String path) throws PublisherException { - return createPublishRequest(workspace, path, IRepositoryStructure.PATH_REGISTRY); + return createPublishRequest(workspace, path, IRepositoryStructure.PATH_REGISTRY_PUBLIC); } /*