Making things stable again.
- stdlib: revert the
set -euo pipefail
change. It was causing too many issues for users. - direnv allow: fix the allow migration by also creating the parent target directory.
Fix release
- stdlib: fix unused variable in
use node
- stdlib: fix unused variable in
source_up
- test: add stdlib test skeleton
- add dist release utility
This is a massive release!
You can now hit Ctrl-C during a long reload in bash and zsh and it will not loop anymore.
Commands that use direnv_load
won't fail when there is an output to stdout
anymore (eg: use_nix
).
Direnv now also loads files from .config/direnv/lib/*.sh
. This is intended
to be used by third-party tools to augment direnv with their own stdlib
functions.
The .envrc
is now loaded with set -euo pipefail
. This will more likely
expose issues with existing .envrc
files.
- Update README.md (#536)
- Add link to asdf-direnv. (#535)
- docs: fix invalid link (#533)
- adds experimental curl based installer (#539)
- change where the allow files are being stored
- direnv status: also show the config
- direnv exec: improve the error message
- warn if PS1 is being exported
- handle SIGINT during export in bash
- export: display the full RC path instead of a relative one
- direnv exec: the DIR argument is always required (#493)
- ci: use GitHub Actions instead of Azure Pipelines
- staticcheck (#543)
- use go modules
- make: handle when /dev/stderr doesn't exist (#491)
- site: use jekyll to render the website
- Pin nixpkgs to current NixOS 19.09 channel (#526)
- fix elvish hook
- Use
fish_preexec
hook instead offish_prompt
(#512) - Use
fish_postexec
to make sure direnv hook executed 'after' the directory has changed when usingcd
. - improve zsh hook (#514)
- rename the configuration from config.toml to direnv.toml (#498)
- add warn_timeout option. DIRENV_WARN_TIMEOUT is now deprecated.
direnv_load
can now handle stdout outputs- stdlib: add layout_julia
- Handle failing pipenv on empty file and avoid an extra pipenv execution (#510)
- fix
source_env
behaviour when the file doesn't exists (#487) watch_file
can now watch multiple files in a single invocation (#524)layout_python
: prefer venv over virtualenv. Do not export VIRUAL_ENV if $python_version is unavailable or a virtual environment does not exist/can't be created- Adds layout_pyenv (#505)
- Fix
source_up
docs to explain that search starts in parent directory (#518) - fix
path_add
to not leak local variables layout_pyenv
: support multiple python versions (#525)- Add a
direnv_version <version_at_least>
command to check the direnv version. dotenv
: handle undefined variables- source files from
.config/direnv/lib/*.sh
- stdlib: set
-euo pipefail
- ci: try to fix releases
- CHANGE: Use source instead of eval on fish hook
- DOC: Remove duplicate build badge (#465)
- DOC: add note about auth (#463)
- DOC: change nixos link (#460)
- FIX: Corrects reverse patching when using exec cmd. (#466)
- FIX: Perform stricter search for existing Anaconda environments (#462)
- FIX: arity mismatch for elvish (#482)
- FIX: avoid reloading on each prompt after error (#468)
- FIX: improve bash hook handlign of empty PROMPT_COMMAND (#473)
- FIX: improved the tests for bash, zsh, fish and tcsh (#469)
- MISC: migrated from Travis CI to Azure Pipelines (#484)
- FIX: file_times: check Stat and Lstat (#457)
- FIX: watched files now handle symlinks properly. Thanks @grahamc! #452
- NEW: add support for .env variable expansion. Thanks to @hakamadare!
- make: generate direnv.exe on windows (#417)
- travis: fix the release process
A lot of changes!
- stdlib: add DIRENV_IN_ENVRC (#414)
- Fix typo in readme. (#412)
- Merge pull request #407 from zimbatm/direnv-dump-shell
- direnv dump can now dump to arbitrary shells
- add a new "gzenv" shell
- move gzenv into new package
- shell: introduce a dump capability
- cleanup the shells
- Add alias '--version' to version command. Closes #377. (#404)
- Correctes spelling of openSUSE (#403)
- testing: elvish 0.12 is released now (#402)
- Merge pull request #397 from zimbatm/readme-packaging-status
- README: add packaging status badge
- README: remove equinox installation
- direnv show_dump: new command to debug encoded env (#395)
- Document possibility to unset vars (#392)
- stdlib: fix typo
- go dep: update Gopkg.lock
- make: don't make shfmt a dependency
- Avoid to add unnecessary trailing semicolon character (#384)
- add asdf to the list of known projects
- stdlib.go: re-generate
- Add PHP layout to stdlib (#346)
- make: fix formatting
- README: add build status badge
- Overhaul the build system (#375)
- stdlib, layout_pipenv: handle
$PIPENV_PIPFILE
(#371) - README: improve the source build instructions
- CHANGE: hook expands the direnv path. Ensures that direnv can be executed even if the PATH is changed #369.
- CHANGE: stdlib: direnv_load: disallow watching in child
Allows the
use nix --pure
scenario in #368 - README: add OpenSuSE to the list of distros
- Revert "use_nix: unset IN_NIX_SHELL"
- NEW: add support for elvish (#356)
- NEW: config: allow to disable stdin on eval (#351)
- DOC: Add the usage of source_up to the README (#347)
- FIX: default.nix: fix compilation
- FIX: lintian warnings (#340)
- FIX: release process (#342)
- FIX: support for go 1.10 (#339)
- NEW: TOML configuration file! (#332, #337)
- NEW: support for allow folder whitelist (#332)
- NEW: add anaconda support (#312)
- CHANGE: use_nix: unset IN_NIX_SHELL
- NEW: Add support for Pipenv layout (#314)
- CHANGE: direnv version: make public
- FIX: direnv edit: run the command through bash
- FIX: website: update ditto to v0.15
- FIX: fixes dotenv loading issue on macOS
''=''
- FIX: direnv edit: fix path escaping
- FIX: stdlib: fix find_up
- FIX: stdlib: use absolute path in source_up
- FIX: remove ruby as a build dependency
- FIX: go-dotenv: update to latest master to fix a parsing error
- FIX: stdlib: make direnv_layout_dir lazy (#298)
- NEW: stdlib: configurable direnv_layout_dir
- CHANGE: stdlib: source the direnvrc directly
- FIX: permit empty NODE_VERSION_PREFIX variable
- FIX: pwd: Don't use -P to remove symlinks (#295)
- FIX: also reload when mtime goes back in time
- FIX: Prevent
$HOME
path from being striked (#287) - BUILD: use the new
dep
tool to manage dependencies - BUILD: dotenv: move to vendor folder
- stdlib layout_python: fixes on no arg
- FIX: stdlib path_add(), see #278
- FIX: install from source instructions
- NEW: support multiple items in path_add and PATH_add (#276)
- NEW: add a configurable DIRENV_WARN_TIMEOUT option (#273)
- CHANGE: rewrite the dotenv parsing, now supports commented lines
- CHANGE: pass additional args to virtualenv (#261)
- FIX: stdlib watch_file(): escaping fix
- FIX: only output color if $TERM is not dumb (#264)
- FIX: the watch_file documentation
- FIX: node version sorting (#255)
- FIX: Typo in MANPATH_add always generates "PATH missing" error. (#256)
- FIX: only deploy the go 1.8 version
- NEW: stdlib.sh: introduce MANPATH_add (#248)
- NEW: provide packages using the equinox service
- CHANGE: test direnv with go 1.8 (#254)
- FIX: Add warning about source_env/up
- FIX: go-md2man install instruction
- NEW:
use guix
(#242) - CHANGE: use go-md2man to generate the man pages
- FIX: tcsh escaping (#241)
- FIX: doc typos and rewords (#226)
- NEW: use_nix() is now watching default.nix and shell.nix
- NEW: Allow to fix the bash path at built time
- FIX: Panic on
direnv current
with no argument - FIX: Permit empty NODE_VERSION_PREFIX variable
- FIX: layout_python: fail properly when python is not found
- FIX: travis dist release
- NEW:
direnv export json
to facilitate IDE integration - NEW: watch functionality thanks to @avnik Now direnv also reload on associate .env and .envrc changes.
- NEW: stdlib
watch_file
function thanks to @avnik Allows to monitor more files for change. - NEW: stdlib
use node
function thanks to @wilmoore - NEW:
direnv prune
to remove old allowed files thanks to @punitagrawal Only works with newly-generated files since we're not storing the path inside of them.
- NEW: use_nix() helper to stdlib. Thanks @gfxmonk
- FIX: Added SHELLOPTS to ignored vars. Thanks @fernandomora
- FIX: Removed shellcheck offenses in the stdlib, better escaping
- FIX: typos. Thanks @camelpunch, @oppegard
- FIX: source_env handles missing .envrc gracefully. Thanks @gerhard
- FIX: Empty variable as unloading in Vim. Thanks @p0deje
- FIX: Corrected spelling mistake in deny command. Thanks @neanias
- NEW: tcsh is now supported ! Thanks @bbense
- CHANGE:
direnv dump
now ignoresBASH_FUNC_
exports. Thanks @gfxmonk - CHANGE: Interactive input during load is now possible. Thanks @toao
- FIX: allow workaround for tmux users:
alias tmux='direnv exec / tmux'
- FIX: hardened fish shell escaping thanks to @gfxmonk
Thanks @bbense @vially and @dadooda for corrections in the docs
- NEW: Use a different virtualenv per python versions for easier version switching. Eg: ./.direnv/python-${python_version}
- NEW: Makes
layout python3
a shortcut forlayout python python3
. Thanks @ghickman ! - NEW: Allows to specify which executable of python to use in
layout_python
- CHANGE:
layout python
now unsets $PYTHONHOME to better mimic virtualenv - CHANGE: Don't make virtualenvs relocatable. Fixes #137
- OTHER: Use Travis to push release builds to github
- NEW: Try to detect an editor in the PATH if EDITOR is not set.
- NEW: Preliminary support for vim
- NEW: New site: put the doc inside the project so it stays in sync
- NEW: Support for Cygwin - Thanks @CMCDragonkai !
- NEW: Allow to disable logging by setting an empty
DIRENV_LOG_FORMAT
- NEW: stdlib
layout perl
. Thanks @halkeye ! - CHANGE: layout ruby: share the gem home starting from rubygems v2.2.0
- CHANGE: Allow arbitrary number of args in
log_status
- CHANGE: Bump command timeout to 5 seconds
- FIX: Adds selected bash executable in
direnv status
- FIX: man changes, replaced abandonned ronn by md2man
- FIX:
make install
was creating a ./bin directory - FIX: issue #114 - work for blank envs. Thanks @pwaller !
- FIX: man pages warning. Thanks @punitagrawal !
- FIX: Multi-arg EDITOR was broken #108
- FIX: typos in doc. Thanks @HeroicEric and @lmarlow !
- FIX: If two paths don't have a common ancestors, don't make them relative.
- FIX: missing doc on layered .envrc. Thanks @take !
- NEW: DIRENV_LOG_FORMAT environment variable can be used tocontrol log formatting
- NEW:
direnv exec [DIR] <COMMAND>
to execute programs with an .envrc context - CHANGE: layout_python now tries to make your virtualenv relocatable
- CHANGE: the export diff is not from the old env, not the current env
- CHANGE: layout_go now also adds $PWD/bin in the PATH
- FIX: Hides the DIRENV_ variables in the output diff. Fixes #94
- FIX: Makes sure the path used in the allow hash is absolute. See #95
- FIX: Set the executable bit on direnv on install
- FIX: Some bash installs had a parse error in the hook.
The last release was heavily broken. Ooops !
- FIX: Refactored the whole export and diff mechanism. Fixes #92 regression.
- CHANGE: DIRENV_BACKUP has been renamed to DIRENV_DIFF
Restart your shells on upgrade, the format of DIRENV_BACKUP has changed and is incompatible with previous versions.
- NEW:
direnv_load <command-that-outputs-a-direnv-dump>
stdlib function - CHANGE: Only backup the diff of environments. Fixes #82
- CHANGE: Renames
$DIRENV_PATH
to$direnv
in the stdlib. - CHANGE: Allow/Deny mechanism now includes the path to make it more secure.
- CHANGE:
direnv --help
is an alias todirenv help
- CHANGE: more consistent log outputs and error messages
- CHANGE:
direnv edit
only auto-allows the .envrc if it's mtime has changed. - CHANGE: Fixes old bash (OSX) segfault in some cases. See #81
- CHANGE: The stdlib
dotenv
now supports more .env syntax - FIX: Restore the environment properly after loading errors.
- Added support for the fish shell. See README.md for install instructions.
- Stop recommending using $0 to detect the shell. Fixes #64.
- Makes the zsh hook resistant to double-hooking.
- Makes the bash hook resistant to double-hooking.
- More precise direnv allow error message. Fixes #72
- Fixes shell detection corner case
When upgrading from direnv 1.x make sure to restart your shell. The rest is relatively backward-compatible.
- changed the execution model. Everything is in a single static executable
- most of the logic has been rewritten in Go
- robust shell escaping (supports UTF-8 in env vars)
- robust eval/export loop, avoids retrys on every prompt if there is an error
- stdlib: added the
dotenv [PATH]
command to load .env files - command: added
direnv reload
to force-reload your environment