---
feature_story: FS_85_33_46_53
feature_title: `bootstrap_dev_env`
feature_status: TEST
---

See also FS_58_61_77_69 `dev_shell`.

This feature covers initial setup and upgrades of `argrelay`-integrated projects (their development environments).

The idea is to have a single `@/exe/bootstrap_dev_env.bash` script which:
*   Loads `@/conf/python_conf.bash` (or prompts user if it does not exist) and inits `venv`.
*   Runs project-specific custom `@/exe/deploy_project.bash` (or prompts user if it does not exist).
*   Copies itself into target project from `argrelay` (for future use) and starts its refreshed copy.
*   Runs project-specific custom `@/exe/build_project.bash` (or prompts user if it does not exist).
*   Deploys necessary configs and scripts.
*   Generates client and server.
*   Updates `@/conf/dev_env_packages.txt`.
*   ...

Script `@/exe/bootstrap_dev_env.bash` is supposed to be version controlled.
It is added to the target project repo so that it can be re-run during subsequent upgrades<br/>
(without searching for outside of project repo).

There are three scenarios for `@/exe/bootstrap_dev_env.bash` (but it can be re-run at any time):
1. [`bootstrap_procedure.1.project_creation.md`][bootstrap_procedure.1.project_creation.md]
2. [`bootstrap_procedure.2.initial_deployment.md`][bootstrap_procedure.2.initial_deployment.md]
3. [`bootstrap_procedure.3.argrelay_upgrade.md`][bootstrap_procedure.3.argrelay_upgrade.md]

[bootstrap_procedure.1.project_creation.md]: ../dev_notes/bootstrap_procedure.1.project_creation.md
[bootstrap_procedure.2.initial_deployment.md]: ../dev_notes/bootstrap_procedure.2.initial_deployment.md
[bootstrap_procedure.3.argrelay_upgrade.md]: ../dev_notes/bootstrap_procedure.3.argrelay_upgrade.md

