diff options
author | axtloss <axtlos@getcryst.al> | 2023-05-25 22:06:02 +0200 |
---|---|---|
committer | axtloss <axtlos@getcryst.al> | 2023-05-25 22:06:02 +0200 |
commit | cd0df48723ca7c603cececc3c65003bf43b09d59 (patch) | |
tree | 6f39ce65f7897dce1dc7a8ab6f4179a5aa2f3617 /src/main/java/io/github/jshipit/ContainerManager.java | |
parent | 75bbdb15e6f90d4f690b839f6db0cedfb61045be (diff) | |
download | jshipit-cd0df48723ca7c603cececc3c65003bf43b09d59.tar.gz jshipit-cd0df48723ca7c603cececc3c65003bf43b09d59.tar.bz2 |
Add shell subcommand
Diffstat (limited to 'src/main/java/io/github/jshipit/ContainerManager.java')
-rw-r--r-- | src/main/java/io/github/jshipit/ContainerManager.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/main/java/io/github/jshipit/ContainerManager.java b/src/main/java/io/github/jshipit/ContainerManager.java index 8a3ecc7..c1d9b38 100644 --- a/src/main/java/io/github/jshipit/ContainerManager.java +++ b/src/main/java/io/github/jshipit/ContainerManager.java @@ -17,6 +17,8 @@ public class ContainerManager { private String containerImage; private String containerTag; private String containerApiRepo; + + private String containerCommand; private OCIDataStore dataStore; public ContainerManager(String containerName, String containerImage, String containerTag, String containerApiRepo, String containerRepo, OCIDataStore dataStore) { @@ -28,12 +30,13 @@ public class ContainerManager { this.dataStore = dataStore; } - public ContainerManager(String containerName, OCIDataStore dataStore) { + public ContainerManager(String containerName, String containerCommand, OCIDataStore dataStore) { this.containerName = containerName; this.containerImage = dataStore.getContainerImage(containerName); this.containerTag = dataStore.getContainerTag(containerName); this.containerApiRepo = dataStore.getContainerApiRepo(containerName); this.containerRepo = dataStore.getContainerRepo(containerName); + this.containerCommand = containerCommand; this.dataStore = dataStore; } @@ -74,7 +77,7 @@ public class ContainerManager { } - public void runCommand(String command) { + public void runCommand() { String containerDirectory = dataStore.getContainerPath(this.containerName); String dataStorePath = dataStore.getPath(); @@ -114,12 +117,12 @@ public class ContainerManager { bwrapCommand.add("--ro-bind "+containerDirectory+"/root / --chdir /"); bwrapCommand.add("--share-net"); bwrapCommand.add("--unshare-uts --hostname "+ (!hostname.isBlank() ? hostname : this.containerName+"-"+this.containerImage)); - bwrapCommand.add("/bin/sh -c "+cmd); + bwrapCommand.add("/bin/sh -c '"+(this.containerCommand != null ? this.containerCommand : cmd)+"'"); SysUtils sysUtils = new SysUtils(); String bwrapCMD = sysUtils.execInBwrap(bwrapCommand.toArray(new String[0]), false); String mountCMD = startContainer(true); - String CMD = "unshare --user --map-root-user --mount bash -c \""+mountCMD+";"+bwrapCMD+";"+command+"\""; // I am starting to realize that this project was not a good idea + String CMD = "unshare --user --map-root-user --mount bash -c \""+mountCMD+";"+bwrapCMD+"\""; // I am starting to realize that this project was not a good idea ProcessBuilder pb = new ProcessBuilder("bash", "-c", CMD); pb.inheritIO(); try { |