winetricks support
This commit is contained in:
		@@ -1,3 +1,4 @@
 | 
			
		||||
launch launch_command Launch a program in WINE.
 | 
			
		||||
winecfg launch_winecfg Launch winecfg.
 | 
			
		||||
regedit launch_regedit Launch regedit.
 | 
			
		||||
winetricks winetricks Launch winetricks.
 | 
			
		||||
 
 | 
			
		||||
@@ -15,10 +15,9 @@ using namespace cellar;
 | 
			
		||||
void cellar::launch::launch_program(vector<string> args) {
 | 
			
		||||
    vector<string> wineargs = args;
 | 
			
		||||
    wineargs[0] = "wine";
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    string winelaunch = boost::algorithm::join(wineargs, " ");
 | 
			
		||||
    auto wine = subprocess::Popen(winelaunch);
 | 
			
		||||
    wine.wait();
 | 
			
		||||
    launch::popen(winelaunch);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void cellar::launch::launch_command(int argc, vector<string> args) {
 | 
			
		||||
@@ -28,3 +27,9 @@ void cellar::launch::launch_command(int argc, vector<string> args) {
 | 
			
		||||
    }
 | 
			
		||||
    launch::launch_program(args);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// BULLSHIT: subprocess.hpp throws linker errors if included in multiple files
 | 
			
		||||
void cellar::launch::popen(string argv) {
 | 
			
		||||
    auto wine = subprocess::Popen(argv);
 | 
			
		||||
    wine.wait();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										39
									
								
								src/launch/winetricks.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/launch/winetricks.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
#include <boost/algorithm/string/join.hpp>
 | 
			
		||||
// linker claims the one time in launch.cpp was enough, we'll believe it
 | 
			
		||||
//#include "subprocess.hpp"
 | 
			
		||||
 | 
			
		||||
#include "bottles.hpp"
 | 
			
		||||
#include "cellar.hpp"
 | 
			
		||||
#include "launch.hpp"
 | 
			
		||||
#include "internal/launch.hpp"
 | 
			
		||||
#include "output.hpp"
 | 
			
		||||
 | 
			
		||||
using namespace std;
 | 
			
		||||
using namespace cellar;
 | 
			
		||||
 | 
			
		||||
void cellar::launch::winetricks(int argc, vector<string> argv) {
 | 
			
		||||
    if (argc == 1) {
 | 
			
		||||
        output::error("");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    auto winetricks_argv = argv;
 | 
			
		||||
    winetricks_argv[0] = "winetricks";
 | 
			
		||||
    string winetricks_str = boost::algorithm::join(winetricks_argv, " ");
 | 
			
		||||
    //output::statement(winetricks_str);
 | 
			
		||||
    launch::popen(winetricks_str);
 | 
			
		||||
 | 
			
		||||
    if (cellar::active_bottle.config.find("winetricks") == cellar::active_bottle.config.end()) {
 | 
			
		||||
        cellar::active_bottle.config.emplace("winetricks", vector<string>());
 | 
			
		||||
    }
 | 
			
		||||
    for (string winetrick : winetricks_argv) {
 | 
			
		||||
        if (winetrick == "winetricks") { continue; }
 | 
			
		||||
        else if (winetrick.substr(0,1) == "-") { continue; } // opts don't get saved
 | 
			
		||||
        else { cellar::active_bottle.config["winetricks"].push_back(winetrick); }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    cellar::active_bottle.save_config();
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user