From f8c80048badb80e157922ea4700688af149f42ae Mon Sep 17 00:00:00 2001 From: glbrtchen Date: Sun, 10 Jul 2016 19:44:32 +0800 Subject: [PATCH 1/3] add Docker for Mac support --- dockerutils.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dockerutils.py b/dockerutils.py index c19d6d7..5759837 100644 --- a/dockerutils.py +++ b/dockerutils.py @@ -61,7 +61,9 @@ def isDockerRunningOnOSX(): (os.path.isfile('/usr/local/bin/boot2docker') and isBoot2DockerRunning()) or (os.path.isfile('/usr/local/bin/docker-machine') - and isDockerMachineRunning())) + and isDockerMachineRunning()) or + (os.path.isfile('/usr/local/bin/docker') + and isDockerNativeRunning())) def isBoot2DockerRunning(): @@ -91,6 +93,13 @@ def isDockerMachineRunning(): setEnvVariables() return True +def isDockerNativeRunning(): + docker_ping = "curl --unix-socket /var/run/docker.sock http://localhost/_ping" + status = os.popen(docker_ping).read().strip() + if (status == "OK"): + return True + return False + def isDockerInstalledOnLinux(): if shutil.which('docker') != None : return True From aa6e5d7eafa1d887d7ef46059cc4785881dcf979 Mon Sep 17 00:00:00 2001 From: glbrtchen Date: Sun, 10 Jul 2016 20:24:14 +0800 Subject: [PATCH 2/3] add CMake support for sublime-docker --- CMake in Docker Container.sublime-build | 11 ++++ DockerCMakeBuild.py | 69 +++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 CMake in Docker Container.sublime-build create mode 100644 DockerCMakeBuild.py diff --git a/CMake in Docker Container.sublime-build b/CMake in Docker Container.sublime-build new file mode 100644 index 0000000..cf39d6b --- /dev/null +++ b/CMake in Docker Container.sublime-build @@ -0,0 +1,11 @@ +{ + "target": "docker_cmake_build", + "type": "RUN", + "selector": "source.txt", + "docker_image": "ubuntu-devenv", + "docker_image_tag": "latest", + "docker_image_exe": "cmake", + + "variants": [] +} + diff --git a/DockerCMakeBuild.py b/DockerCMakeBuild.py new file mode 100644 index 0000000..99a69c8 --- /dev/null +++ b/DockerCMakeBuild.py @@ -0,0 +1,69 @@ +from . import dockerutils +import sublime, sublime_plugin +import os + +# Build Project using CMake +# 1. rm -rf build +# 2. mkdir build +# 3. cd build +# 4. cmake .. +# 5. make + +class DockerCmakeBuildCommand(sublime_plugin.WindowCommand): + + type = "RUN" + docker_image = "ubuntu-devenv" + docker_image_tag = "latest" # Value seems to be unused? + docker_image_exe = "cmake" + + def run(self, type="RUN", docker_image="ubuntu-devenv", docker_image_tag="latest", docker_image_exe="cmake", file_regex='UNSET'): + self.type = type + self.docker_image = docker_image + self.docker_image_tag = docker_image_tag + self.docker_image_exe = docker_image_exe + self.file_regex = file_regex + self.file_name = dockerutils.getFileName() + self.file_dir = dockerutils.getFileDir() + + + if not dockerutils.isDockerInstalled(): + dockerutils.isNotInstalledMessage() + elif not dockerutils.isDockerRunning(): + dockerutils.isNotRunningMessage() + elif dockerutils.isUnsupportedFileType(self.file_name): + sublime.status_message("Cannot " + type.lower() + " an unsupported file type") + else: + sublime.status_message("Start to execute CMake in Docker.") + self.executeFile() + + + def executeFile(self): + if self.type == "RUN": + opt_volume = " -v \"" + self.file_dir+"/\":/src" + opt_temporary = " -t" + image = " " + self.docker_image + ":" + self.docker_image_tag + docker_cmd = dockerutils.getCommand() + build_cmd = self.generateBuildCmd() + command = [docker_cmd + " run" + opt_volume + opt_temporary + ' ' + dockerutils.opt_cleanup + image + build_cmd] + dockerutils.logDockerCommand(command) + else: + self.errorMessage("Unknown command: " + self.type) + return + + dockerutils.getView().window().run_command("exec", { 'kill': True }) + dockerutils.getView().window().run_command("exec", { + 'shell': True, + 'cmd': command, + 'working_dir' : self.file_dir, + 'file_regex' : self.file_regex + }) + + + def generateBuildCmd(self): + cpp_check_list = ["gcc", "g++", "cpp", "c++"] + exec_cmd = "" + if any(map(lambda x: x in self.docker_image or x in self.docker_image_exe, cpp_check_list)): + exec_cmd = "./a.out;" + build_cmd = " " + self.docker_image_exe + " \"/src/" + self.file_name + "\"; " + build_cmd = " bash -c 'cd /src; " + build_cmd + exec_cmd + "'" + return build_cmd From c071906b7c4e8a5c60dfc6a56ee303ab58975ae2 Mon Sep 17 00:00:00 2001 From: glbrtchen Date: Sun, 10 Jul 2016 20:34:39 +0800 Subject: [PATCH 3/3] Revert "add CMake support for sublime-docker" This reverts commit aa6e5d7eafa1d887d7ef46059cc4785881dcf979. --- CMake in Docker Container.sublime-build | 11 ---- DockerCMakeBuild.py | 69 ------------------------- 2 files changed, 80 deletions(-) delete mode 100644 CMake in Docker Container.sublime-build delete mode 100644 DockerCMakeBuild.py diff --git a/CMake in Docker Container.sublime-build b/CMake in Docker Container.sublime-build deleted file mode 100644 index cf39d6b..0000000 --- a/CMake in Docker Container.sublime-build +++ /dev/null @@ -1,11 +0,0 @@ -{ - "target": "docker_cmake_build", - "type": "RUN", - "selector": "source.txt", - "docker_image": "ubuntu-devenv", - "docker_image_tag": "latest", - "docker_image_exe": "cmake", - - "variants": [] -} - diff --git a/DockerCMakeBuild.py b/DockerCMakeBuild.py deleted file mode 100644 index 99a69c8..0000000 --- a/DockerCMakeBuild.py +++ /dev/null @@ -1,69 +0,0 @@ -from . import dockerutils -import sublime, sublime_plugin -import os - -# Build Project using CMake -# 1. rm -rf build -# 2. mkdir build -# 3. cd build -# 4. cmake .. -# 5. make - -class DockerCmakeBuildCommand(sublime_plugin.WindowCommand): - - type = "RUN" - docker_image = "ubuntu-devenv" - docker_image_tag = "latest" # Value seems to be unused? - docker_image_exe = "cmake" - - def run(self, type="RUN", docker_image="ubuntu-devenv", docker_image_tag="latest", docker_image_exe="cmake", file_regex='UNSET'): - self.type = type - self.docker_image = docker_image - self.docker_image_tag = docker_image_tag - self.docker_image_exe = docker_image_exe - self.file_regex = file_regex - self.file_name = dockerutils.getFileName() - self.file_dir = dockerutils.getFileDir() - - - if not dockerutils.isDockerInstalled(): - dockerutils.isNotInstalledMessage() - elif not dockerutils.isDockerRunning(): - dockerutils.isNotRunningMessage() - elif dockerutils.isUnsupportedFileType(self.file_name): - sublime.status_message("Cannot " + type.lower() + " an unsupported file type") - else: - sublime.status_message("Start to execute CMake in Docker.") - self.executeFile() - - - def executeFile(self): - if self.type == "RUN": - opt_volume = " -v \"" + self.file_dir+"/\":/src" - opt_temporary = " -t" - image = " " + self.docker_image + ":" + self.docker_image_tag - docker_cmd = dockerutils.getCommand() - build_cmd = self.generateBuildCmd() - command = [docker_cmd + " run" + opt_volume + opt_temporary + ' ' + dockerutils.opt_cleanup + image + build_cmd] - dockerutils.logDockerCommand(command) - else: - self.errorMessage("Unknown command: " + self.type) - return - - dockerutils.getView().window().run_command("exec", { 'kill': True }) - dockerutils.getView().window().run_command("exec", { - 'shell': True, - 'cmd': command, - 'working_dir' : self.file_dir, - 'file_regex' : self.file_regex - }) - - - def generateBuildCmd(self): - cpp_check_list = ["gcc", "g++", "cpp", "c++"] - exec_cmd = "" - if any(map(lambda x: x in self.docker_image or x in self.docker_image_exe, cpp_check_list)): - exec_cmd = "./a.out;" - build_cmd = " " + self.docker_image_exe + " \"/src/" + self.file_name + "\"; " - build_cmd = " bash -c 'cd /src; " + build_cmd + exec_cmd + "'" - return build_cmd