pydoit / doit

CLI task management & automation tool
http://pydoit.org
MIT License
1.84k stars 175 forks source link

-s param doesn´t accept multiple arguments since 0.34.0 #446

Open wassupxP opened 1 year ago

wassupxP commented 1 year ago

After bump I found out that -s param doesn´t accept multiple tasks as arguments. Not sure whether this was intentional, because it is not included in changelog so just to make sure I am creating this bug report.

My main use case is that when I run group task (task with no actions) I substitute all tasks that are a direct dependency of group task and run them with -s switch (so it actually runs all direct dependencies instead of doing nothing - group task has no actions on its own) in task_loader. Right now this use case is broken, because only first task is run.

Please let me know if you need more informations or if I just misunderstood --single param.

Fund with Polar

wassupxP commented 1 year ago

Hello, another bit nasty dodo file, but the issue should be easily reproducable. tried locally on doit 0.35.0


import os

def task_one():
    curr_file = os.path.dirname(os.path.abspath(__file__))
    def action():
        with open(os.path.join(curr_file, "file.txt"), "w+") as f:
            f.write("MOCK")

    return {'actions': [(action,)],
            'uptodate': [os.path.isfile(os.path.join(curr_file, "file.txt"))],
            'basename': 'one',
            }

def task_two():
    curr_file = os.path.dirname(os.path.abspath(__file__))
    def action():
        with open(os.path.join(curr_file, "file2.txt"), "w+") as f:
            f.write("MOCK")

    return {'actions': [(action,)],
            'uptodate': [os.path.isfile(os.path.join(curr_file, "file2.txt"))],
            'basename': 'two',
            }

Including log from console as well:

$ python.exe -m doit -s one two
.  one
$ python.exe -m doit info one

one

status     : up-to-date

$ python.exe -m doit info two

two

status     : run
 * The following uptodate objects evaluate to false:
    - False (args=None, kwargs=None)

Please let me know if you would need additional informations.