Valdo extension for VS Code
Are you also planning to create a Valdo extension for VS Code?
I'll have to think about it.
I think there was some discussion in a thread on GNOME Builder's issue page about templating too. I hope that, for now at least, a command-line interface is rather useful.
@Prince781 will you mind if I make one
@Abdallah-Moh feel free
thanks
is there any way to enter the app name and the rest when calling the command
@Abdallah-Moh not currently. What context do you need to use this in?
the vscode extention
the user will be required to have valdo installed
the vscode extention
I mean more specifically, how to you plan to have the plugin interact with valdo? For example, are you going to rewrite the prompt in JS and intend to call valdo to instantiate the template? Walk me through your proposal.
What I will do is get all the required info from the user then use a node module to run valdo --data in here
@Abdallah-Moh how will you determine what information you need? Don't you need to analyze the template?
Yes I will get the template type at the beginning
@Abdallah-Moh so it looks like I'll need to make some changes to valdo for you. What do you think of this API?
% valdo eos --list-vars
{
"PROGRAM_NAME": {
"summary": "the name of the program",
"default": "/${PROJECT_NAME}/\\w+/\\u\\0/(\\w)?\\W+(\\w)?(\\w*)/\\1\\u\\2\\L\\3\\E/^\\w/\\u\\0/",
"pattern": "^[[:word:]-]+$"
},
"PROJECT_SUMMARY": {
"summary": "a very short summary of the project",
"default": "a new app for elementary OS"
},
"PROJECT_CATEGORIES": {
"summary": "categories (semicolon-separated)",
"pattern": "^((AudioVideo|Audio|Video|Development|Education|Game|Graphics|Network|Office|Science|Settings|System|Utility);)+$"
},
"PROJECT_KEYWORDS": {
"summary": "keywords (semicolon-separated)",
"default": "/${PROJECT_NAME}/\\W+/;/^;+//\\w+/\\L\\0\\E/[^;]$/\\0;/",
"pattern": "^(\\w+;)+$"
}
}
% valdo --list-builtin-vars
# will list all built-in variables
% valdo eos -DPROGRAM_NAME='valdo' -DPROJECT_VERSION='1.0.0' \
-DPROJECT_SUMMARY='a templating engine for Vala' -DPROJECT_CATEGORIES='System;Utility;' \
-DPROJECT_KEYWORDS='vala,templating' -o $DIRECTORY
Note, this is an example of how it would work with the eos template.
looks nice for me
@Abdallah-Moh checkout and build wip/commands and try getting your frontend to work with Valdo
@Prince781 is there an arg to get a list of all the templates
@Abdallah-Moh you can just run valdo and it'll print out all of the templates. The output should be easy to parse.
e.g.
% valdo | tail -n +3 | awk '{print $1}'
lib
new
gtk
swifty-gtk4
eos
Maybe it would be better to parse the output using JS for better running support on Windows.
@pervoj Why would someone create a vala project on windows, and js is what is used to create vscode extentions
@Abdallah-Moh Maybe someone can start working on Linux and continue working on Windows. Otherwise, I think it's a shame to have a non-multiplatform extension for the multiplatform Valdo.
Yes, I know, I meant that I think it's better to parse the output right in the extension code.
@pervoj The extension will need valdo to run and valdo is not available for windows
@Abdallah-Moh You can compile Valdo on Windows without any problems. I also talked with @Prince781 about packaging for MSYS2 (where these commands but are available).
It's up to you, it was just a suggestion.
the extension will work if valdo is installed so yes it can work on windows if you install valdo
@Abdallah-Moh the example command I gave demonstrates that it's simple to parse valdo's output using a regex. I did not intend for you to execute that command.
I know
Is the feature added?
Try wip/commands branch
I was busy but now I have time to work on the extension you can find it here https://github.com/Abdallah-Moh/vs-valdo
@Abdallah-Moh so it looks like I'll need to make some changes to valdo for you. What do you think of this API?
% valdo eos --list-vars { "PROGRAM_NAME": { "summary": "the name of the program", "default": "/${PROJECT_NAME}/\\w+/\\u\\0/(\\w)?\\W+(\\w)?(\\w*)/\\1\\u\\2\\L\\3\\E/^\\w/\\u\\0/", "pattern": "^[[:word:]-]+$" }, "PROJECT_SUMMARY": { "summary": "a very short summary of the project", "default": "a new app for elementary OS" }, "PROJECT_CATEGORIES": { "summary": "categories (semicolon-separated)", "pattern": "^((AudioVideo|Audio|Video|Development|Education|Game|Graphics|Network|Office|Science|Settings|System|Utility);)+$" }, "PROJECT_KEYWORDS": { "summary": "keywords (semicolon-separated)", "default": "/${PROJECT_NAME}/\\W+/;/^;+//\\w+/\\L\\0\\E/[^;]$/\\0;/", "pattern": "^(\\w+;)+$" } }% valdo --list-builtin-vars # will list all built-in variables% valdo eos -DPROGRAM_NAME='valdo' -DPROJECT_VERSION='1.0.0' \ -DPROJECT_SUMMARY='a templating engine for Vala' -DPROJECT_CATEGORIES='System;Utility;' \ -DPROJECT_KEYWORDS='vala,templating' -o $DIRECTORYNote, this is an example of how it would work with the
eostemplate.
@Prince781 can this return an array of objects and each object will contain the name and the rest