www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Calling executable generated by dub with sudo

reply Selim Ozel <sozel wpi.edu> writes:
Let's say I build my package using dub run from an Ubuntu 
terminal. How can I add sudo as the executable is being run? I 
tried adding preRunCommands to my dub.sdl as described in [1] but 
that just runs sudo and terminal throws an error.

Best,
Selim

[1] https://dub.pm/package-format-sdl
Dec 07 2020
next sibling parent Paul Backus <snarwin gmail.com> writes:
On Monday, 7 December 2020 at 20:34:36 UTC, Selim Ozel wrote:
 Let's say I build my package using dub run from an Ubuntu 
 terminal. How can I add sudo as the executable is being run? I 
 tried adding preRunCommands to my dub.sdl as described in [1] 
 but that just runs sudo and terminal throws an error.

 Best,
 Selim

 [1] https://dub.pm/package-format-sdl
Something like this, I guess: import core.sys.posix.unistd: getuid; import std.process: execv; void main(string[] args) { if (getuid() != 0) { execv("sudo", args); return 1; // failed to exec } // The rest of your code goes here }
Dec 07 2020
prev sibling parent Selim Ozel <sozel wpi.edu> writes:
On Monday, 7 December 2020 at 20:34:36 UTC, Selim Ozel wrote:
 Let's say I build my package using dub run from an Ubuntu 
 terminal. How can I add sudo as the executable is being run? I 
 tried adding preRunCommands to my dub.sdl as described in [1] 
 but that just runs sudo and terminal throws an error.

 Best,
 Selim

 [1] https://dub.pm/package-format-sdl
My solution has been slightly different. I use postBuildCommands and use dub build package:example_backend at my terminal instead of dub run package:example_backend. subPackage { name "example_backend" sourcePaths "source/example_backend" "lib" importPaths "lib" targetName "example_backend" targetType "executable" dependency "mysql-native" version="~>2.2.2" postBuildCommands "sudo ./example_backend" } Best, Selim
Dec 08 2020