-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Anticipate expectations for dvc commands #26
Comments
I guess a good proxy is what Git lens, Git history, and native Git plugins do for VS Code. Yes, you could always jump into CLI and do the same. But if it's integrated well it gives:
Regarding tasks vs commands. DVC has a file that is exactly similar to a makefile ( I'm not sure still what is the difference - tasks vs commands in your question? |
Great points.
That clears that up, thanks.
Its a hard question. They're not mutually exclusive, for example a command can be used to run a task. Commands can do anything, but only a Task is a Task, and the mechanisms behind serving them are different. Without knowing the API intimately, it might help to consider that Task Providers are similar to Language Providers, in that there is high emphasis on context. Since there is a distinction API (class/pattern) wise, its an important discussion to have. I've just found it to be a theme in my own learning lately; discerning the place for Tasks. Learning DVC and answering the question in its context will just take some thought. |
Copied from #28: We'll need a way to recognize and use Python virtual environments on these Terminal-based commands. I think the most optimal solution to this that won't break projects is to use VS Code's native settings API to define a few configurable options, for example:
Same as my ideas on #22, the config setup may be better left for the future. However, adding the basic ability to use |
Good insight/pointer. Sidenote: I'm used to
Great idea, reminds me of: "python.pythonPath": "C:\\ProgramData\\Miniconda3""
Also good. See: "python.venvFolders": []
Solid. Array would be nice, as in: "terminal.integrated.shellArgs.windows": [],
I agree. Glad you mentioned it, though! And okay I'll keep that in mind. Something to keep in mind also: we can check those settings (which would be fair especially in the case of Python). |
@rogermparent @ryanraposo I think it worth breaking a proper support for different Python env into a separate ticket with some of the details you discussed here guys. Good stuff. We'll absolutely need to figure this and make it solid before the release. Not a priority at the moment though. |
not clear still to be honest. Are there any links, or examples to try to understand the flow? |
@shcheklein Absolutely!! I'll get back to you. A lot of it is based on user flow like you mentioned, so I'll fill you in on that perspective as we work through it. I'll focus on sharing my thought process alongside PRs, and update the OP with the essence of it. |
DVC commands in VS Code will manifest in different ways.
Tasks
Here's a case-study for Tasks, using rake (make-like build utility for Ruby) as an example.
An item from a typical
Rakefile
:Task Provider
Tasks are detected or inferred by extensions using Task providers, then served up to VS Code on request.
Here's a pattern overview for a Task provider suited to
rake
:rake -AT -f Rakefile
to list all items in Rakefile.vscode.OutputChannel
channel:vscode.Task
for each:User Experience
When working in the relevant workspace, user enjoys integrated access to all Rakefile tasks, like 'Uninstall' in the example above.
(Will update with examples, benefits, and access points for integrated Tasks.)
Snippets
Commands with 'WHEN' conditions:
Run shell commands and handle output:
Questions
One job is making sure our vscode-dvc feels like an extension, but the other is making sure that if it begs an extension, we deliver. When it comes to commands:
What would that look like?
What are the nuances of DVC and its workflows that would would make a user over-joyed to see it in listed in the marketplace?
Aside from visualizations, what would instantly occur to users? "Now I'll be able to..." or "I bet that means ___ will be so easy/accessible!"
What are the accepted variables in a DVC workflow?
These are the things that I can't see very well. Please tell me what commands mean to a DVC user :)
The text was updated successfully, but these errors were encountered: