Skip to content

csh and path() Context Manager #1300

Description

@lucacorti

Hi,

the path context manager seems to fail when trying to append path on FreeBSD/csh containing unescaped characters like $, ~ and .. It also seems to add unneeded extra quotes.

E.g., with bower installed locally:

...
@task
def staging()
...
    env.directory = '~/'
    env.venv_activate = 'bin/activate.csh'
    env.venv = env.directory + 'venv/'
    env.use_shell = False
    env.add_to_path = [
        env.directory + 'node_modules/bower/bin',
        env.directory + 'node_modules/uglifyjs/bin',
        env.directory + 'node_modules/yuglify/bin',
    ]
...
@task
def deploy()
    with cd(env.directory), prefix('source ' + env.venv + env.venv_activate), path(":".join(env.add_to_path)):
        env.run('npm install')
        env.run('bower install')
...

fab staging deploy

returns

[freebsd] run: npm install
[freebsd] out: Bad : modifier in $ (").
[freebsd] out: 

Fatal error: run() received nonzero return code 1 while executing!

Requested: npm install
Executed: cd ~/ && source ~/venv/bin/activate.csh && export PATH="$PATH:"~/node_modules/bower/bin/:~/node_modules/yuglify/bin/:~/node_modules/uglify-js/bin/"" && npm install

also export is probably not working anyway in csh, should be setenv I think.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions