Skip to content
Snippets Groups Projects
Commit 764a3050 authored by Amir MOHAMMADI's avatar Amir MOHAMMADI
Browse files

Ask for conda env name explicitly in bdt dev install

This makes sure that no package gets installed in
the user folders of users
parent f92a8f51
No related branches found
No related tags found
1 merge request!297Ask for conda env name explicitly in bdt dev install
Pipeline #62345 passed
...@@ -4,33 +4,51 @@ from click_plugins import with_plugins ...@@ -4,33 +4,51 @@ from click_plugins import with_plugins
from pkg_resources import iter_entry_points from pkg_resources import iter_entry_points
@click.command(epilog="See bdt dev --help") @click.command(epilog="See bdt dev --help for examples of this command.")
@click.option(
"-n",
"--env-name",
help="Name of the conda environment to use",
required=True,
)
@click.argument( @click.argument(
"folders", "folders",
nargs=-1, nargs=-1,
type=click.Path(exists=True, file_okay=False, dir_okay=True), type=click.Path(exists=True, file_okay=False, dir_okay=True),
) )
def install(folders): def install(env_name, folders):
"""runs pip install -vvv --no-build-isolation --no-dependencies --editable <folder>""" """runs:
pip install -vvv --no-build-isolation --no-dependencies --editable <folder>
inside the specified conda environment"""
import subprocess import subprocess
for folder in folders: for folder in folders:
# call pip # call pip
cmd = [
"conda",
"run",
"-n",
env_name,
"pip",
"install",
"-vvv",
"--no-build-isolation",
"--no-dependencies",
"--editable",
folder,
]
cmd = " ".join(cmd)
subprocess.check_call( subprocess.check_call(
[ cmd,
"pip", shell=True,
"install",
"-vvv",
"--no-build-isolation",
"--no-dependencies",
"--editable",
folder,
]
) )
click.echo("Installed package using the command:", cmd)
@click.command(epilog="See bdt dev --help") @click.command(epilog="See bdt dev --help for examples of this command.")
@click.argument("names", nargs=-1) @click.argument("names", nargs=-1)
@click.option("--use-https/--use-ssh", is_flag=True, default=False) @click.option("--use-https/--use-ssh", is_flag=True, default=False)
@click.option( @click.option(
...@@ -38,7 +56,7 @@ def install(folders): ...@@ -38,7 +56,7 @@ def install(folders):
) )
@click.pass_context @click.pass_context
def checkout(ctx, names, use_https, subfolder): def checkout(ctx, names, use_https, subfolder):
"""git clones a Bob package.""" """git clones a Bob package and installs the pre-commit hook if required."""
import os import os
import subprocess import subprocess
...@@ -67,9 +85,15 @@ def checkout(ctx, names, use_https, subfolder): ...@@ -67,9 +85,15 @@ def checkout(ctx, names, use_https, subfolder):
click.echo( click.echo(
"Installing pre-commit hooks. Make sure you have pre-commit installed." "Installing pre-commit hooks. Make sure you have pre-commit installed."
) )
subprocess.check_call(["pre-commit", "install"], cwd=dest) try:
subprocess.check_call(["pre-commit", "install"], cwd=dest)
except subprocess.CalledProcessError:
click.echo(
"pre-commit installation failed. Please install pre-commit manually."
)
# the group command must be at the end of this file for plugins to work.
@with_plugins(iter_entry_points("bdt.dev.cli")) @with_plugins(iter_entry_points("bdt.dev.cli"))
@click.group( @click.group(
epilog="""Examples: epilog="""Examples:
...@@ -79,19 +103,19 @@ def checkout(ctx, names, use_https, subfolder): ...@@ -79,19 +103,19 @@ def checkout(ctx, names, use_https, subfolder):
bdt dev checkout bob.bio.face bdt dev checkout bob.bio.face
cd bob.bio.face cd bob.bio.face
bdt dev create --python 3.9 bobbioface bdt dev create --python 3.9 bobbioface
bdt dev install . bdt dev install -n bobbioface .
\b \b
# later on, checkout and develop more packages # later on, checkout and develop more packages
bdt dev checkout --subfolder src bob.bio.base bdt dev checkout --subfolder src bob.bio.base
bdt dev install src/bob.bio.base bdt dev install -n bobbioface src/bob.bio.base
\b \b
# develop a new project # develop a new project
bdt dev new -vv bob/bob.newpackage "John Doe" "joe@example.com" bdt dev new -vv bob/bob.newpackage "John Doe" "joe@example.com"
# edit the conda/meta.yaml and requirements.txt files to add your dependencies # edit the conda/meta.yaml and requirements.txt files to add your dependencies
bdt dev create --python 3.9 bobnewpackage bdt dev create --python 3.9 bobnewpackage
bdt install .""" bdt install -n bobnewpackage ."""
) )
def dev(): def dev():
"""Development scripts""" """Development scripts"""
......
...@@ -47,7 +47,7 @@ assume you have ``bob.devtools`` installed on a conda environment named ``bdt`` ...@@ -47,7 +47,7 @@ assume you have ``bob.devtools`` installed on a conda environment named ``bdt``
.. code-block:: sh .. code-block:: sh
$ bdt dev install . # calls pip with correct arguments $ bdt dev install -n dev . # calls pip with correct arguments
$ python $ python
for example: for example:
...@@ -179,7 +179,7 @@ The last step is to install the package: ...@@ -179,7 +179,7 @@ The last step is to install the package:
$ cd bob.io.base #if that is not the case $ cd bob.io.base #if that is not the case
$ conda activate dev #if that is not the case $ conda activate dev #if that is not the case
$ bdt dev install . $ bdt dev install -n dev .
To run the test suite: To run the test suite:
...@@ -240,7 +240,7 @@ and install ``bob.extension`` as following: ...@@ -240,7 +240,7 @@ and install ``bob.extension`` as following:
.. code-block:: sh .. code-block:: sh
$ bdt dev checkout --use-ssh --subfolder src bob.extension $ bdt dev checkout --use-ssh --subfolder src bob.extension
$ bdt dev install src/bob.extension $ bdt dev install -n dev src/bob.extension
.. _bob.devtools.create_package: .. _bob.devtools.create_package:
...@@ -269,7 +269,7 @@ start developing your package. ...@@ -269,7 +269,7 @@ start developing your package.
$ cd bob.project.awesome $ cd bob.project.awesome
$ bdt dev create --stable -vv awesome-project #here we used the stable channels to make the conda environment. $ bdt dev create --stable -vv awesome-project #here we used the stable channels to make the conda environment.
$ conda activate awesome-project $ conda activate awesome-project
$ bdt dev install . $ bdt dev install -n awesome-project .
Developing existing bob packages along with your new package Developing existing bob packages along with your new package
...@@ -283,7 +283,7 @@ You need to checkout and install these packages: ...@@ -283,7 +283,7 @@ You need to checkout and install these packages:
.. code-block:: sh .. code-block:: sh
$ bdt dev checkout --use-ssh --subfolder src bob.extension bob.io.base $ bdt dev checkout --use-ssh --subfolder src bob.extension bob.io.base
$ bdt dev install src/bob.extension src/bob.io.base # the order of installing dependencies matters! $ bdt dev install -n awesome-project src/bob.extension src/bob.io.base # the order of installing dependencies matters!
When you build your new package, it is customary to checkout the dependent When you build your new package, it is customary to checkout the dependent
packages (in this example ``bob.extension`` and ``bob.io.base``) in the ``src`` packages (in this example ``bob.extension`` and ``bob.io.base``) in the ``src``
...@@ -298,6 +298,6 @@ your environment. You can find these dependencies by checking ...@@ -298,6 +298,6 @@ your environment. You can find these dependencies by checking
.. code-block:: sh .. code-block:: sh
$ mamba install gcc_linux-64 gxx_linux-64 libblitz $ mamba install gcc_linux-64 gxx_linux-64 libblitz
$ bdt dev install src/bob.extension src/bob.io.base # the order of installing dependencies matters! $ bdt dev install -n awesome-project src/bob.extension src/bob.io.base # the order of installing dependencies matters!
.. include:: links.rst .. include:: links.rst
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment