Legacy Dev Forum Posts

 View Only

Sign Up

PSA: couple go files for transform

  • 1.  PSA: couple go files for transform

    Posted 06-05-2025 18:26

    SimonBrown | 2023-06-09 14:54:25 UTC | #1

    Not a question but wanted to share 2 very simple GO templates I did while learning the syntax and using CLI tool for customer org builds and integration work I do.

    If not appropriate for forum, please delete.

    I found using GC to get Id's to Names a constant need and using the API explorer to "find" my Name or ID slow or required multiple steps to find info (copy/paste into N++ etc)

    I see CLI APIs return simple json or entities array so I created template for each. Extremely simple and my first dabble with them!

    Both these extract top level Id and Name into a valid json format, to aid finding pairs quickly.

    Go template where no entities on response;

    [
    	{{ $numRows := len . }}
    	{{ range $index, $element := . }}{{if $index}},{{end}}
    	{
    	"id": "{{.id}}",
    	"name":"{{.name}}"
    	}
    {{- end }}
    ]

    And one where entities is returned from the CLI command;

    {{/* .entities top level access from json. Many API calls return an array of entities */}}
    {{/* the if index bit on end of range makes the output add comma to rows, and not the last row to generate valid json response */}}
    [
    	{{ $numRows := len . }}
    	{{ range $index, $element := .entities }}{{if $index}},{{end}}
    	{
    	"id": "{{.id}}",
    	"name":"{{.name}}"
    	}
    {{- end }}
    ]

    Example of use, to get the workflows and grab the id and name to quickly find the Id to add to a trigger creation!

    gc flows list --varType workflow --transform GO_entities.txt -p sg

    Again, if not appropriate just delete post

    Regards Simon


    Anthony_Heacock | 2023-06-09 22:00:53 UTC | #2

    Simon, thanks for the Go examples. I've been wanting to give Go a try and this will help.

    If you're interested, the same can be accomplished with gc and jq:

    gc users list

    jq ".entities[]

    {id: .id, name: .name}"

    gc flows list --varType workflow

    jq ".entities[]

    {id: .id, name: .name}"


    SimonBrown | 2023-06-12 08:22:33 UTC | #3

    Hi Anthony

    I had seen examples and also tried jq, it's a 3rd party extra download so I wanted to see what GO could do, as it's built in to GC with the transform. Reducing dependencies :slight_smile: jq is elegant and powerful though.

    I also did some work with powershell as well which was more about pulling multiple data sets manipulating outputs and such.

    [PSObject] $agentsNames = Get-Content $AgentjsonFilePath | ConvertFrom-Json | Select-Object @{N="id";E={$_.entities.id}}, @{N="name";E={$_.entities.name}}

    But I am looking at GO as its built in and just for getting info out I need in a quick and easy way :slight_smile:


    Anthony_Heacock | 2023-06-12 17:36:26 UTC | #4

    We’re mostly a Windows shop, so I just downloaded the .exe. It definitely has some nuances and I’m certainly no expert at it.

    I’ve been playing a bit with Powershell, mixing it with jq but I ran into some issues with escaping the quotes. I can’t seem to get it to work. I haven’t tried straight Powershell.

    The transform option is definitely cleaner. You can wind up with a pretty long and complex command line piping filters.

    I definitely plan on giving Go and transforms a try.


    system | 2023-07-12 17:36:28 UTC | #5

    This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.


    This post was migrated from the old Developer Forum.

    ref: 20355