From eb8924ee72edfbab0a2fe95e99966dce8406a5c9 Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Thu, 10 Jan 2019 14:50:24 +0100
Subject: [PATCH] [bootstrap] Add option to use local channel

This allows to test bootstrapping the environment with new packages
without the need to first have them integrated in bob.conda.
---
 bob/devtools/bootstrap.py         | 9 ++++++---
 bob/devtools/scripts/bootstrap.py | 6 ++++--
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/bob/devtools/bootstrap.py b/bob/devtools/bootstrap.py
index 21436df0..8b38aced 100644
--- a/bob/devtools/bootstrap.py
+++ b/bob/devtools/bootstrap.py
@@ -80,7 +80,7 @@ def get_env_directory(conda, name):
   return None
 
 
-def conda_create(conda, name, overwrite, condarc, packages, dry_run):
+def conda_create(conda, name, overwrite, condarc, packages, dry_run, use_local):
 
   specs = []
   for k in packages:
@@ -104,9 +104,12 @@ def conda_create(conda, name, overwrite, condarc, packages, dry_run):
       raise RuntimeError('environment `%s\' exists in `%s\' - use '
                          '--overwrite to overwrite' % (name, envdir))
 
-  cmd = [conda, 'create', '--yes', '--name', name] + sorted(specs)
+  cmd = [conda, 'create', '--yes', '--name', name]
   if dry_run:
-    cmd.insert(2, '--dry-run')
+    cmd.append('--dry-run')
+  if use_local:
+     cmd.append('--use-local')
+  cmd.extend(sorted(specs))
   logger.debug('$ ' + ' '.join(cmd))
   status = subprocess.call(cmd)
   if status != 0:
diff --git a/bob/devtools/scripts/bootstrap.py b/bob/devtools/scripts/bootstrap.py
index 1f5400c5..07d9f144 100644
--- a/bob/devtools/scripts/bootstrap.py
+++ b/bob/devtools/scripts/bootstrap.py
@@ -76,10 +76,12 @@ Examples:
     help='Only goes through the actions, but does not execute them ' \
         '(combine with the verbosity flags - e.g. ``-vvv``) to enable ' \
         'printing to help you understand what will be done')
+@click.option('--use-local', default=False,
+    help='Allow the use of local channels for package retrieval')
 @verbosity_option()
 @bdt.raise_on_error
 def bootstrap(name, recipe_dir, python, overwrite, condarc, config,
-    append_file, docserver, dry_run):
+    append_file, docserver, dry_run, use_local):
   """Creates a development environment for a recipe
 
   It uses the conda render API to render a recipe and install an environment
@@ -117,5 +119,5 @@ def bootstrap(name, recipe_dir, python, overwrite, condarc, config,
 
   conda_config = make_conda_config(config, python, append_file, condarc)
   deps = parse_dependencies(recipe_dir, conda_config)
-  status = conda_create(conda, name, overwrite, condarc, deps, dry_run)
+  status = conda_create(conda, name, overwrite, condarc, deps, dry_run, use_local)
   click.echo('Execute on your shell: "conda activate %s"' % name)
-- 
GitLab