go to post Brett Saviano · Dec 5 I think in my ideal world, I would be able to make my own branch for my modifications, make changes, then commit them to the server when ready (thus deleting the branch). But if I want to be able to do that, I think we need to aim for a single-user environment, which means some sort of IRIS instance on my machine, or a dedicated environment just for my new branch on the server (as you suggested), although I don't quite understand how that would work. This process is exactly what I was suggesting. Each developer gets their own IRIS, like they have their own copy of the code in the dedicated branch for the feature. Think of IRIS as the SDK, like the JDK for Java or Node.js for JavaScript. Your setup is complex, but if you have a process to set up your shared dev server then you can have the devs run that to set up their own servers. If developers won't be running tests that require the full setup, then the instance setup becomes even simpler. You can then have a CI/CD pipeline in your git provider that moves code to the shared test instance when it's committed to the main develop branch. With a setup like this, you can have as many devs working on as many projects as you like without them blocking each other. Any conflicts between changes will be resolved when the devs submit their code for a merge/pull request on your main branch.
go to post Brett Saviano · Dec 4 Hi @Michael Derr, I recommend you have an isolated dev environment for each branch, whether that be a whole server or just a namespace. You can have Embedded Git configured to a different branch in each environment. Developers would then work in the environment that corresponds to the branch. This can be achieved with only server-side source control, but it also sets you up nicely to move to local source control in the future if that's a goal.
go to post Brett Saviano · Dec 2 @Tobias Krause You need to have a workspace folder with an active server connection to the same server and namespace that you are trying to export from. These checks are there to prevent you accidentally syncing the exported files with a different server or namespace.
go to post Brett Saviano · Oct 24 Hi @Stephan Gertsobbe, there is no exact equivalent for exporting an entire Studio project in a single XML file. The command I mentioned is the closest approximation. The best workaround is to use a terminal to do the export. Since you mentioned using these exports for backup and that you have server-side source control in use, I would expect that your files being tracked in source control would constitute the backup. Source control support for projects files themselves is limited due to the way we edit them. The Atelier REST API used by VS Code has no support for Studio Projects since the concept didn't exist in Atelier. VS Code uses SQL to modify projects instead. This mechanism was chosen for its backwards compatibility since Studio Projects users tended to be on older server versions. Source control UserActions are fired for projects, but not all of the lifecycle hooks will because we are not using object access.
go to post Brett Saviano · Oct 6 VS Code has a GUI that will help you debug REST services: https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls...
go to post Brett Saviano · Sep 15 @Jochen Roese This is a known bug in ExportUDL() that has been fixed in IRIS 2024.1.2+ and 2024.2+. You can work around this by solely using VS Code instead of mixing in ExportUDL(). VS Code does not have the bug.
go to post Brett Saviano · Aug 5 @Jeffrey Drumm The Lite Terminal does not support aliases and does not support command history in the SQL shell (or any Read-based input). Please open an issue on GitHub for the text duplication issue when the first charater is a colon.
go to post Brett Saviano · Jul 15 Hi @Neil.Thaiss451, the inactivity timeout for the new applications is currently hard-coded and cannot be configured by users. We have received feedback that users would like to configure the timeout, so we are looking into the best way to expose that functionality for all our new apps. We hope to address this feedback in a future release. Thanks for trying out the new apps!
go to post Brett Saviano · Jun 16 @Matjaz Murko I just released version 3.0.3 of the vscode-objectscript extension, which contains a fix for this issue.
go to post Brett Saviano · May 29 For anyone else who may be interested, here is my answer to @Ricardo.AlvesdosSantos's question that I provided on the GitHub Discussion he opened: The extension intentionally doesn't support what you want to do. You have to pick a side. Since you're using Git and are happy to edit the files on your local file system, I suggest you turn off source control on the server and fully embrace the client-side editing workflow. Your local file system will be the "source of truth" and the extension will sync files with the server on save and compile them. The only change is that instead of using IRIS to run the source control actions, you can use any number of industry-standard Git-compatible tools. VS Code works well with Git out of the box, and there are additional extensions you can install to make that experience even better. You can also use a different GUI application like GitHub Desktop or Sourcetree, or the git CLI directly.
go to post Brett Saviano · May 28 Try responseData.items.%Get(0).titles.%Get(0).value.%Get("en_US") or responseData.items.%Get(0).titles.%Get(0).value."en_US".
go to post Brett Saviano · May 9 If you're expecting those keys to be defined in the first element of the "items" array like the example code, you can do this: If responseData.items.%GetTypeOf(0) = "object" { Set pResponse.COMPortalURL = responseData.items.%Get(0).portalUrl } This assumes that "items" will always be present and be an array. It checks if the first element of "items" is a nested object, and then sets the target object property to the value of portalUrl in the nested "items" object. You don't need to check if portalUrl is defined since referencing an unassigned key in a %DynamicObject will return the empty string instead of <UNDEFINED>.
go to post Brett Saviano · May 5 @Juan Mota Sanchez Is your instance set up for minimal security? If so, you need to change the /api/interop-editors web application to allow Password authentication. It's a known issue that the new Interoperability UIs don't support unauthenticated access. This will be fixed in a future version of IRIS.
go to post Brett Saviano · May 1 The next versions of the three extensions (vscode-objectscript, Server Manager and Language Server) will attempt to close their web sessions when VS Code shuts down. This should help avoid sessions stacking up if you restart VS Code often.
go to post Brett Saviano · May 1 Your #1 is incorrect. // and /**/ comments are allowed in the class body outside of member implementations. They won't be associated with a class member as a description. They are saved in the system global as part of the class though. They're technically their own class member type called UDLText, which you can see in the XML snippet in the original post.
go to post Brett Saviano · May 1 Hi @Colin Brough, I'm happy to expand on my previous comments. Yes, this is correct. Exporting a class retrieves whatever is in the system global for that class and builds the text file from it. The serialization happens when the class is imported. That space must be added when the text of the class is converted to the global structure. Therefore, if you manually changed the system global to remove the space it would not show up in the export. NOTE: Please don't actually do that! Yes, this is correct. Any server functions that export code that export code in a specific format (UDL for VS Code and $SYSTEM.OBJ.ExportUDL() for example) use the same code for performing the export. The serialization I mentioned in #1 and on GitHub only happens when importing a class in UDL format (the format used for editing in Studio and VS Code), NOT XML. The space must have been removed when someone modified an XML export file directly and then re-imported it. This won't work for the reason I mentioned in #3. You could use VS Code to do this. Assuming you have a local folder containing your code open in VS Code, you can right-click on the folder and select the Import and Compile option. This will load all the files in the folder onto the server, compile them, and then refresh the local copies.
go to post Brett Saviano · Apr 16 This is deliberate. Mixing client-side editing and server-side editing can lead to lost or overwritten work, so we made it a little harder to do so. You can still add an editable folder by editing the .code-workspace file directly if you are OK with the risks.
go to post Brett Saviano · Apr 7 These "Go To" options are built-in to VS Code core. While the action is the same, the concepts are different. VS Code describes a few of them here.