Created
September 11, 2020 22:04
-
-
Save TuvianNavy/5315f3a0b668992cc125d1188231e59a to your computer and use it in GitHub Desktop.
reverse-inside-out transformation for YAML/JSON
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ubuntu@livazplus:~$ curl https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/alternative.yaml | yq -c 'paths(scalars) as $p | [$p, getpath($p)] | flatten | reverse' | |
| % Total % Received % Xferd Average Speed Time Time Time Current | |
| Dload Upload Total Spent Left Speed | |
| 100 7113 100 7113 0 0 157k 0 --:--:-- --:--:-- --:--:-- 157k | |
| ["v1","apiVersion"] | |
| ["Namespace","kind"] | |
| ["kubernetes-dashboard","name","metadata"] | |
| ["v1","apiVersion"] | |
| ["ServiceAccount","kind"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata"] | |
| ["kubernetes-dashboard","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| ["Service","kind"] | |
| ["v1","apiVersion"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata"] | |
| ["kubernetes-dashboard","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| [80,"port",0,"ports","spec"] | |
| [9090,"targetPort",0,"ports","spec"] | |
| ["kubernetes-dashboard","k8s-app","selector","spec"] | |
| ["v1","apiVersion"] | |
| ["Secret","kind"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata"] | |
| ["kubernetes-dashboard-csrf","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| ["Opaque","type"] | |
| ["","csrf","data"] | |
| ["v1","apiVersion"] | |
| ["Secret","kind"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata"] | |
| ["kubernetes-dashboard-key-holder","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| ["Opaque","type"] | |
| ["ConfigMap","kind"] | |
| ["v1","apiVersion"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata"] | |
| ["kubernetes-dashboard-settings","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| ["Role","kind"] | |
| ["rbac.authorization.k8s.io/v1","apiVersion"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata"] | |
| ["kubernetes-dashboard","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| ["",0,"apiGroups",0,"rules"] | |
| ["secrets",0,"resources",0,"rules"] | |
| ["kubernetes-dashboard-key-holder",0,"resourceNames",0,"rules"] | |
| ["kubernetes-dashboard-certs",1,"resourceNames",0,"rules"] | |
| ["kubernetes-dashboard-csrf",2,"resourceNames",0,"rules"] | |
| ["get",0,"verbs",0,"rules"] | |
| ["update",1,"verbs",0,"rules"] | |
| ["delete",2,"verbs",0,"rules"] | |
| ["",0,"apiGroups",1,"rules"] | |
| ["configmaps",0,"resources",1,"rules"] | |
| ["kubernetes-dashboard-settings",0,"resourceNames",1,"rules"] | |
| ["get",0,"verbs",1,"rules"] | |
| ["update",1,"verbs",1,"rules"] | |
| ["",0,"apiGroups",2,"rules"] | |
| ["services",0,"resources",2,"rules"] | |
| ["heapster",0,"resourceNames",2,"rules"] | |
| ["dashboard-metrics-scraper",1,"resourceNames",2,"rules"] | |
| ["proxy",0,"verbs",2,"rules"] | |
| ["",0,"apiGroups",3,"rules"] | |
| ["services/proxy",0,"resources",3,"rules"] | |
| ["heapster",0,"resourceNames",3,"rules"] | |
| ["http:heapster:",1,"resourceNames",3,"rules"] | |
| ["https:heapster:",2,"resourceNames",3,"rules"] | |
| ["dashboard-metrics-scraper",3,"resourceNames",3,"rules"] | |
| ["http:dashboard-metrics-scraper",4,"resourceNames",3,"rules"] | |
| ["get",0,"verbs",3,"rules"] | |
| ["ClusterRole","kind"] | |
| ["rbac.authorization.k8s.io/v1","apiVersion"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata"] | |
| ["kubernetes-dashboard","name","metadata"] | |
| ["metrics.k8s.io",0,"apiGroups",0,"rules"] | |
| ["pods",0,"resources",0,"rules"] | |
| ["nodes",1,"resources",0,"rules"] | |
| ["get",0,"verbs",0,"rules"] | |
| ["list",1,"verbs",0,"rules"] | |
| ["watch",2,"verbs",0,"rules"] | |
| ["rbac.authorization.k8s.io/v1","apiVersion"] | |
| ["RoleBinding","kind"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata"] | |
| ["kubernetes-dashboard","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| ["rbac.authorization.k8s.io","apiGroup","roleRef"] | |
| ["Role","kind","roleRef"] | |
| ["kubernetes-dashboard","name","roleRef"] | |
| ["ServiceAccount","kind",0,"subjects"] | |
| ["kubernetes-dashboard","name",0,"subjects"] | |
| ["kubernetes-dashboard","namespace",0,"subjects"] | |
| ["rbac.authorization.k8s.io/v1","apiVersion"] | |
| ["ClusterRoleBinding","kind"] | |
| ["kubernetes-dashboard","name","metadata"] | |
| ["rbac.authorization.k8s.io","apiGroup","roleRef"] | |
| ["ClusterRole","kind","roleRef"] | |
| ["kubernetes-dashboard","name","roleRef"] | |
| ["ServiceAccount","kind",0,"subjects"] | |
| ["kubernetes-dashboard","name",0,"subjects"] | |
| ["kubernetes-dashboard","namespace",0,"subjects"] | |
| ["Deployment","kind"] | |
| ["apps/v1","apiVersion"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata"] | |
| ["kubernetes-dashboard","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| [1,"replicas","spec"] | |
| [10,"revisionHistoryLimit","spec"] | |
| ["kubernetes-dashboard","k8s-app","matchLabels","selector","spec"] | |
| ["kubernetes-dashboard","k8s-app","labels","metadata","template","spec"] | |
| ["kubernetes-dashboard","name",0,"containers","spec","template","spec"] | |
| ["kubernetesui/dashboard:v2.0.4","image",0,"containers","spec","template","spec"] | |
| [9090,"containerPort",0,"ports",0,"containers","spec","template","spec"] | |
| ["TCP","protocol",0,"ports",0,"containers","spec","template","spec"] | |
| ["--namespace=kubernetes-dashboard",0,"args",0,"containers","spec","template","spec"] | |
| ["--enable-insecure-login",1,"args",0,"containers","spec","template","spec"] | |
| ["/tmp","mountPath",0,"volumeMounts",0,"containers","spec","template","spec"] | |
| ["tmp-volume","name",0,"volumeMounts",0,"containers","spec","template","spec"] | |
| ["/","path","httpGet","livenessProbe",0,"containers","spec","template","spec"] | |
| [9090,"port","httpGet","livenessProbe",0,"containers","spec","template","spec"] | |
| [30,"initialDelaySeconds","livenessProbe",0,"containers","spec","template","spec"] | |
| [30,"timeoutSeconds","livenessProbe",0,"containers","spec","template","spec"] | |
| [true,"readOnlyRootFilesystem","securityContext",0,"containers","spec","template","spec"] | |
| [1001,"runAsUser","securityContext",0,"containers","spec","template","spec"] | |
| [2001,"runAsGroup","securityContext",0,"containers","spec","template","spec"] | |
| ["tmp-volume","name",0,"volumes","spec","template","spec"] | |
| ["kubernetes-dashboard","serviceAccountName","spec","template","spec"] | |
| ["linux","kubernetes.io/os","nodeSelector","spec","template","spec"] | |
| ["node-role.kubernetes.io/master","key",0,"tolerations","spec","template","spec"] | |
| ["NoSchedule","effect",0,"tolerations","spec","template","spec"] | |
| ["Service","kind"] | |
| ["v1","apiVersion"] | |
| ["dashboard-metrics-scraper","k8s-app","labels","metadata"] | |
| ["dashboard-metrics-scraper","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| [8000,"port",0,"ports","spec"] | |
| [8000,"targetPort",0,"ports","spec"] | |
| ["dashboard-metrics-scraper","k8s-app","selector","spec"] | |
| ["Deployment","kind"] | |
| ["apps/v1","apiVersion"] | |
| ["dashboard-metrics-scraper","k8s-app","labels","metadata"] | |
| ["dashboard-metrics-scraper","name","metadata"] | |
| ["kubernetes-dashboard","namespace","metadata"] | |
| [1,"replicas","spec"] | |
| [10,"revisionHistoryLimit","spec"] | |
| ["dashboard-metrics-scraper","k8s-app","matchLabels","selector","spec"] | |
| ["dashboard-metrics-scraper","k8s-app","labels","metadata","template","spec"] | |
| ["runtime/default","seccomp.security.alpha.kubernetes.io/pod","annotations","metadata","template","spec"] | |
| ["dashboard-metrics-scraper","name",0,"containers","spec","template","spec"] | |
| ["kubernetesui/metrics-scraper:v1.0.4","image",0,"containers","spec","template","spec"] | |
| [8000,"containerPort",0,"ports",0,"containers","spec","template","spec"] | |
| ["TCP","protocol",0,"ports",0,"containers","spec","template","spec"] | |
| ["HTTP","scheme","httpGet","livenessProbe",0,"containers","spec","template","spec"] | |
| ["/","path","httpGet","livenessProbe",0,"containers","spec","template","spec"] | |
| [8000,"port","httpGet","livenessProbe",0,"containers","spec","template","spec"] | |
| [30,"initialDelaySeconds","livenessProbe",0,"containers","spec","template","spec"] | |
| [30,"timeoutSeconds","livenessProbe",0,"containers","spec","template","spec"] | |
| ["/tmp","mountPath",0,"volumeMounts",0,"containers","spec","template","spec"] | |
| ["tmp-volume","name",0,"volumeMounts",0,"containers","spec","template","spec"] | |
| [true,"readOnlyRootFilesystem","securityContext",0,"containers","spec","template","spec"] | |
| [1001,"runAsUser","securityContext",0,"containers","spec","template","spec"] | |
| [2001,"runAsGroup","securityContext",0,"containers","spec","template","spec"] | |
| ["kubernetes-dashboard","serviceAccountName","spec","template","spec"] | |
| ["linux","kubernetes.io/os","nodeSelector","spec","template","spec"] | |
| ["node-role.kubernetes.io/master","key",0,"tolerations","spec","template","spec"] | |
| ["NoSchedule","effect",0,"tolerations","spec","template","spec"] | |
| ["tmp-volume","name",0,"volumes","spec","template","spec"] |
Author
Author
'paths(scalars) as $p | [$p, getpath($p)] | flatten' could be more useful.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
see jqlang/jq#78 (comment)