Hello!
I think it would be helpful to check for any existing environment variables for the "Run" scheme.
Each time I include a new package into my project and run swift package generate-xcodeproj
I have to manually go in and add my env vars again.
The exact command I run is actually:
swift package -Xlinker -L/usr/local/lib generate-xcodeproj
This is so I can use MySQL, and I have my database connection details in env vars.
Thanks for reading. I look forward to hearing back!
Jared Anderton
1 Like
Yes, this sucks, but as a workaround you can write scripts that call swift package generate-xcodeproj
and then run some other code that sets the environment variables, e.g. with Python
import xml.etree.ElementTree as ETree
file = "MyProject.xcodeproj/xcshareddata/xcschemes/MyTarget.xcscheme"
tree = ETree.parse(file)
env_var_section = ETree.SubElement(tree.getroot().find("LaunchAction"), "EnvironmentVariables")
my_env_var_setting_1 = ETree.SubElement(env_var_section, "EnvironmentVariable")
my_env_var_setting_1.attrib["key"] = "MY_ENV_VAR_1"
my_env_var_setting_1.attrib["value"] = "true"
my_env_var_setting_1.attrib["isEnabled"] = "YES"
my_env_var_setting_2 = ETree.SubElement(env_var_section, "EnvironmentVariable")
my_env_var_setting_2.attrib["key"] = "MY_ENV_VAR_2"
my_env_var_setting_2.attrib["value"] = "500"
my_env_var_setting_2.attrib["isEnabled"] = "YES"
tree.write(file)
Alternatively, you might instead store your configuration in files (those don't need to be committed, if they contain sensitive data), and use something like Configuration or DotEnv . This is probably a cleaner long-term solution (though I agree that it would be nice if the script didn't overwrite existing environment variables...).
1 Like
Hi Jared,
I ran into the same issue a few months ago, some good alternative workaround suggestions can be found on this thread:
Hi all,
First forum post so please go easy if there's an obvious answer here! I'm currently about a week into building a first Server Side Swift app and have split out a lot of Swift code from an iOS app into reusable modules for Client / Server usage (across macOS + Linux) and so far the experience has been
However, now the code is split out and the server app is in active dev using Xcode one issue I've come across using the SPM is the following:
For Linux testing…