diff options
author | Joseph Hunkeler <jhunkeler@users.noreply.github.com> | 2024-10-04 10:57:09 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-04 10:57:09 -0400 |
commit | 6e72330a3cc8d571b14f2234ed8fc2778b5e9b86 (patch) | |
tree | 53a131a9dc69b2da1eef2eebfd2a449fcf702ce0 /src | |
parent | 204f1965caa824dda632b0887e3aa6cb805b18d5 (diff) | |
parent | 485de019d37dd712ce62ea2193d461f701a70df1 (diff) | |
download | stasis-6e72330a3cc8d571b14f2234ed8fc2778b5e9b86.tar.gz |
Merge pull request #50 from jhunkeler/conda-get-active-environment
Add conda_get_active_environment() function
Diffstat (limited to 'src')
-rw-r--r-- | src/conda.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/conda.c b/src/conda.c index 37a7793..43b9001 100644 --- a/src/conda.c +++ b/src/conda.c @@ -437,6 +437,39 @@ int conda_env_export(char *name, char *output_dir, char *output_filename) { return conda_exec(env_command); } +char *conda_get_active_environment() { + const char *name = getenv("CONDA_DEFAULT_ENV"); + if (!name) { + return NULL; + } + + char *result = NULL; + result = strdup(name); + if (!result) { + return NULL; + } + + return result; +} + +int conda_provides(const char *spec) { + struct Process proc; + memset(&proc, 0, sizeof(proc)); + strcpy(proc.f_stdout, "/dev/null"); + strcpy(proc.f_stderr, "/dev/null"); + + // It's worth noting the departure from using conda_exec() here: + // conda_exec() expects the program output to be visible to the user. + // For this operation we only need the exit value. + char cmd[PATH_MAX] = {0}; + snprintf(cmd, sizeof(cmd) - 1, "mamba search --use-index-cache %s", spec); + if (shell(&proc, cmd) < 0) { + fprintf(stderr, "shell: %s", strerror(errno)); + return -1; + } + return proc.returncode == 0; +} + int conda_index(const char *path) { char command[PATH_MAX]; sprintf(command, "index %s", path); |