From bf71dce60cd25cf6c0d0bb67f1225e72ff1d917d Mon Sep 17 00:00:00 2001 From: guoxudong Date: Fri, 15 May 2020 14:24:34 +0800 Subject: [PATCH 01/50] add zh docs plugins-builtions.md --- docs/zh/fields.md | 32 +- docs/zh/plugins-builtins.md | 656 ++++++++++++++++++++++++++++++++++++ 2 files changed, 672 insertions(+), 16 deletions(-) create mode 100644 docs/zh/plugins-builtins.md diff --git a/docs/zh/fields.md b/docs/zh/fields.md index ab81179bf..6cebdb173 100644 --- a/docs/zh/fields.md +++ b/docs/zh/fields.md @@ -1,18 +1,18 @@ # Kustomization 文件字段 -[field-name-namespace]: ../plugins/builtins.md#field-name-namespace -[field-name-images]: ../plugins/builtins.md#field-name-images -[field-names-namePrefix-nameSuffix]: ../plugins/builtins.md#field-names-namePrefix-nameSuffix -[field-name-patches]: ../plugins/builtins.md#field-name-patches -[field-name-patchesStrategicMerge]: ../plugins/builtins.md#field-name-patchesStrategicMerge -[field-name-patchesJson6902]: ../plugins/builtins.md#field-name-patchesJson6902 -[field-name-replicas]: ../plugins/builtins.md#field-name-replicas -[field-name-secretGenerator]: ../plugins/builtins.md#field-name-secretGenerator -[field-name-commonLabels]: ../plugins/builtins.md#field-name-commonLabels -[field-name-commonAnnotations]: ../plugins/builtins.md#field-name-commonAnnotations -[field-name-configMapGenerator]: ../plugins/builtins.md#field-name-configMapGenerator +[field-name-namespace]: plugins-builtins.md#字段名称namespace +[field-name-images]: plugins-builtins.md#字段名称images +[field-names-namePrefix-nameSuffix]: plugins-builtins.md#字段名称namePrefix-nameSuffix +[field-name-patches]: plugins-builtins.md#字段名称patches +[field-name-patchesStrategicMerge]: plugins-builtins.md#字段名称patchesStrategicMerge +[field-name-patchesJson6902]: plugins-builtins.md#字段名称patchesJson6902 +[field-name-replicas]: plugins-builtins.md#字段名称replicas +[field-name-secretGenerator]: plugins-builtins.md#字段名称secretGenerator +[field-name-commonLabels]: plugins-builtins.md#字段名称commonLabels +[field-name-commonAnnotations]: plugins-builtins.md#字段名称commonAnnotations +[field-name-configMapGenerator]: plugins-builtins.md#字段名称configMapGenerator -介绍 [kustomization.yaml](../glossary.md#kustomization) 配置文件中各字段的含义。 +介绍 [kustomization.yaml](glossary.md#kustomization) 配置文件中各字段的含义。 ## Resources @@ -32,7 +32,7 @@ |[configMapGenerator](#configmapgenerator)| list | 列表中的每个条目都将生成一个 ConfigMap (合计可以生成 n 个 ConfigMap)。 | |[secretGenerator](#secretgenerator)| list | 列表中的每个条目都将生成一个 Secret(合计可以生成 n 个 Secrets)。 | |[generatorOptions](#generatoroptions)| string | generatorOptions 可以修改所有 ConfigMapGenerator 和 SecretGenerator 的行为。 | -|[generators](#generators)| list | [插件](../plugins)配置文件。 | +|[generators](#generators)| list | [插件](plugins.md)配置文件。 | ## Transformers @@ -50,7 +50,7 @@ | [replicas](#replicas) | list | 修改资源的副本数。 | | [patchesStrategicMerge](#patchesstrategicmerge) | list | 此列表中的每个条目都应可以解析为部分或完整的资源定义文件。 | | [patchesJson6902](#patchesjson6902) | list | 列表中的每个条目都应可以解析为 Kubernetes 对象和将应用于该对象的 JSON patch 。 | -| [transformers](#transformers) | list | [插件](../plugins)配置文件。 | +| [transformers](#transformers) | list | [插件](plugins.md)配置文件。 | ## Meta @@ -135,7 +135,7 @@ generatorOptions: ### generators -[插件](../plugins)生成器配置文件列表。 +[插件](plugins.md)生成器配置文件列表。 ``` generators: @@ -149,7 +149,7 @@ generators: ### inventory -详见 [inventory object](inventory_object.md)。 +详见 [inventory object](../inventory_object.md)。 ### kind diff --git a/docs/zh/plugins-builtins.md b/docs/zh/plugins-builtins.md new file mode 100644 index 000000000..94b19213b --- /dev/null +++ b/docs/zh/plugins-builtins.md @@ -0,0 +1,656 @@ + + +# 内置插件 + +内置插件包括生成器和转化器。 + +每个插件都可以通过如下两种方式触发: + +* 通过 kustomization 文件的字段隐式触发插件,例如 `AnnotationsTransformer` 就是由 `commonAnnotations` 字段触发的。 + +* 通过 `generators` 或 `transformers` 字段显示触发插件(通过指定插件的配置文件)。 + +前一种方法比较方便,但功能有限,因为大多数插件参数都必须是默认的,而后一种方法允许传入完整的插件参数。 + + +[types.GeneratorOptions]: ../../api/types/generatoroptions.go +[types.SecretArgs]: ../../api/types/secretargs.go +[types.ConfigMapArgs]: ../../api/types/configmapargs.go +[config.FieldSpec]: ../../api/types/fieldspec.go +[types.ObjectMeta]: ../../api/types/objectmeta.go +[types.Selector]: ../../api/types/selector.go +[types.Replica]: ../../api/types/replica.go +[types.PatchStrategicMerge]: ../../api/types/patchstrategicmerge.go +[types.PatchTarget]: ../../api/types/patchtarget.go +[image.Image]: ../../api/types/image.go + +## _AnnotationTransformer_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`commonAnnotations` + +为所有资源添加注释,和标签一样以 key: value 的形式。 + +``` +commonAnnotations: + oncallPager: 800-555-1212 +``` + +### 使用插件 + +#### Arguments + +> Annotations map\[string\]string +> +> FieldSpecs \[\][config.FieldSpec] + +#### Example +> ``` +> apiVersion: builtin +> kind: AnnotationsTransformer +> metadata: +> name: not-important-to-example +> annotations: +> app: myApp +> greeting/morning: a string with blanks +> fieldSpecs: +> - path: metadata/annotations +> create: true +> ``` + + + +## _ConfigMapGenerator_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`configMapGenerator` + +列表中的每个条目都将生成一个 ConfigMap (合计可以生成 n 个 ConfigMap)。 + +下面的示例会生成 3 个ConfigMap:第一个带有给定文件的名称和内容,第二个将在 data 中添加 key/value,第三个通过 `options` 为单个 ConfigMap 设置注释和标签。 + +每个 configMapGenerator 项均接受的参数 `behavior: [create|replace|merge]`,这个参数允许修改或替换父级现有的 configMap。 + +此外,每个条目都有一个 `options` 字段,该字段具有与 kustomization 文件的 `generatorOptions` 字段相同的子字段。 + +`options` 字段允许用户为生成的实例添加标签和(或)注释,或者分别禁用该实例名称的哈希后缀。此处添加的标签和注释不会被 kustomization 文件 `generatorOptions` 字段关联的全局选项覆盖。但是如果全局 `generatorOptions` 字段指定 `disableNameSuffixHash: true`,其他 `options` 的设置将无法将其覆盖。 + +``` +# 这个标签将添加到所有的 ConfigMap 和 Secret 中。 +generatorOptions: + labels: + fruit: apple + +configMapGenerator: +- name: my-java-server-props + behavior: merge + files: + - application.properties + - more.properties +- name: my-java-server-env-vars + literals: + - JAVA_HOME=/opt/java/jdk + - JAVA_TOOL_OPTIONS=-agentlib:hprof + options: + disableNameSuffixHash: true + labels: + pet: dog +- name: dashboards + files: + - mydashboard.json + options: + annotations: + dashboard: "1" + labels: + app.kubernetes.io/name: "app1" +``` + +这里也可以[定义一个 key](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-the-key-to-use-when-creating-a-configmap-from-a-file) 来为文件设置不同名称。 + +下面这个示例会创建一个 ConfigMap,并将 `whatever.ini` 重命名为 `myFileName.ini`: + +``` +configMapGenerator: +- name: app-whatever + files: + - myFileName.ini=whatever.ini +``` + +### 使用插件 + +#### Arguments + +> [types.ConfigMapArgs] + +#### Example +> ``` +> apiVersion: builtin +> kind: ConfigMapGenerator +> metadata: +> name: mymap +> envs: +> - devops.env +> - uxteam.env +> literals: +> - FRUIT=apple +> - VEGETABLE=carrot +> ``` + + +## _ImageTagTransformer_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`images` + +修改镜像的名称、tag 或 image digest ,而无需使用 patches 。例如,对于这种 kubernetes Deployment 片段: + +``` +containers: +- name: mypostgresdb + image: postgres:8 +- name: nginxapp + image: nginx:1.7.9 +- name: myapp + image: my-demo-app:latest +- name: alpine-app + image: alpine:3.7 +``` + +想要将 `image` 做如下更改: + + - 将 `postgres:8` 改为 `my-registry/my-postgres:v1` + - 将 nginx tag 从 `1.7.9` 改为 `1.8.0` + - 将镜像名称 `my-demo-app` 改为 `my-app` + - 将 alpine 的 tag `3.7` 改为 digest 值 + +只需在 *kustomization* 中添加以下内容: + +``` +images: +- name: postgres + newName: my-registry/my-postgres + newTag: v1 +- name: nginx + newTag: 1.8.0 +- name: my-demo-app + newName: my-app +- name: alpine + digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3 +``` + +### 使用插件 + +#### Arguments + +> ImageTag [image.Image] +> +> FieldSpecs \[\][config.FieldSpec] + +#### Example +> ``` +> apiVersion: builtin +> kind: ImageTagTransformer +> metadata: +> name: not-important-to-example +> imageTag: +> name: nginx +> newTag: v2 +> ``` + +## _LabelTransformer_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`commonLabels` + +为所有资源和 selectors 增加标签。 + +``` +commonLabels: + someName: someValue + owner: alice + app: bingo +``` + +### 使用插件 + +#### Arguments + +> Labels map\[string\]string +> +> FieldSpecs \[\][config.FieldSpec] + +#### Example +> ``` +> apiVersion: builtin +> kind: LabelTransformer +> metadata: +> name: not-important-to-example +> labels: +> app: myApp +> env: production +> fieldSpecs: +> - path: metadata/labels +> create: true +> ``` + + +## _NamespaceTransformer_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`namespace` + +为所有资源添加 namespace。 + +``` +namespace: my-namespace +``` + +### 使用插件 + +#### Arguments + +> [types.ObjectMeta] +> +> FieldSpecs \[\][config.FieldSpec] + +#### Example +> ``` +> apiVersion: builtin +> kind: NamespaceTransformer +> metadata: +> name: not-important-to-example +> namespace: test +> fieldSpecs: +> - path: metadata/namespace +> create: true +> - path: subjects +> kind: RoleBinding +> group: rbac.authorization.k8s.io +> - path: subjects +> kind: ClusterRoleBinding +> group: rbac.authorization.k8s.io +> ``` + +## _PatchesJson6902_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`patchesJson6902` + +patchesJson6902 列表中的每个条目都应可以解析为 kubernetes 对象和将应用于该对象的 JSON patch。 + +JSON patch 的文档地址:https://tools.ietf.org/html/rfc6902 + +目标字段指向的 kubernetes 对象的 group、 version、 kind、 name 和 namespace 在同一 kustomization 内 path 字段内容是 JSON patch 文件的相对路径。 + +patch 文件中的内容可以如下这种 JSON 格式: + +``` + [ + {"op": "add", "path": "/some/new/path", "value": "value"}, + {"op": "replace", "path": "/some/existing/path", "value": "new value"} + ] + ``` + +也可以使用 YAML 格式表示: + +``` +- op: add + path: /some/new/path + value: value +- op: replace + path: /some/existing/path + value: new value +``` + +``` +patchesJson6902: +- target: + version: v1 + kind: Deployment + name: my-deployment + path: add_init_container.yaml +- target: + version: v1 + kind: Service + name: my-service + path: add_service_annotation.yaml +``` + +patch 内容也可以是一个inline string: + +``` +patchesJson6902: +- target: + version: v1 + kind: Deployment + name: my-deployment + patch: |- + - op: add + path: /some/new/path + value: value + - op: replace + path: /some/existing/path + value: "new value" +``` + +### 使用插件 + +#### Arguments +> Target [types.PatchTarget] +> +> Path string +> +> JsonOp string + +#### Example +> ``` +> apiVersion: builtin +> kind: PatchJson6902Transformer +> metadata: +> name: not-important-to-example +> target: +> group: apps +> version: v1 +> kind: Deployment +> name: my-deploy +> path: jsonpatch.json +> ``` + + +## _PatchesStrategicMerge_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`patchesStrategicMerge` + +此列表中的每个条目都应可以解析为部分或完整的资源定义文件。 + +这些(也可能是部分的)资源文件中的 name 必须与已经通过 `resources` 加载的 name 字段匹配,或者通过 `bases` 中的 name 字段匹配。这些条目将用于 _patch_(修改)已知资源。 + +推荐使用小的 patches,例如:修改内存的 request/limit,更改 ConfigMap 中的 env 变量等。小的 patches 易于维护和查看,并且易于在 overlays 中混合使用。 + +``` +patchesStrategicMerge: +- service_port_8888.yaml +- deployment_increase_replicas.yaml +- deployment_increase_memory.yaml +``` + +patch 内容也可以是一个inline string: + +``` +patchesStrategicMerge: +- |- + apiVersion: apps/v1 + kind: Deployment + metadata: + name: nginx + spec: + template: + spec: + containers: + - name: nginx + image: nignx:latest +``` + +请注意,kustomize 不支持同一个 patch 对象中包含多个 _删除_ 指令。要从一个对象中删除多个字段或切片元素,需要创建一个单独的 patch,以执行所有需要的删除。 + +### 使用插件 + +#### Arguments + +> Paths \[\][types.PatchStrategicMerge] +> +> Patches string + + +#### Example +> ``` +> apiVersion: builtin +> kind: PatchStrategicMergeTransformer +> metadata: +> name: not-important-to-example +> paths: +> - patch.yaml +> ``` + + +## _PatchTransformer_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`patches` + +这个列表中的每个条目应该解析到一个 Patch 对象,其中包括一个 patch 和一个目标选择器。patch 可以是策略合并 patch 或JSON patch,也可以是 patch 文件或 inline string。目标选择器可以通过 group、version、kind、name、namespace、标签选择器和注释选择器来选择资源,选择一个匹配所有指定字段的资源来应用 patch。 + +``` +patches: +- path: patch.yaml + target: + group: apps + version: v1 + kind: Deployment + name: deploy.* + labelSelector: "env=dev" + annotationSelector: "zone=west" +- patch: |- + - op: replace + path: /some/existing/path + value: new value + target: + kind: MyKind + labelSelector: "env=dev" +``` + +The `name` and `namespace` fields of the patch target selector are +automatically anchored regular expressions. This means that the value `myapp` +is equivalent to `^myapp$`. + +### 使用插件 + +#### Arguments + +> Path string +> +> Patch string +> +> Target \*[types.Selector] + +#### Example +> ``` +> apiVersion: builtin +> kind: PatchTransformer +> metadata: +> name: not-important-to-example +> patch: '[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value": "nginx:latest"}]' +> target: +> name: .*Deploy +> kind: Deployment +> ``` + +## _PrefixSuffixTransformer_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`namePrefix`, `nameSuffix` + +为所有资源的名称添加前缀或后缀。 + +例如:将 deployment 名称从 `wordpress` 变为 `alices-wordpress` 或 `wordpress-v2` 或 `alices-wordpress-v2`。 + +``` +namePrefix: alices- +nameSuffix: -v2 +``` + +如果资源类型是 ConfigMap 或 Secret,则在哈希值之前添加后缀。 + +### 使用插件 + +#### Arguments + +> Prefix string +> +> Suffix string +> +> FieldSpecs \[\][config.FieldSpec] + +#### Example + +> ``` +> apiVersion: builtin +> kind: PrefixSuffixTransformer +> metadata: +> name: not-important-to-example +> prefix: baked- +> suffix: -pie +> fieldSpecs: +> - path: metadata/name +> ``` + + +## _ReplicaCountTransformer_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`replicas` + +修改资源的副本数。 + +例如:对于如下 kubernetes Deployment 片段: + +``` +kind: Deployment +metadata: + name: deployment-name +spec: + replicas: 3 +``` + +在 kustomization 中添加以下内容,将副本数更改为 5: + +``` +replicas: +- name: deployment-name + count: 5 +``` + +该字段内容为列表,所以可以同时修改许多资源。 + +由于这个声明无法设置 `kind:` 或 `group:`,所以他只能匹配如下资源中的一种: +- `Deployment` +- `ReplicationController` +- `ReplicaSet` +- `StatefulSet` + +对于更复杂的用例,请使用 patch 。 + +### 使用插件 + +#### Arguments + +> Replica [types.Replica] +> +> FieldSpecs \[\][config.FieldSpec] + +#### Example + +> ``` +> apiVersion: builtin +> kind: ReplicaCountTransformer +> metadata: +> name: not-important-to-example +> replica: +> name: myapp +> count: 23 +> fieldSpecs: +> - path: spec/replicas +> create: true +> kind: Deployment +> - path: spec/replicas +> create: true +> kind: ReplicationController +> ``` + +## _SecretGenerator_ + +### 使用 `kustomization.yaml` + +#### 字段名称:`secretGenerator` + +列表中的每个条目都将生成一个 Secret(合计可以生成 n 个 Secrets)。 + +功能与之前描述的 `configMapGenerator` 字段类似。 + +``` +secretGenerator: +- name: app-tls + files: + - secret/tls.cert + - secret/tls.key + type: "kubernetes.io/tls" +- name: app-tls-namespaced + # you can define a namespace to generate + # a secret in, defaults to: "default" + namespace: apps + files: + - tls.crt=catsecret/tls.cert + - tls.key=secret/tls.key + type: "kubernetes.io/tls" +- name: env_file_secret + envs: + - env.txt + type: Opaque +- name: secret-with-annotation + files: + - app-config.yaml + type: Opaque + options: + annotations: + app_config: "true" + labels: + app.kubernetes.io/name: "app2" +``` + +### 使用插件 + +#### Arguments + +> [types.ObjectMeta] +> +> [types.SecretArgs] + +#### Example + +> ``` +> apiVersion: builtin +> kind: SecretGenerator +> metadata: +> name: my-secret +> namespace: whatever +> behavior: merge +> envs: +> - a.env +> - b.env +> files: +> - obscure=longsecret.txt +> literals: +> - FRUIT=apple +> - VEGETABLE=carrot +> ``` From 7bae481252f4a9bc87db751ee6de6086b37b3618 Mon Sep 17 00:00:00 2001 From: guoxudong Date: Tue, 19 May 2020 10:19:59 +0800 Subject: [PATCH 02/50] fix --- docs/zh/plugins-builtins.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/zh/plugins-builtins.md b/docs/zh/plugins-builtins.md index 94b19213b..f51339c6e 100644 --- a/docs/zh/plugins-builtins.md +++ b/docs/zh/plugins-builtins.md @@ -18,7 +18,7 @@ * 通过 kustomization 文件的字段隐式触发插件,例如 `AnnotationsTransformer` 就是由 `commonAnnotations` 字段触发的。 -* 通过 `generators` 或 `transformers` 字段显示触发插件(通过指定插件的配置文件)。 +* 通过 `generators` 或 `transformers` 字段显式触发插件(通过指定插件的配置文件)。 前一种方法比较方便,但功能有限,因为大多数插件参数都必须是默认的,而后一种方法允许传入完整的插件参数。 @@ -292,9 +292,7 @@ namespace: my-namespace #### 字段名称:`patchesJson6902` -patchesJson6902 列表中的每个条目都应可以解析为 kubernetes 对象和将应用于该对象的 JSON patch。 - -JSON patch 的文档地址:https://tools.ietf.org/html/rfc6902 +patchesJson6902 列表中的每个条目都应可以解析为 kubernetes 对象和将应用于该对象的 [JSON patch](https://tools.ietf.org/html/rfc6902)。 目标字段指向的 kubernetes 对象的 group、 version、 kind、 name 和 namespace 在同一 kustomization 内 path 字段内容是 JSON patch 文件的相对路径。 @@ -379,7 +377,7 @@ patchesJson6902: #### 字段名称:`patchesStrategicMerge` -此列表中的每个条目都应可以解析为部分或完整的资源定义文件。 +此列表中的每个条目都应可以解析为 [StrategicMergePatch](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md). 这些(也可能是部分的)资源文件中的 name 必须与已经通过 `resources` 加载的 name 字段匹配,或者通过 `bases` 中的 name 字段匹配。这些条目将用于 _patch_(修改)已知资源。 @@ -437,7 +435,7 @@ patchesStrategicMerge: #### 字段名称:`patches` -这个列表中的每个条目应该解析到一个 Patch 对象,其中包括一个 patch 和一个目标选择器。patch 可以是策略合并 patch 或JSON patch,也可以是 patch 文件或 inline string。目标选择器可以通过 group、version、kind、name、namespace、标签选择器和注释选择器来选择资源,选择一个匹配所有指定字段的资源来应用 patch。 +这个列表中的每个条目应该解析到一个 Patch 对象,其中包括一个 patch 和一个目标选择器。patch 可以是 Strategic Merge Patch 或 JSON patch,也可以是 patch 文件或 inline string。目标选择器可以通过 group、version、kind、name、namespace、标签选择器和注释选择器来选择资源,选择一个或多个匹配所有指定字段的资源来应用 patch。 ``` patches: From 59f8f4ae14d9fde267e0299e27fe801b77a621e4 Mon Sep 17 00:00:00 2001 From: guoxudong Date: Wed, 20 May 2020 09:25:31 +0800 Subject: [PATCH 03/50] fix --- docs/zh/plugins-builtins.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/zh/plugins-builtins.md b/docs/zh/plugins-builtins.md index f51339c6e..3afb2fa06 100644 --- a/docs/zh/plugins-builtins.md +++ b/docs/zh/plugins-builtins.md @@ -20,8 +20,7 @@ * 通过 `generators` 或 `transformers` 字段显式触发插件(通过指定插件的配置文件)。 -前一种方法比较方便,但功能有限,因为大多数插件参数都必须是默认的,而后一种方法允许传入完整的插件参数。 - +直接使用 `kustomization.yaml` 文件中的字段比如 `commonLables`、`commonAnnotation` 他们可以修改一些默认的字段,如果用户想要添加或减少能被 `commonLabel` 所修改的字段,则不是很容易做到;而使用 `transformers` 的话,用户可以指定哪些字段能被修改,而不受默认值的影响。 [types.GeneratorOptions]: ../../api/types/generatoroptions.go [types.SecretArgs]: ../../api/types/secretargs.go From cd3b87e483a788f05baf051b1edeb2807f5fa5a5 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Thu, 14 May 2020 13:51:35 -0700 Subject: [PATCH 04/50] Basic structure of releasing program --- releasing/releasing/go.mod | 8 ++ releasing/releasing/go.sum | 127 +++++++++++++++++++++++++++++++ releasing/releasing/releasing.go | 87 +++++++++++++++++++++ 3 files changed, 222 insertions(+) create mode 100644 releasing/releasing/go.mod create mode 100644 releasing/releasing/go.sum create mode 100644 releasing/releasing/releasing.go diff --git a/releasing/releasing/go.mod b/releasing/releasing/go.mod new file mode 100644 index 000000000..195063de6 --- /dev/null +++ b/releasing/releasing/go.mod @@ -0,0 +1,8 @@ +module sigs.k8s.io/kustomize/releasing + +go 1.13 + +require ( + github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b + github.com/spf13/cobra v1.0.0 +) diff --git a/releasing/releasing/go.sum b/releasing/releasing/go.sum new file mode 100644 index 000000000..6cf129d9c --- /dev/null +++ b/releasing/releasing/go.sum @@ -0,0 +1,127 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/releasing/releasing/releasing.go b/releasing/releasing/releasing.go new file mode 100644 index 000000000..63de6c4d6 --- /dev/null +++ b/releasing/releasing/releasing.go @@ -0,0 +1,87 @@ +package main + +import ( + "fmt" + "log" + + "github.com/spf13/cobra" +) + +var modules = [...]string{ + "kyaml", "api", "kstatus", "cmd/config", + "cmd/resource", "cmd/kubectl", "pluginator", "kustomize", +} +var verbose bool + +// === Log helper functions === +func logDebug(s string) { + if verbose { + log.Println("DEBUG " + s) + } +} + +func logInfo(s string) { + log.Println("INFO " + s) +} + +func logFatal(s string) { + log.Fatalln("FATAL " + s) +} + +var rootCmd = &cobra.Command{ + Use: "releasing", + Short: "This go program is used to improve the modules releasing process in Kustomize repository.", +} + +var listSubCmd = &cobra.Command{ + Use: "list", + Short: "List current version of all covered modules", + Run: func(cmd *cobra.Command, args []string) { + res := []string{} + for _, mod := range modules { + res = append(res, fmt.Sprintf("%s/%s", mod, getModuleCurrentVersion(mod))) + } + for _, l := range res { + fmt.Println(l) + } + }, +} + +var subCmds = [...]*cobra.Command{ + listSubCmd, +} + +func main() { + for _, cmd := range subCmds { + rootCmd.AddCommand(cmd) + } + rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose output") + + if err := rootCmd.Execute(); err != nil { + logFatal(err.Error()) + } +} + +func getModuleCurrentVersion(modName string) string { + mod := newModule(modName) + mod.updateCurrentVersion() + return mod.currentVersion +} + +type module struct { + name string + path string + currentVersion string +} + +func newModule(modName string) module { + mod := module{ + name: modName, + } + logDebug(fmt.Sprintf("Created module struct for %s", modName)) + return mod +} + +func (m *module) updateCurrentVersion() { + m.currentVersion = "v1.0.0" +} From 0b12f6c73d2b1ee373c1df489e273489af501da0 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Thu, 14 May 2020 14:14:57 -0700 Subject: [PATCH 05/50] Add test --- releasing/releasing/releasing_test.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 releasing/releasing/releasing_test.go diff --git a/releasing/releasing/releasing_test.go b/releasing/releasing/releasing_test.go new file mode 100644 index 000000000..6f954e225 --- /dev/null +++ b/releasing/releasing/releasing_test.go @@ -0,0 +1,12 @@ +package main + +import ( + "testing" +) + +func TestGetModuleCurrentVersion(t *testing.T) { + output := getModuleCurrentVersion("test") + if output != "v1.0.0" { + t.Errorf("Unexpected output: %s", output) + } +} From 32ed552ea6fe293c93221a4ac1666c3b4de58ddc Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Mon, 18 May 2020 11:42:53 -0700 Subject: [PATCH 06/50] List latest versions --- releasing/releasing/go.sum | 13 ++ releasing/releasing/releasing.go | 197 +++++++++++++++++++++++--- releasing/releasing/releasing_test.go | 24 +++- 3 files changed, 215 insertions(+), 19 deletions(-) diff --git a/releasing/releasing/go.sum b/releasing/releasing/go.sum index 6cf129d9c..3585e1894 100644 --- a/releasing/releasing/go.sum +++ b/releasing/releasing/go.sum @@ -17,6 +17,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -37,6 +38,7 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -48,12 +50,16 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -72,13 +78,17 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -107,7 +117,9 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -123,5 +135,6 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/releasing/releasing/releasing.go b/releasing/releasing/releasing.go index 63de6c4d6..462b61a88 100644 --- a/releasing/releasing/releasing.go +++ b/releasing/releasing/releasing.go @@ -1,8 +1,16 @@ package main import ( + "bytes" "fmt" + "io/ioutil" "log" + "os" + "os/exec" + "regexp" + "sort" + "strconv" + "strings" "github.com/spf13/cobra" ) @@ -11,23 +19,28 @@ var modules = [...]string{ "kyaml", "api", "kstatus", "cmd/config", "cmd/resource", "cmd/kubectl", "pluginator", "kustomize", } -var verbose bool +var verbose bool // Enable verbose or not +var tempDir string // Temporary directory path for git worktree +var pwd string // Current working directory // === Log helper functions === -func logDebug(s string) { + +func logDebug(format string, v ...interface{}) { if verbose { - log.Println("DEBUG " + s) + log.Printf("DEBUG "+format, v...) } } -func logInfo(s string) { - log.Println("INFO " + s) +func logInfo(format string, v ...interface{}) { + log.Printf("INFO "+format, v...) } -func logFatal(s string) { - log.Fatalln("FATAL " + s) +func logFatal(format string, v ...interface{}) { + log.Fatalf("FATAL "+format, v...) } +// === Command line commands === + var rootCmd = &cobra.Command{ Use: "releasing", Short: "This go program is used to improve the modules releasing process in Kustomize repository.", @@ -37,7 +50,18 @@ var listSubCmd = &cobra.Command{ Use: "list", Short: "List current version of all covered modules", Run: func(cmd *cobra.Command, args []string) { - res := []string{} + var err error + pwd, err = os.Getwd() + if err != nil { + logFatal(err.Error()) + } + logDebug("Working directory: %s", pwd) + remote := "upstream" + // Check remotes + checkRemoteExistence(pwd, remote) + // Fetch latest tags from remote + fetchTags(pwd, remote) + res := []string{} // Store result strings for _, mod := range modules { res = append(res, fmt.Sprintf("%s/%s", mod, getModuleCurrentVersion(mod))) } @@ -47,10 +71,29 @@ var listSubCmd = &cobra.Command{ }, } +var release = &cobra.Command{ + Use: "release", + Short: "Release a new version of specified module", + PreRun: func(cmd *cobra.Command, args []string) { + logDebug("Preparing Git environemnt") + prepareGit() + }, + Run: func(cmd *cobra.Command, args []string) { + logInfo("Done") + }, + PostRun: func(cmd *cobra.Command, args []string) { + logDebug("Cleaning Git environment") + cleanGit() + }, +} + var subCmds = [...]*cobra.Command{ listSubCmd, + release, } +// === Main function === + func main() { for _, cmd := range subCmds { rootCmd.AddCommand(cmd) @@ -63,25 +106,147 @@ func main() { } func getModuleCurrentVersion(modName string) string { - mod := newModule(modName) + mod := newModule(modName, pwd) mod.updateCurrentVersion() - return mod.currentVersion + v := mod.version.toString() + logDebug("module %s version.toString => %s", mod.name, v) + return v } +func checkRemoteExistence(path string, remote string) { + logDebug("Checking remote %s in %s", remote, path) + cmd := exec.Command("git", "remote") + cmd.Dir = path + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + logFatal(err.Error()) + } + logDebug("Remotes:\n%s", out.String()) + + regString := fmt.Sprintf("(?m)^%s$", remote) + reg := regexp.MustCompile(regString) + if !reg.MatchString(out.String()) { + logFatal("Cannot find remote named %s", remote) + } + logDebug("Remote %s exists", remote) +} + +func fetchTags(path string, remote string) { + logDebug("Fetching latest tags") + cmd := exec.Command("git", "fetch", "-t", remote) + cmd.Dir = path + err := cmd.Run() + if err != nil { + logFatal(err.Error()) + } + logDebug("Finished fetching") +} + +// === module version struct and functions definition === + +type moduleVersion struct { + major int + minor int + patch int +} + +func (v moduleVersion) toString() string { + return fmt.Sprintf("v%d.%d.%d", v.major, v.minor, v.patch) +} + +func (v *moduleVersion) set(major int, minor int, patch int) { + v.major = major + v.minor = minor + v.patch = patch +} + +// === module struct and functions definition === + type module struct { - name string - path string - currentVersion string + name string + path string + version moduleVersion } -func newModule(modName string) module { +func newModule(modName string, path string) module { mod := module{ name: modName, + path: path, } - logDebug(fmt.Sprintf("Created module struct for %s", modName)) + logDebug("Created module struct for %s", modName) return mod } func (m *module) updateCurrentVersion() { - m.currentVersion = "v1.0.0" + logDebug("Getting latest tag for %s", m.name) + cmd := exec.Command("git", "tag", "-l") + var out bytes.Buffer + cmd.Stdout = &out + cmd.Dir = m.path + err := cmd.Run() + if err != nil { + logFatal(err.Error()) + } + + // Search for module tag + regString := fmt.Sprintf("(?m)^%s/v(\\d+\\.){2}\\d+$", m.name) + reg := regexp.MustCompile(regString) + tagsString := reg.FindAllString(out.String(), -1) + logDebug("Tags for module %s:\n%s", m.name, tagsString) + var versions []moduleVersion + for _, tag := range tagsString { + v := tag[len(m.name)+2:] + vs := strings.Split(v, ".") + major, err := strconv.Atoi(vs[0]) + if err != nil { + logFatal(err.Error()) + } + minor, err := strconv.Atoi(vs[1]) + if err != nil { + logFatal(err.Error()) + } + patch, err := strconv.Atoi(vs[2]) + if err != nil { + logFatal(err.Error()) + } + versions = append(versions, moduleVersion{ + major: major, + minor: minor, + patch: patch, + }) + } + // Sort to find latest tag + sort.Slice(versions, func(i, j int) bool { + if versions[i].major == versions[j].major && versions[i].minor == versions[j].minor { + return versions[i].patch > versions[j].patch + } else if versions[i].major == versions[j].major { + return versions[i].minor > versions[j].minor + } else { + return versions[i].major > versions[j].major + } + }) + + m.version = versions[0] +} + +// === Git environment functions === + +func prepareGit() { + var err error + tempDir, err = ioutil.TempDir("", "kustomize-releases") + if err != nil { + logFatal(err.Error()) + } + logDebug("Created git temp dir: " + tempDir) +} + +func cleanGit() { + logDebug("Deleting git temp dir: " + tempDir) + err := os.RemoveAll(tempDir) + if err != nil { + logFatal(err.Error()) + } + logDebug("Deleting done") } diff --git a/releasing/releasing/releasing_test.go b/releasing/releasing/releasing_test.go index 6f954e225..28c389b71 100644 --- a/releasing/releasing/releasing_test.go +++ b/releasing/releasing/releasing_test.go @@ -1,12 +1,30 @@ package main import ( + "os" + "regexp" "testing" ) func TestGetModuleCurrentVersion(t *testing.T) { - output := getModuleCurrentVersion("test") - if output != "v1.0.0" { - t.Errorf("Unexpected output: %s", output) + var err error + pwd, err = os.Getwd() + if err != nil { + t.Errorf(err.Error()) + } + remote := "upstream" + // Check remotes + checkRemoteExistence(pwd, remote) + // Fetch latest tags from remote + fetchTags(pwd, remote) + for _, mod := range modules { + v := getModuleCurrentVersion(mod) + valid, err := regexp.MatchString("^v(\\d+\\.){2}\\d+$", v) + if err != nil { + t.Errorf(err.Error()) + } + if !valid { + t.Errorf("Returned version %s is not valid", v) + } } } From 81da8f6f99f4e6acb46daddbe42e3238e7ac0cdc Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Mon, 18 May 2020 12:01:48 -0700 Subject: [PATCH 07/50] Update functions names --- releasing/releasing/releasing.go | 51 +++++++++++++++++--------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/releasing/releasing/releasing.go b/releasing/releasing/releasing.go index 462b61a88..0f80f0bf0 100644 --- a/releasing/releasing/releasing.go +++ b/releasing/releasing/releasing.go @@ -107,8 +107,8 @@ func main() { func getModuleCurrentVersion(modName string) string { mod := newModule(modName, pwd) - mod.updateCurrentVersion() - v := mod.version.toString() + mod.UpdateCurrentVersion() + v := mod.version.String() logDebug("module %s version.toString => %s", mod.name, v) return v } @@ -152,16 +152,33 @@ type moduleVersion struct { patch int } -func (v moduleVersion) toString() string { +func (v moduleVersion) String() string { return fmt.Sprintf("v%d.%d.%d", v.major, v.minor, v.patch) } -func (v *moduleVersion) set(major int, minor int, patch int) { +func (v *moduleVersion) Set(major int, minor int, patch int) { v.major = major v.minor = minor v.patch = patch } +func (v *moduleVersion) FromString(vs string) { + versions := strings.Split(vs, ".") + major, err := strconv.Atoi(versions[0]) + if err != nil { + logFatal(err.Error()) + } + minor, err := strconv.Atoi(versions[1]) + if err != nil { + logFatal(err.Error()) + } + patch, err := strconv.Atoi(versions[2]) + if err != nil { + logFatal(err.Error()) + } + v.Set(major, minor, patch) +} + // === module struct and functions definition === type module struct { @@ -179,7 +196,7 @@ func newModule(modName string, path string) module { return mod } -func (m *module) updateCurrentVersion() { +func (m *module) UpdateCurrentVersion() { logDebug("Getting latest tag for %s", m.name) cmd := exec.Command("git", "tag", "-l") var out bytes.Buffer @@ -197,25 +214,11 @@ func (m *module) updateCurrentVersion() { logDebug("Tags for module %s:\n%s", m.name, tagsString) var versions []moduleVersion for _, tag := range tagsString { - v := tag[len(m.name)+2:] - vs := strings.Split(v, ".") - major, err := strconv.Atoi(vs[0]) - if err != nil { - logFatal(err.Error()) - } - minor, err := strconv.Atoi(vs[1]) - if err != nil { - logFatal(err.Error()) - } - patch, err := strconv.Atoi(vs[2]) - if err != nil { - logFatal(err.Error()) - } - versions = append(versions, moduleVersion{ - major: major, - minor: minor, - patch: patch, - }) + tag = tag[len(m.name)+2:] + v := moduleVersion{} + v.FromString(tag) + + versions = append(versions, v) } // Sort to find latest tag sort.Slice(versions, func(i, j int) bool { From 650f111e63c1864cb88c221e1b6254b9f822a2bc Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Mon, 18 May 2020 14:08:40 -0700 Subject: [PATCH 08/50] Add release command --- releasing/releasing/go.mod | 5 +- releasing/releasing/go.sum | 1 + releasing/releasing/releasing.go | 293 +++++++++++++++++++++----- releasing/releasing/releasing_test.go | 5 +- 4 files changed, 245 insertions(+), 59 deletions(-) diff --git a/releasing/releasing/go.mod b/releasing/releasing/go.mod index 195063de6..7b7020029 100644 --- a/releasing/releasing/go.mod +++ b/releasing/releasing/go.mod @@ -2,7 +2,4 @@ module sigs.k8s.io/kustomize/releasing go 1.13 -require ( - github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b - github.com/spf13/cobra v1.0.0 -) +require github.com/spf13/cobra v1.0.0 diff --git a/releasing/releasing/go.sum b/releasing/releasing/go.sum index 3585e1894..193d57c78 100644 --- a/releasing/releasing/go.sum +++ b/releasing/releasing/go.sum @@ -40,6 +40,7 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= diff --git a/releasing/releasing/releasing.go b/releasing/releasing/releasing.go index 0f80f0bf0..156bd5a0c 100644 --- a/releasing/releasing/releasing.go +++ b/releasing/releasing/releasing.go @@ -2,11 +2,13 @@ package main import ( "bytes" + "errors" "fmt" "io/ioutil" "log" "os" "os/exec" + "path" "regexp" "sort" "strconv" @@ -20,8 +22,9 @@ var modules = [...]string{ "cmd/resource", "cmd/kubectl", "pluginator", "kustomize", } var verbose bool // Enable verbose or not +var noDryRun bool // Disable dry run +var noTest bool // Disable module tests var tempDir string // Temporary directory path for git worktree -var pwd string // Current working directory // === Log helper functions === @@ -35,6 +38,10 @@ func logInfo(format string, v ...interface{}) { log.Printf("INFO "+format, v...) } +func logWarn(format string, v ...interface{}) { + log.Printf("WARN "+format, v...) +} + func logFatal(format string, v ...interface{}) { log.Fatalf("FATAL "+format, v...) } @@ -50,8 +57,7 @@ var listSubCmd = &cobra.Command{ Use: "list", Short: "List current version of all covered modules", Run: func(cmd *cobra.Command, args []string) { - var err error - pwd, err = os.Getwd() + pwd, err := os.Getwd() if err != nil { logFatal(err.Error()) } @@ -63,7 +69,7 @@ var listSubCmd = &cobra.Command{ fetchTags(pwd, remote) res := []string{} // Store result strings for _, mod := range modules { - res = append(res, fmt.Sprintf("%s/%s", mod, getModuleCurrentVersion(mod))) + res = append(res, fmt.Sprintf("%s/%s", mod, getModuleCurrentVersion(mod, pwd))) } for _, l := range res { fmt.Println(l) @@ -72,18 +78,98 @@ var listSubCmd = &cobra.Command{ } var release = &cobra.Command{ - Use: "release", + Use: "release [module name] [version type]", Short: "Release a new version of specified module", + Args: func(cmd *cobra.Command, args []string) error { + if len(args) != 2 { + return errors.New("2 arguments are required") + } + found := false + for _, mod := range modules { + if mod == args[0] { + found = true + break + } + } + if !found { + return fmt.Errorf("%s is not a valid module. Valid modules are %s", args[0], modules) + } + types := []string{"major", "minor", "patch"} + found = false + for _, t := range types { + if t == args[1] { + found = true + break + } + } + if !found { + return fmt.Errorf("%s is not a valid version type. Valid types are %s", args[1], types) + } + return nil + }, PreRun: func(cmd *cobra.Command, args []string) { logDebug("Preparing Git environemnt") prepareGit() }, Run: func(cmd *cobra.Command, args []string) { - logInfo("Done") - }, - PostRun: func(cmd *cobra.Command, args []string) { - logDebug("Cleaning Git environment") + modName := args[0] + versionType := args[1] + logInfo("Creating tag for module %s", modName) + pwd, err := os.Getwd() + if err != nil { + logFatal(err.Error()) + } + logDebug("Working directory: %s", pwd) + remote := "upstream" + // Check remotes + checkRemoteExistence(pwd, remote) + // Fetch latest tags from remote + fetchTags(pwd, remote) + + mod := module{ + name: modName, + path: pwd, + } + mod.UpdateCurrentVersion() + + oldVersion := mod.version.String() + mod.version.Bump(versionType) + newVersion := mod.version.String() + logInfo("Bumping version: %s => %s", oldVersion, newVersion) + + // Create branch + branch := fmt.Sprintf("release-%s-v%d.%d", mod.name, mod.version.major, mod.version.minor) + newBranch(pwd, branch) + + addWorktree(pwd, tempDir, branch) + + merge(tempDir, "upstream/master") + // Update module path + mod.path = tempDir + + logInfo( + "Releasing summary:\nDir:\t%s\nModule:\t%s %s\nBranch:\t%s\nTag:\t%s", + tempDir, + mod.name, + mod.version.String(), + branch, + mod.Tag(), + ) + + // Run module tests + output, err := mod.RunTest() + if err != nil { + logWarn(output) + } else if !noDryRun { + logInfo("Skipping push module %s. Run with --no-dry-run to push the release.", mod.name) + } else { + // TODO: Push tags + } + // Clean cleanGit() + pruneWorktree(pwd) + deleteBranch(pwd, branch) + logInfo("Done") }, } @@ -99,51 +185,25 @@ func main() { rootCmd.AddCommand(cmd) } rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose output") + release.Flags().BoolVarP(&noDryRun, "no-dry-run", "", false, "disable dry-run") + release.Flags().BoolVarP(&noTest, "no-test", "", false, "don't run module tests") if err := rootCmd.Execute(); err != nil { logFatal(err.Error()) } } -func getModuleCurrentVersion(modName string) string { - mod := newModule(modName, pwd) +func getModuleCurrentVersion(modName, path string) string { + mod := module{ + name: modName, + path: path, + } mod.UpdateCurrentVersion() v := mod.version.String() logDebug("module %s version.toString => %s", mod.name, v) return v } -func checkRemoteExistence(path string, remote string) { - logDebug("Checking remote %s in %s", remote, path) - cmd := exec.Command("git", "remote") - cmd.Dir = path - var out bytes.Buffer - cmd.Stdout = &out - err := cmd.Run() - if err != nil { - logFatal(err.Error()) - } - logDebug("Remotes:\n%s", out.String()) - - regString := fmt.Sprintf("(?m)^%s$", remote) - reg := regexp.MustCompile(regString) - if !reg.MatchString(out.String()) { - logFatal("Cannot find remote named %s", remote) - } - logDebug("Remote %s exists", remote) -} - -func fetchTags(path string, remote string) { - logDebug("Fetching latest tags") - cmd := exec.Command("git", "fetch", "-t", remote) - cmd.Dir = path - err := cmd.Run() - if err != nil { - logFatal(err.Error()) - } - logDebug("Finished fetching") -} - // === module version struct and functions definition === type moduleVersion struct { @@ -156,7 +216,7 @@ func (v moduleVersion) String() string { return fmt.Sprintf("v%d.%d.%d", v.major, v.minor, v.patch) } -func (v *moduleVersion) Set(major int, minor int, patch int) { +func (v *moduleVersion) Set(major, minor, patch int) { v.major = major v.minor = minor v.patch = patch @@ -179,6 +239,21 @@ func (v *moduleVersion) FromString(vs string) { v.Set(major, minor, patch) } +func (v *moduleVersion) Bump(t string) { + if t == "major" { + v.major++ + v.minor = 0 + v.patch = 0 + } else if t == "minor" { + v.minor++ + v.patch = 0 + } else if t == "patch" { + v.patch++ + } else { + logFatal("Invalid version type: %s", t) + } +} + // === module struct and functions definition === type module struct { @@ -187,15 +262,6 @@ type module struct { version moduleVersion } -func newModule(modName string, path string) module { - mod := module{ - name: modName, - path: path, - } - logDebug("Created module struct for %s", modName) - return mod -} - func (m *module) UpdateCurrentVersion() { logDebug("Getting latest tag for %s", m.name) cmd := exec.Command("git", "tag", "-l") @@ -234,10 +300,32 @@ func (m *module) UpdateCurrentVersion() { m.version = versions[0] } +func (m *module) Tag() string { + return m.name + "/" + m.version.String() +} + +func (m *module) RunTest() (string, error) { + if noTest { + logInfo("Tests disabled.") + return "", nil + } + testPath := path.Join(m.path, m.name) + logInfo("Running tests in %s...", testPath) + cmd := exec.Command("go", "test", "./...") + cmd.Dir = testPath + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return string(stdoutStderr), err + } + logInfo("Tests are successfully finished") + return "", nil +} + // === Git environment functions === func prepareGit() { var err error + // Create temporary directory tempDir, err = ioutil.TempDir("", "kustomize-releases") if err != nil { logFatal(err.Error()) @@ -253,3 +341,104 @@ func cleanGit() { } logDebug("Deleting done") } + +func checkRemoteExistence(path, remote string) { + logDebug("Checking remote %s in %s", remote, path) + cmd := exec.Command("git", "remote") + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + logDebug("Remotes:\n%s", string(stdoutStderr)) + + regString := fmt.Sprintf("(?m)^%s$", remote) + reg := regexp.MustCompile(regString) + if !reg.MatchString(string(stdoutStderr)) { + logFatal("Cannot find remote named %s", remote) + } + logDebug("Remote %s exists", remote) +} + +func fetchTags(path, remote string) { + logDebug("Fetching latest tags") + cmd := exec.Command("git", "fetch", "-t", remote) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + logDebug("Finished fetching") +} + +func checkBranchExistence(path, name string) bool { + logDebug("Checking branch %s existence", name) + cmd := exec.Command("git", "branch", "-a") + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + return strings.Contains(string(stdoutStderr), name) +} + +func newBranch(path, name string) { + logInfo("Creating new branch %s", name) + upstreamBranch := "upstream/" + name + cmd := exec.Command("git", "branch", name, upstreamBranch) + if !checkBranchExistence(path, upstreamBranch) { + logInfo("Remote branch %s doesn't exist", upstreamBranch) + cmd = exec.Command("git", "branch", name) + } + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + logInfo("Finished creating branch") +} + +func deleteBranch(path, name string) { + logDebug("Deleting branch %s", name) + cmd := exec.Command("git", "branch", "-D", name) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + logDebug("Finished deleting branch") +} + +func addWorktree(path, tempDir, branch string) { + logInfo("Adding worktree %s for branch %s", tempDir, branch) + cmd := exec.Command("git", "worktree", "add", tempDir, branch) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + logInfo("Finished adding worktree") +} + +func pruneWorktree(path string) { + logDebug("Pruning worktree for repo %s", path) + cmd := exec.Command("git", "worktree", "prune") + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + logDebug("Finished pruning worktree") +} + +func merge(path, branch string) { + logInfo("Merging %s", branch) + logDebug("Working dir: %s", path) + cmd := exec.Command("git", "merge", branch) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + logInfo("Finished merging") +} diff --git a/releasing/releasing/releasing_test.go b/releasing/releasing/releasing_test.go index 28c389b71..6400fcdc6 100644 --- a/releasing/releasing/releasing_test.go +++ b/releasing/releasing/releasing_test.go @@ -7,8 +7,7 @@ import ( ) func TestGetModuleCurrentVersion(t *testing.T) { - var err error - pwd, err = os.Getwd() + pwd, err := os.Getwd() if err != nil { t.Errorf(err.Error()) } @@ -18,7 +17,7 @@ func TestGetModuleCurrentVersion(t *testing.T) { // Fetch latest tags from remote fetchTags(pwd, remote) for _, mod := range modules { - v := getModuleCurrentVersion(mod) + v := getModuleCurrentVersion(mod, pwd) valid, err := regexp.MatchString("^v(\\d+\\.){2}\\d+$", v) if err != nil { t.Errorf(err.Error()) From 557cd656ab4e04b2a9bbdae9fe8ea71e3168e171 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Mon, 18 May 2020 14:30:05 -0700 Subject: [PATCH 09/50] Finish pushing tag --- releasing/releasing/releasing.go | 34 ++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/releasing/releasing/releasing.go b/releasing/releasing/releasing.go index 156bd5a0c..ce0bb6b90 100644 --- a/releasing/releasing/releasing.go +++ b/releasing/releasing/releasing.go @@ -163,13 +163,13 @@ var release = &cobra.Command{ } else if !noDryRun { logInfo("Skipping push module %s. Run with --no-dry-run to push the release.", mod.name) } else { - // TODO: Push tags + pushRelease(tempDir, branch, mod) } // Clean cleanGit() pruneWorktree(pwd) deleteBranch(pwd, branch) - logInfo("Done") + logInfo("Module %s completes", mod.name) }, } @@ -442,3 +442,33 @@ func merge(path, branch string) { } logInfo("Finished merging") } + +func pushRelease(path, branch string, mod module) { + logInfo("Pushing branch %s", branch) + cmd := exec.Command("git", "push", "upstream", branch) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + + logInfo("Creating tag %s", mod.Tag()) + cmd = exec.Command( + "git", "tag", + "-a", mod.Tag(), + "-m", fmt.Sprintf("Release %s on branch %s", mod.Tag(), branch), + ) + cmd.Dir = path + stdoutStderr, err = cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } + + logInfo("Pushing tag %s", mod.Tag()) + cmd = exec.Command("git", "push", "upstream", mod.Tag()) + cmd.Dir = path + stdoutStderr, err = cmd.CombinedOutput() + if err != nil { + logFatal(string(stdoutStderr)) + } +} From 44f5093ae3de191fe9b7ed815cebe4def62f6503 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Mon, 18 May 2020 14:37:44 -0700 Subject: [PATCH 10/50] Add tests --- releasing/releasing/releasing_test.go | 43 ++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/releasing/releasing/releasing_test.go b/releasing/releasing/releasing_test.go index 6400fcdc6..3eb67d067 100644 --- a/releasing/releasing/releasing_test.go +++ b/releasing/releasing/releasing_test.go @@ -1,12 +1,13 @@ package main import ( + "fmt" "os" "regexp" "testing" ) -func TestGetModuleCurrentVersion(t *testing.T) { +func TestList(t *testing.T) { pwd, err := os.Getwd() if err != nil { t.Errorf(err.Error()) @@ -27,3 +28,43 @@ func TestGetModuleCurrentVersion(t *testing.T) { } } } + +func TestRelease(t *testing.T) { + prepareGit() + modName := "api" + versionType := "patch" + pwd, err := os.Getwd() + if err != nil { + t.Errorf(err.Error()) + } + remote := "upstream" + // Check remotes + checkRemoteExistence(pwd, remote) + // Fetch latest tags from remote + fetchTags(pwd, remote) + mod := module{ + name: modName, + path: pwd, + } + mod.UpdateCurrentVersion() + + oldVersion := mod.version.String() + mod.version.Bump(versionType) + newVersion := mod.version.String() + logInfo("Bumping version: %s => %s", oldVersion, newVersion) + + // Create branch + branch := fmt.Sprintf("release-%s-v%d.%d", mod.name, mod.version.major, mod.version.minor) + newBranch(pwd, branch) + + addWorktree(pwd, tempDir, branch) + + merge(tempDir, "upstream/master") + // Update module path + mod.path = tempDir + + // Clean + cleanGit() + pruneWorktree(pwd) + deleteBranch(pwd, branch) +} From 68d6b9add66421407f5e9592094f3254fe1f08b3 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Tue, 19 May 2020 10:49:36 -0700 Subject: [PATCH 11/50] Remove testing --- releasing/releasing/releasing.go | 32 +++++++++++---------------- releasing/releasing/releasing_test.go | 4 ++-- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/releasing/releasing/releasing.go b/releasing/releasing/releasing.go index ce0bb6b90..8d1c669be 100644 --- a/releasing/releasing/releasing.go +++ b/releasing/releasing/releasing.go @@ -107,13 +107,10 @@ var release = &cobra.Command{ } return nil }, - PreRun: func(cmd *cobra.Command, args []string) { - logDebug("Preparing Git environemnt") - prepareGit() - }, Run: func(cmd *cobra.Command, args []string) { modName := args[0] versionType := args[1] + createTempDir() logInfo("Creating tag for module %s", modName) pwd, err := os.Getwd() if err != nil { @@ -156,20 +153,16 @@ var release = &cobra.Command{ mod.Tag(), ) - // Run module tests - output, err := mod.RunTest() - if err != nil { - logWarn(output) - } else if !noDryRun { + if !noDryRun { logInfo("Skipping push module %s. Run with --no-dry-run to push the release.", mod.name) } else { pushRelease(tempDir, branch, mod) } // Clean - cleanGit() + removeTempDir() pruneWorktree(pwd) deleteBranch(pwd, branch) - logInfo("Module %s completes", mod.name) + logInfo("Releasing for module %s completes", mod.name) }, } @@ -304,7 +297,7 @@ func (m *module) Tag() string { return m.name + "/" + m.version.String() } -func (m *module) RunTest() (string, error) { +func (m module) RunTest() (string, error) { if noTest { logInfo("Tests disabled.") return "", nil @@ -323,17 +316,21 @@ func (m *module) RunTest() (string, error) { // === Git environment functions === -func prepareGit() { - var err error +func createTempDir() { // Create temporary directory - tempDir, err = ioutil.TempDir("", "kustomize-releases") + temp, err := ioutil.TempDir("", "kustomize-releases") if err != nil { logFatal(err.Error()) } logDebug("Created git temp dir: " + tempDir) + tempDir = path.Join(temp, "sigs.k8s.io/kustomize") + err = os.MkdirAll(tempDir, 0700) + if err != nil { + logFatal(err.Error()) + } } -func cleanGit() { +func removeTempDir() { logDebug("Deleting git temp dir: " + tempDir) err := os.RemoveAll(tempDir) if err != nil { @@ -395,7 +392,6 @@ func newBranch(path, name string) { if err != nil { logFatal(string(stdoutStderr)) } - logInfo("Finished creating branch") } func deleteBranch(path, name string) { @@ -417,7 +413,6 @@ func addWorktree(path, tempDir, branch string) { if err != nil { logFatal(string(stdoutStderr)) } - logInfo("Finished adding worktree") } func pruneWorktree(path string) { @@ -440,7 +435,6 @@ func merge(path, branch string) { if err != nil { logFatal(string(stdoutStderr)) } - logInfo("Finished merging") } func pushRelease(path, branch string, mod module) { diff --git a/releasing/releasing/releasing_test.go b/releasing/releasing/releasing_test.go index 3eb67d067..b0a44aaa5 100644 --- a/releasing/releasing/releasing_test.go +++ b/releasing/releasing/releasing_test.go @@ -30,7 +30,7 @@ func TestList(t *testing.T) { } func TestRelease(t *testing.T) { - prepareGit() + createTempDir() modName := "api" versionType := "patch" pwd, err := os.Getwd() @@ -64,7 +64,7 @@ func TestRelease(t *testing.T) { mod.path = tempDir // Clean - cleanGit() + removeTempDir() pruneWorktree(pwd) deleteBranch(pwd, branch) } From 1dced55f60362f3466177ba9a5c1dae4fd227c1e Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Tue, 19 May 2020 11:00:00 -0700 Subject: [PATCH 12/50] Improve branch existence check --- releasing/releasing/releasing.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/releasing/releasing/releasing.go b/releasing/releasing/releasing.go index 8d1c669be..b53dae179 100644 --- a/releasing/releasing/releasing.go +++ b/releasing/releasing/releasing.go @@ -376,7 +376,13 @@ func checkBranchExistence(path, name string) bool { if err != nil { logFatal(string(stdoutStderr)) } - return strings.Contains(string(stdoutStderr), name) + branches := strings.Split(string(stdoutStderr), "\n") + for _, branch := range branches { + if strings.Trim(branch, " ") == "remotes/"+name { + return true + } + } + return false } func newBranch(path, name string) { From 2b0b29aec594314659f08c9266832aca72f037ba Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Tue, 19 May 2020 11:09:53 -0700 Subject: [PATCH 13/50] Add flag for running test --- releasing/releasing/releasing.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/releasing/releasing/releasing.go b/releasing/releasing/releasing.go index b53dae179..a94488755 100644 --- a/releasing/releasing/releasing.go +++ b/releasing/releasing/releasing.go @@ -23,7 +23,7 @@ var modules = [...]string{ } var verbose bool // Enable verbose or not var noDryRun bool // Disable dry run -var noTest bool // Disable module tests +var doTest bool // Enable module tests var tempDir string // Temporary directory path for git worktree // === Log helper functions === @@ -153,7 +153,11 @@ var release = &cobra.Command{ mod.Tag(), ) - if !noDryRun { + // Run module tests + output, err := mod.RunTest() + if err != nil { + logWarn(output) + } else if !noDryRun { logInfo("Skipping push module %s. Run with --no-dry-run to push the release.", mod.name) } else { pushRelease(tempDir, branch, mod) @@ -179,7 +183,7 @@ func main() { } rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose output") release.Flags().BoolVarP(&noDryRun, "no-dry-run", "", false, "disable dry-run") - release.Flags().BoolVarP(&noTest, "no-test", "", false, "don't run module tests") + release.Flags().BoolVarP(&doTest, "do-test", "", false, "run module tests before releasing") if err := rootCmd.Execute(); err != nil { logFatal(err.Error()) @@ -298,7 +302,7 @@ func (m *module) Tag() string { } func (m module) RunTest() (string, error) { - if noTest { + if !doTest { logInfo("Tests disabled.") return "", nil } From 2df3a7fc0873f38795e4d43a4f0f3950b546a7f0 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Wed, 20 May 2020 12:53:05 -0700 Subject: [PATCH 14/50] Refactor --- releasing/releasing/gitrunner.go | 293 ++++++++++++++++ releasing/releasing/main.go | 271 +++++++++++++++ releasing/releasing/main_test.go | 20 ++ releasing/releasing/modulemeta.go | 42 +++ releasing/releasing/moduleversion.go | 93 +++++ releasing/releasing/releasing.go | 478 -------------------------- releasing/releasing/releasing_test.go | 70 ---- 7 files changed, 719 insertions(+), 548 deletions(-) create mode 100644 releasing/releasing/gitrunner.go create mode 100644 releasing/releasing/main.go create mode 100644 releasing/releasing/main_test.go create mode 100644 releasing/releasing/modulemeta.go create mode 100644 releasing/releasing/moduleversion.go delete mode 100644 releasing/releasing/releasing.go delete mode 100644 releasing/releasing/releasing_test.go diff --git a/releasing/releasing/gitrunner.go b/releasing/releasing/gitrunner.go new file mode 100644 index 000000000..5dbf0e03b --- /dev/null +++ b/releasing/releasing/gitrunner.go @@ -0,0 +1,293 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "regexp" + "strings" +) + +type gitRunner struct { + // Original git repo path, which should be current working directory + originalGitPath string + // A temporary path for worktree + worktreePath string + // Does this have worktree + hasWorktree bool +} + +func newGitRunner(worktree bool) (gitRunner, error) { + gr := gitRunner{} + pwd, err := os.Getwd() + if err != nil { + return gr, err + } + gr.originalGitPath = pwd + gr.hasWorktree = worktree + if worktree { + err = gr.CreateWorktreeDir() + if err != nil { + return gr, err + } + } + return gr, nil +} + +func (gr *gitRunner) Close() error { + if !gr.hasWorktree { + return nil + } + err := gr.DeleteWorktreeDir() + if err != nil { + return err + } + err = gr.PruneWorktree() + if err != nil { + return err + } + return nil +} + +func (gr *gitRunner) DeleteWorktreeDir() error { + logDebug("Deleting git worktree dir: %s", gr.worktreePath) + err := os.RemoveAll(gr.worktreePath) + if err != nil { + return err + } + logDebug("Deleting done") + return nil +} + +func (gr *gitRunner) WorktreePath() (string, error) { + if gr.worktreePath == "" { + return "", fmt.Errorf("Empty worktree path") + } + return gr.worktreePath, nil +} + +func (gr *gitRunner) OriginalGitPath() (string, error) { + if gr.originalGitPath == "" { + return "", fmt.Errorf("Empty git path") + } + return gr.originalGitPath, nil +} + +func (gr *gitRunner) CreateWorktreeDir() error { + // Create temporary directory + temp, err := ioutil.TempDir("", "kustomize-releases") + if err != nil { + return err + } + gr.worktreePath = filepath.Join(temp, "sigs.k8s.io/kustomize") + err = os.MkdirAll(gr.worktreePath, 0700) + logDebug("Created git worktree dir: %s", gr.worktreePath) + if err != nil { + return err + } + return nil +} + +func (gr *gitRunner) CheckRemoteExistence(remote string) error { + path, err := gr.OriginalGitPath() + if err != nil { + return err + } + logDebug("Checking remote %s in %s", remote, path) + cmd := exec.Command("git", "remote") + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + logDebug("Remotes:\n%s", string(stdoutStderr)) + + regString := fmt.Sprintf("(?m)^%s$", remote) + reg := regexp.MustCompile(regString) + if !reg.MatchString(string(stdoutStderr)) { + return fmt.Errorf("Cannot find remote named %s", remote) + } + logDebug("Remote %s exists", remote) + return nil +} + +func (gr *gitRunner) FetchTags(remote string) error { + logDebug("Fetching latest tags") + path, err := gr.OriginalGitPath() + if err != nil { + return err + } + cmd := exec.Command("git", "fetch", "-t", remote) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + logDebug("Finished fetching") + return nil +} + +func (gr *gitRunner) GetTags() (string, error) { + path, err := gr.OriginalGitPath() + if err != nil { + return "", err + } + logDebug("Getting latest tag in repo %s", path) + cmd := exec.Command("git", "tag", "-l") + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return "", fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + logDebug("Finished getting tags") + return string(stdoutStderr), nil +} + +func (gr *gitRunner) CheckBranchExistence(name string) (bool, error) { + logDebug("Checking branch %s existence", name) + path, err := gr.OriginalGitPath() + if err != nil { + return false, err + } + cmd := exec.Command("git", "branch", "-a") + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return false, fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + branches := strings.Split(string(stdoutStderr), "\n") + for _, branch := range branches { + if strings.Trim(branch, " ") == "remotes/"+name { + return true, nil + } + } + return false, nil +} + +func (gr *gitRunner) NewBranch(name string) error { + logInfo("Creating new branch %s", name) + path, err := gr.OriginalGitPath() + if err != nil { + return err + } + upstreamBranch := "upstream/" + name + cmd := exec.Command("git", "branch", name, upstreamBranch) + exist, err := gr.CheckBranchExistence(upstreamBranch) + if err != nil { + return err + } + if !exist { + logInfo("Remote branch %s doesn't exist", upstreamBranch) + cmd = exec.Command("git", "branch", name) + } + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + return nil +} + +func (gr *gitRunner) DeleteBranch(name string) error { + logDebug("Deleting branch %s", name) + path, err := gr.OriginalGitPath() + if err != nil { + return err + } + cmd := exec.Command("git", "branch", "-D", name) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + logDebug("Finished deleting branch") + return nil +} + +func (gr *gitRunner) AddWorktree(branch string) error { + path, err := gr.OriginalGitPath() + if err != nil { + return err + } + tempDir, err := gr.WorktreePath() + if err != nil { + return err + } + logInfo("Adding worktree %s for branch %s", tempDir, branch) + cmd := exec.Command("git", "worktree", "add", tempDir, branch) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + return nil +} + +func (gr *gitRunner) PruneWorktree() error { + path, err := gr.OriginalGitPath() + if err != nil { + return err + } + logDebug("Pruning worktree for repo %s", path) + cmd := exec.Command("git", "worktree", "prune") + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + logDebug("Finished pruning worktree") + return nil +} + +func (gr *gitRunner) Merge(branch string) error { + logInfo("Merging %s", branch) + path, err := gr.WorktreePath() + if err != nil { + return err + } + logDebug("Working dir: %s", path) + cmd := exec.Command("git", "merge", branch) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + return nil +} + +func (gr *gitRunner) PushRelease(branch string, mod module) error { + logInfo("Pushing branch %s", branch) + path, err := gr.WorktreePath() + if err != nil { + return err + } + cmd := exec.Command("git", "push", "upstream", branch) + cmd.Dir = path + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + + logInfo("Creating tag %s", mod.Tag()) + cmd = exec.Command( + "git", "tag", + "-a", mod.Tag(), + "-m", fmt.Sprintf("Release %s on branch %s", mod.Tag(), branch), + ) + cmd.Dir = path + stdoutStderr, err = cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + + logInfo("Pushing tag %s", mod.Tag()) + cmd = exec.Command("git", "push", "upstream", mod.Tag()) + cmd.Dir = path + stdoutStderr, err = cmd.CombinedOutput() + if err != nil { + return fmt.Errorf("%s %s", err.Error(), stdoutStderr) + } + return nil +} diff --git a/releasing/releasing/main.go b/releasing/releasing/main.go new file mode 100644 index 000000000..bbada8d96 --- /dev/null +++ b/releasing/releasing/main.go @@ -0,0 +1,271 @@ +package main + +import ( + "errors" + "fmt" + "log" + + "github.com/spf13/cobra" +) + +var modules = [...]string{ + "kyaml", "api", "kstatus", "cmd/config", + "cmd/resource", "cmd/kubectl", "pluginator", "kustomize", +} + +// Enable verbose or not +var verbose bool + +// Disable dry run +var noDryRun bool + +// Enable module tests +var doTest bool + +// === Log helper functions === + +func logDebug(format string, v ...interface{}) { + if verbose { + log.Printf("DEBUG "+format, v...) + } +} + +func logInfo(format string, v ...interface{}) { + log.Printf("INFO "+format, v...) +} + +func logWarn(format string, v ...interface{}) { + log.Printf("WARN "+format, v...) +} + +func logFatal(format string, v ...interface{}) { + log.Fatalf("FATAL "+format, v...) +} + +func logFatalE(e error) { + log.Fatalf("FATAL %s", e.Error()) +} + +// === Command line commands === + +var rootCmd = &cobra.Command{ + Use: "releasing", + Short: "This go program is used to improve the modules releasing process in Kustomize repository.", +} + +func listCmdImpl() error { + gr, err := newGitRunner(false) + if err != nil { + return err + } + logDebug("Working directory: %s", gr.originalGitPath) + remote := "upstream" + + err = gr.CheckRemoteExistence(remote) + if err != nil { + return err + } + err = gr.FetchTags(remote) + if err != nil { + return err + } + tags, err := gr.GetTags() + if err != nil { + return err + } + + res := []string{} // Store result strings + for _, modName := range modules { + mod := module{ + name: modName, + } + err = mod.UpdateVersion(tags) + if err != nil { + return err + } + res = append(res, fmt.Sprintf("%s/%s", mod.name, mod.version.String())) + } + err = gr.Close() + if err != nil { + return err + } + for _, l := range res { + fmt.Println(l) + } + return nil +} + +var listSubCmd = &cobra.Command{ + Use: "list", + Short: "List current version of all covered modules", + Run: func(cmd *cobra.Command, args []string) { + err := listCmdImpl() + if err != nil { + logFatalE(err) + } + }, +} + +func checkReleaseArgs(args []string) error { + if len(args) != 2 { + return errors.New("2 arguments are required") + } + found := false + for _, mod := range modules { + if mod == args[0] { + found = true + break + } + } + if !found { + return fmt.Errorf("%s is not a valid module. Valid modules are %s", args[0], modules) + } + types := []string{"major", "minor", "patch"} + found = false + for _, t := range types { + if t == args[1] { + found = true + break + } + } + if !found { + return fmt.Errorf("%s is not a valid version type. Valid types are %s", args[1], types) + } + return nil +} + +func releaseCmdImpl(args []string) error { + modName := args[0] + versionType := args[1] + gr, err := newGitRunner(true) + if err != nil { + return err + } + logInfo("Creating tag for module %s", modName) + logDebug("Working directory: %s", gr.originalGitPath) + remote := "upstream" + + err = gr.CheckRemoteExistence(remote) + if err != nil { + return err + } + err = gr.FetchTags(remote) + if err != nil { + return err + } + tags, err := gr.GetTags() + if err != nil { + return err + } + + gitPath, err := gr.OriginalGitPath() + if err != nil { + return err + } + mod := module{ + name: modName, + path: gitPath, + } + err = mod.UpdateVersion(tags) + if err != nil { + return err + } + + oldVersion := mod.version.String() + err = mod.version.Bump(versionType) + if err != nil { + return err + } + newVersion := mod.version.String() + logInfo("Bumping version: %s => %s", oldVersion, newVersion) + + // Create branch + branch := fmt.Sprintf("release-%s-v%d.%d", mod.name, mod.version.major, mod.version.minor) + err = gr.NewBranch(branch) + if err != nil { + return err + } + + err = gr.AddWorktree(branch) + if err != nil { + return err + } + + err = gr.Merge("upstream/master") + if err != nil { + return err + } + // Update module path + worktreePath, err := gr.WorktreePath() + if err != nil { + return err + } + mod.path = worktreePath + + logInfo( + "Releasing summary:\nDir:\t%s\nModule:\t%s %s\nBranch:\t%s\nTag:\t%s", + worktreePath, + mod.name, + mod.version.String(), + branch, + mod.Tag(), + ) + + // Run module tests + output, err := mod.RunTest() + if err != nil { + logWarn(output) + } else if !noDryRun { + logInfo("Skipping push module %s. Run with --no-dry-run to push the release.", mod.name) + } else { + err = gr.PushRelease(branch, mod) + if err != nil { + return err + } + } + // Clean + err = gr.Close() + if err != nil { + return err + } + err = gr.DeleteBranch(branch) + if err != nil { + return err + } + logInfo("Releasing for module %s completes", mod.name) + return nil +} + +var release = &cobra.Command{ + Use: "release [module name] [version type]", + Short: "Release a new version of specified module", + Args: func(cmd *cobra.Command, args []string) error { + return checkReleaseArgs(args) + }, + Run: func(cmd *cobra.Command, args []string) { + err := releaseCmdImpl(args) + if err != nil { + logFatalE(err) + } + }, +} + +var subCmds = [...]*cobra.Command{ + listSubCmd, + release, +} + +// === Main function === + +func main() { + for _, cmd := range subCmds { + rootCmd.AddCommand(cmd) + } + rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose output") + release.Flags().BoolVarP(&noDryRun, "no-dry-run", "", false, "disable dry-run") + release.Flags().BoolVarP(&doTest, "do-test", "", false, "run module tests before releasing") + + if err := rootCmd.Execute(); err != nil { + logFatal(err.Error()) + } +} diff --git a/releasing/releasing/main_test.go b/releasing/releasing/main_test.go new file mode 100644 index 000000000..fe1988b23 --- /dev/null +++ b/releasing/releasing/main_test.go @@ -0,0 +1,20 @@ +package main + +import ( + "testing" +) + +func TestList(t *testing.T) { + err := listCmdImpl() + if err != nil { + t.Error(err) + } +} + +func TestRelease(t *testing.T) { + args := []string{"api", "minor"} + err := releaseCmdImpl(args) + if err != nil { + t.Error(err) + } +} diff --git a/releasing/releasing/modulemeta.go b/releasing/releasing/modulemeta.go new file mode 100644 index 000000000..80744f6d8 --- /dev/null +++ b/releasing/releasing/modulemeta.go @@ -0,0 +1,42 @@ +package main + +import ( + "os/exec" + "path/filepath" +) + +type module struct { + name string + path string + version moduleVersion +} + +func (m *module) UpdateVersion(tags string) error { + v, err := newModuleVersionFromGitTags(tags, m.name) + if err != nil { + return err + } + m.version = v + return nil +} + +func (m *module) Tag() string { + return m.name + "/" + m.version.String() +} + +func (m *module) RunTest() (string, error) { + if !doTest { + logInfo("Tests disabled.") + return "", nil + } + testPath := filepath.Join(m.path, m.name) + logInfo("Running tests in %s...", testPath) + cmd := exec.Command("go", "test", "./...") + cmd.Dir = testPath + stdoutStderr, err := cmd.CombinedOutput() + if err != nil { + return string(stdoutStderr), err + } + logInfo("Tests are successfully finished") + return "", nil +} diff --git a/releasing/releasing/moduleversion.go b/releasing/releasing/moduleversion.go new file mode 100644 index 000000000..c2e087190 --- /dev/null +++ b/releasing/releasing/moduleversion.go @@ -0,0 +1,93 @@ +package main + +import ( + "fmt" + "regexp" + "sort" + "strconv" + "strings" +) + +type moduleVersion struct { + major int + minor int + patch int +} + +func (v *moduleVersion) String() string { + return fmt.Sprintf("v%d.%d.%d", v.major, v.minor, v.patch) +} + +func (v *moduleVersion) Bump(t string) error { + if t == "major" { + v.major++ + v.minor = 0 + v.patch = 0 + } else if t == "minor" { + v.minor++ + v.patch = 0 + } else if t == "patch" { + v.patch++ + } else { + return fmt.Errorf("Invalid version type: %s", t) + } + return nil +} + +func newModuleVersionFromString(vs string) (*moduleVersion, error) { + if len(vs) < 1 { + return nil, fmt.Errorf("Invalid version string %s", vs) + } + if vs[0] == 'v' { + vs = vs[1:] + } + versions := strings.Split(vs, ".") + major, err := strconv.Atoi(versions[0]) + if err != nil { + return nil, err + } + minor, err := strconv.Atoi(versions[1]) + if err != nil { + return nil, err + } + patch, err := strconv.Atoi(versions[2]) + if err != nil { + return nil, err + } + v := moduleVersion{ + major: major, + minor: minor, + patch: patch, + } + + return &v, nil +} + +func newModuleVersionFromGitTags(tags, modName string) (moduleVersion, error) { + // Search for module tag + regString := fmt.Sprintf("(?m)^%s/v(\\d+\\.){2}\\d+$", modName) + reg := regexp.MustCompile(regString) + modTagsString := reg.FindAllString(tags, -1) + logDebug("Tags for module %s:\n%s", modName, modTagsString) + var versions []moduleVersion + for _, tag := range modTagsString { + tag = tag[len(modName)+2:] + v, err := newModuleVersionFromString(tag) + if err != nil { + return moduleVersion{}, err + } + + versions = append(versions, *v) + } + // Sort to find latest tag + sort.Slice(versions, func(i, j int) bool { + if versions[i].major == versions[j].major && versions[i].minor == versions[j].minor { + return versions[i].patch > versions[j].patch + } else if versions[i].major == versions[j].major { + return versions[i].minor > versions[j].minor + } else { + return versions[i].major > versions[j].major + } + }) + return versions[0], nil +} diff --git a/releasing/releasing/releasing.go b/releasing/releasing/releasing.go deleted file mode 100644 index a94488755..000000000 --- a/releasing/releasing/releasing.go +++ /dev/null @@ -1,478 +0,0 @@ -package main - -import ( - "bytes" - "errors" - "fmt" - "io/ioutil" - "log" - "os" - "os/exec" - "path" - "regexp" - "sort" - "strconv" - "strings" - - "github.com/spf13/cobra" -) - -var modules = [...]string{ - "kyaml", "api", "kstatus", "cmd/config", - "cmd/resource", "cmd/kubectl", "pluginator", "kustomize", -} -var verbose bool // Enable verbose or not -var noDryRun bool // Disable dry run -var doTest bool // Enable module tests -var tempDir string // Temporary directory path for git worktree - -// === Log helper functions === - -func logDebug(format string, v ...interface{}) { - if verbose { - log.Printf("DEBUG "+format, v...) - } -} - -func logInfo(format string, v ...interface{}) { - log.Printf("INFO "+format, v...) -} - -func logWarn(format string, v ...interface{}) { - log.Printf("WARN "+format, v...) -} - -func logFatal(format string, v ...interface{}) { - log.Fatalf("FATAL "+format, v...) -} - -// === Command line commands === - -var rootCmd = &cobra.Command{ - Use: "releasing", - Short: "This go program is used to improve the modules releasing process in Kustomize repository.", -} - -var listSubCmd = &cobra.Command{ - Use: "list", - Short: "List current version of all covered modules", - Run: func(cmd *cobra.Command, args []string) { - pwd, err := os.Getwd() - if err != nil { - logFatal(err.Error()) - } - logDebug("Working directory: %s", pwd) - remote := "upstream" - // Check remotes - checkRemoteExistence(pwd, remote) - // Fetch latest tags from remote - fetchTags(pwd, remote) - res := []string{} // Store result strings - for _, mod := range modules { - res = append(res, fmt.Sprintf("%s/%s", mod, getModuleCurrentVersion(mod, pwd))) - } - for _, l := range res { - fmt.Println(l) - } - }, -} - -var release = &cobra.Command{ - Use: "release [module name] [version type]", - Short: "Release a new version of specified module", - Args: func(cmd *cobra.Command, args []string) error { - if len(args) != 2 { - return errors.New("2 arguments are required") - } - found := false - for _, mod := range modules { - if mod == args[0] { - found = true - break - } - } - if !found { - return fmt.Errorf("%s is not a valid module. Valid modules are %s", args[0], modules) - } - types := []string{"major", "minor", "patch"} - found = false - for _, t := range types { - if t == args[1] { - found = true - break - } - } - if !found { - return fmt.Errorf("%s is not a valid version type. Valid types are %s", args[1], types) - } - return nil - }, - Run: func(cmd *cobra.Command, args []string) { - modName := args[0] - versionType := args[1] - createTempDir() - logInfo("Creating tag for module %s", modName) - pwd, err := os.Getwd() - if err != nil { - logFatal(err.Error()) - } - logDebug("Working directory: %s", pwd) - remote := "upstream" - // Check remotes - checkRemoteExistence(pwd, remote) - // Fetch latest tags from remote - fetchTags(pwd, remote) - - mod := module{ - name: modName, - path: pwd, - } - mod.UpdateCurrentVersion() - - oldVersion := mod.version.String() - mod.version.Bump(versionType) - newVersion := mod.version.String() - logInfo("Bumping version: %s => %s", oldVersion, newVersion) - - // Create branch - branch := fmt.Sprintf("release-%s-v%d.%d", mod.name, mod.version.major, mod.version.minor) - newBranch(pwd, branch) - - addWorktree(pwd, tempDir, branch) - - merge(tempDir, "upstream/master") - // Update module path - mod.path = tempDir - - logInfo( - "Releasing summary:\nDir:\t%s\nModule:\t%s %s\nBranch:\t%s\nTag:\t%s", - tempDir, - mod.name, - mod.version.String(), - branch, - mod.Tag(), - ) - - // Run module tests - output, err := mod.RunTest() - if err != nil { - logWarn(output) - } else if !noDryRun { - logInfo("Skipping push module %s. Run with --no-dry-run to push the release.", mod.name) - } else { - pushRelease(tempDir, branch, mod) - } - // Clean - removeTempDir() - pruneWorktree(pwd) - deleteBranch(pwd, branch) - logInfo("Releasing for module %s completes", mod.name) - }, -} - -var subCmds = [...]*cobra.Command{ - listSubCmd, - release, -} - -// === Main function === - -func main() { - for _, cmd := range subCmds { - rootCmd.AddCommand(cmd) - } - rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose output") - release.Flags().BoolVarP(&noDryRun, "no-dry-run", "", false, "disable dry-run") - release.Flags().BoolVarP(&doTest, "do-test", "", false, "run module tests before releasing") - - if err := rootCmd.Execute(); err != nil { - logFatal(err.Error()) - } -} - -func getModuleCurrentVersion(modName, path string) string { - mod := module{ - name: modName, - path: path, - } - mod.UpdateCurrentVersion() - v := mod.version.String() - logDebug("module %s version.toString => %s", mod.name, v) - return v -} - -// === module version struct and functions definition === - -type moduleVersion struct { - major int - minor int - patch int -} - -func (v moduleVersion) String() string { - return fmt.Sprintf("v%d.%d.%d", v.major, v.minor, v.patch) -} - -func (v *moduleVersion) Set(major, minor, patch int) { - v.major = major - v.minor = minor - v.patch = patch -} - -func (v *moduleVersion) FromString(vs string) { - versions := strings.Split(vs, ".") - major, err := strconv.Atoi(versions[0]) - if err != nil { - logFatal(err.Error()) - } - minor, err := strconv.Atoi(versions[1]) - if err != nil { - logFatal(err.Error()) - } - patch, err := strconv.Atoi(versions[2]) - if err != nil { - logFatal(err.Error()) - } - v.Set(major, minor, patch) -} - -func (v *moduleVersion) Bump(t string) { - if t == "major" { - v.major++ - v.minor = 0 - v.patch = 0 - } else if t == "minor" { - v.minor++ - v.patch = 0 - } else if t == "patch" { - v.patch++ - } else { - logFatal("Invalid version type: %s", t) - } -} - -// === module struct and functions definition === - -type module struct { - name string - path string - version moduleVersion -} - -func (m *module) UpdateCurrentVersion() { - logDebug("Getting latest tag for %s", m.name) - cmd := exec.Command("git", "tag", "-l") - var out bytes.Buffer - cmd.Stdout = &out - cmd.Dir = m.path - err := cmd.Run() - if err != nil { - logFatal(err.Error()) - } - - // Search for module tag - regString := fmt.Sprintf("(?m)^%s/v(\\d+\\.){2}\\d+$", m.name) - reg := regexp.MustCompile(regString) - tagsString := reg.FindAllString(out.String(), -1) - logDebug("Tags for module %s:\n%s", m.name, tagsString) - var versions []moduleVersion - for _, tag := range tagsString { - tag = tag[len(m.name)+2:] - v := moduleVersion{} - v.FromString(tag) - - versions = append(versions, v) - } - // Sort to find latest tag - sort.Slice(versions, func(i, j int) bool { - if versions[i].major == versions[j].major && versions[i].minor == versions[j].minor { - return versions[i].patch > versions[j].patch - } else if versions[i].major == versions[j].major { - return versions[i].minor > versions[j].minor - } else { - return versions[i].major > versions[j].major - } - }) - - m.version = versions[0] -} - -func (m *module) Tag() string { - return m.name + "/" + m.version.String() -} - -func (m module) RunTest() (string, error) { - if !doTest { - logInfo("Tests disabled.") - return "", nil - } - testPath := path.Join(m.path, m.name) - logInfo("Running tests in %s...", testPath) - cmd := exec.Command("go", "test", "./...") - cmd.Dir = testPath - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - return string(stdoutStderr), err - } - logInfo("Tests are successfully finished") - return "", nil -} - -// === Git environment functions === - -func createTempDir() { - // Create temporary directory - temp, err := ioutil.TempDir("", "kustomize-releases") - if err != nil { - logFatal(err.Error()) - } - logDebug("Created git temp dir: " + tempDir) - tempDir = path.Join(temp, "sigs.k8s.io/kustomize") - err = os.MkdirAll(tempDir, 0700) - if err != nil { - logFatal(err.Error()) - } -} - -func removeTempDir() { - logDebug("Deleting git temp dir: " + tempDir) - err := os.RemoveAll(tempDir) - if err != nil { - logFatal(err.Error()) - } - logDebug("Deleting done") -} - -func checkRemoteExistence(path, remote string) { - logDebug("Checking remote %s in %s", remote, path) - cmd := exec.Command("git", "remote") - cmd.Dir = path - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } - logDebug("Remotes:\n%s", string(stdoutStderr)) - - regString := fmt.Sprintf("(?m)^%s$", remote) - reg := regexp.MustCompile(regString) - if !reg.MatchString(string(stdoutStderr)) { - logFatal("Cannot find remote named %s", remote) - } - logDebug("Remote %s exists", remote) -} - -func fetchTags(path, remote string) { - logDebug("Fetching latest tags") - cmd := exec.Command("git", "fetch", "-t", remote) - cmd.Dir = path - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } - logDebug("Finished fetching") -} - -func checkBranchExistence(path, name string) bool { - logDebug("Checking branch %s existence", name) - cmd := exec.Command("git", "branch", "-a") - cmd.Dir = path - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } - branches := strings.Split(string(stdoutStderr), "\n") - for _, branch := range branches { - if strings.Trim(branch, " ") == "remotes/"+name { - return true - } - } - return false -} - -func newBranch(path, name string) { - logInfo("Creating new branch %s", name) - upstreamBranch := "upstream/" + name - cmd := exec.Command("git", "branch", name, upstreamBranch) - if !checkBranchExistence(path, upstreamBranch) { - logInfo("Remote branch %s doesn't exist", upstreamBranch) - cmd = exec.Command("git", "branch", name) - } - cmd.Dir = path - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } -} - -func deleteBranch(path, name string) { - logDebug("Deleting branch %s", name) - cmd := exec.Command("git", "branch", "-D", name) - cmd.Dir = path - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } - logDebug("Finished deleting branch") -} - -func addWorktree(path, tempDir, branch string) { - logInfo("Adding worktree %s for branch %s", tempDir, branch) - cmd := exec.Command("git", "worktree", "add", tempDir, branch) - cmd.Dir = path - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } -} - -func pruneWorktree(path string) { - logDebug("Pruning worktree for repo %s", path) - cmd := exec.Command("git", "worktree", "prune") - cmd.Dir = path - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } - logDebug("Finished pruning worktree") -} - -func merge(path, branch string) { - logInfo("Merging %s", branch) - logDebug("Working dir: %s", path) - cmd := exec.Command("git", "merge", branch) - cmd.Dir = path - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } -} - -func pushRelease(path, branch string, mod module) { - logInfo("Pushing branch %s", branch) - cmd := exec.Command("git", "push", "upstream", branch) - cmd.Dir = path - stdoutStderr, err := cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } - - logInfo("Creating tag %s", mod.Tag()) - cmd = exec.Command( - "git", "tag", - "-a", mod.Tag(), - "-m", fmt.Sprintf("Release %s on branch %s", mod.Tag(), branch), - ) - cmd.Dir = path - stdoutStderr, err = cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } - - logInfo("Pushing tag %s", mod.Tag()) - cmd = exec.Command("git", "push", "upstream", mod.Tag()) - cmd.Dir = path - stdoutStderr, err = cmd.CombinedOutput() - if err != nil { - logFatal(string(stdoutStderr)) - } -} diff --git a/releasing/releasing/releasing_test.go b/releasing/releasing/releasing_test.go deleted file mode 100644 index b0a44aaa5..000000000 --- a/releasing/releasing/releasing_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package main - -import ( - "fmt" - "os" - "regexp" - "testing" -) - -func TestList(t *testing.T) { - pwd, err := os.Getwd() - if err != nil { - t.Errorf(err.Error()) - } - remote := "upstream" - // Check remotes - checkRemoteExistence(pwd, remote) - // Fetch latest tags from remote - fetchTags(pwd, remote) - for _, mod := range modules { - v := getModuleCurrentVersion(mod, pwd) - valid, err := regexp.MatchString("^v(\\d+\\.){2}\\d+$", v) - if err != nil { - t.Errorf(err.Error()) - } - if !valid { - t.Errorf("Returned version %s is not valid", v) - } - } -} - -func TestRelease(t *testing.T) { - createTempDir() - modName := "api" - versionType := "patch" - pwd, err := os.Getwd() - if err != nil { - t.Errorf(err.Error()) - } - remote := "upstream" - // Check remotes - checkRemoteExistence(pwd, remote) - // Fetch latest tags from remote - fetchTags(pwd, remote) - mod := module{ - name: modName, - path: pwd, - } - mod.UpdateCurrentVersion() - - oldVersion := mod.version.String() - mod.version.Bump(versionType) - newVersion := mod.version.String() - logInfo("Bumping version: %s => %s", oldVersion, newVersion) - - // Create branch - branch := fmt.Sprintf("release-%s-v%d.%d", mod.name, mod.version.major, mod.version.minor) - newBranch(pwd, branch) - - addWorktree(pwd, tempDir, branch) - - merge(tempDir, "upstream/master") - // Update module path - mod.path = tempDir - - // Clean - removeTempDir() - pruneWorktree(pwd) - deleteBranch(pwd, branch) -} From 909bc25e123f5aa639ec40b61c4f659e216239f3 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Wed, 20 May 2020 13:33:37 -0700 Subject: [PATCH 15/50] Add tests for modulemeta and moduleversion --- releasing/releasing/gitrunner.go | 2 +- releasing/releasing/modulemeta_test.go | 68 ++++++++++ releasing/releasing/moduleversion.go | 22 ++-- releasing/releasing/moduleversion_test.go | 144 ++++++++++++++++++++++ 4 files changed, 226 insertions(+), 10 deletions(-) create mode 100644 releasing/releasing/modulemeta_test.go create mode 100644 releasing/releasing/moduleversion_test.go diff --git a/releasing/releasing/gitrunner.go b/releasing/releasing/gitrunner.go index 5dbf0e03b..d1219b1f7 100644 --- a/releasing/releasing/gitrunner.go +++ b/releasing/releasing/gitrunner.go @@ -104,7 +104,7 @@ func (gr *gitRunner) CheckRemoteExistence(remote string) error { } logDebug("Remotes:\n%s", string(stdoutStderr)) - regString := fmt.Sprintf("(?m)^%s$", remote) + regString := fmt.Sprintf("(?m)^\\s*%s\\s*$", remote) reg := regexp.MustCompile(regString) if !reg.MatchString(string(stdoutStderr)) { return fmt.Errorf("Cannot find remote named %s", remote) diff --git a/releasing/releasing/modulemeta_test.go b/releasing/releasing/modulemeta_test.go new file mode 100644 index 000000000..c8764ac4e --- /dev/null +++ b/releasing/releasing/modulemeta_test.go @@ -0,0 +1,68 @@ +package main + +import ( + "testing" +) + +func TestModuleTags(t *testing.T) { + tags := `api/v0.1.1 + api/v0.2.0 + api/v0.3.0 + api/v0.3.1 + api/v0.3.2 + api/v0.3.3 + cmd/config/v0.0.1 + cmd/config/v0.0.10 + cmd/config/v0.0.11 + cmd/config/v0.0.12 + cmd/config/v0.0.13 + cmd/config/v0.0.2 + cmd/config/v0.0.3 + cmd/config/v0.0.4 + cmd/config/v0.0.5 + cmd/config/v0.0.6 + cmd/config/v0.0.7 + cmd/config/v0.0.8 + cmd/config/v0.0.9 + cmd/config/v0.1.0 + cmd/config/v0.1.1 + cmd/config/v0.1.10 + cmd/config/v0.1.11 + cmd/config/v0.1.2 + cmd/config/v0.1.3 + cmd/config/v0.1.4 + cmd/config/v0.1.5 + cmd/config/v0.1.6 + cmd/config/v0.1.7 + cmd/config/v0.1.8 + cmd/kubectl/v0.0.1 + cmd/kubectl/v0.0.2 + cmd/kubectl/v0.0.3 + cmd/resource/v0.0.1 + cmd/resource/v0.0.2 + kstatus/v0.0.1 + kustomize/v3.2.1 + kustomize/v3.2.2 + kustomize/v3.2.3 + kustomize/v3.3.0 + kustomize/v3.4.0 + kustomize/v3.5.1 + kustomize/v3.5.2 + kustomize/v3.5.3 + kustomize/v3.5.4 + kustomize/v3.5.5` + expect := "cmd/config/v0.1.11" + + m := module{ + name: "cmd/config", + } + + err := m.UpdateVersion(tags) + if err != nil { + t.Error(err) + } + + if m.Tag() != expect { + t.Errorf("Tag %s doesn't match expected %s", m.Tag(), expect) + } +} diff --git a/releasing/releasing/moduleversion.go b/releasing/releasing/moduleversion.go index c2e087190..5370262ad 100644 --- a/releasing/releasing/moduleversion.go +++ b/releasing/releasing/moduleversion.go @@ -34,38 +34,42 @@ func (v *moduleVersion) Bump(t string) error { return nil } -func newModuleVersionFromString(vs string) (*moduleVersion, error) { +func newModuleVersionFromString(vs string) (moduleVersion, error) { + v := moduleVersion{} if len(vs) < 1 { - return nil, fmt.Errorf("Invalid version string %s", vs) + return v, fmt.Errorf("Invalid version string %s", vs) } if vs[0] == 'v' { vs = vs[1:] } versions := strings.Split(vs, ".") + if len(versions) != 3 { + return v, fmt.Errorf("Invalid version string %s", vs) + } major, err := strconv.Atoi(versions[0]) if err != nil { - return nil, err + return v, err } minor, err := strconv.Atoi(versions[1]) if err != nil { - return nil, err + return v, err } patch, err := strconv.Atoi(versions[2]) if err != nil { - return nil, err + return v, err } - v := moduleVersion{ + v = moduleVersion{ major: major, minor: minor, patch: patch, } - return &v, nil + return v, nil } func newModuleVersionFromGitTags(tags, modName string) (moduleVersion, error) { // Search for module tag - regString := fmt.Sprintf("(?m)^%s/v(\\d+\\.){2}\\d+$", modName) + regString := fmt.Sprintf("(?m)^\\s*%s/v(\\d+\\.){2}\\d+\\s*$", modName) reg := regexp.MustCompile(regString) modTagsString := reg.FindAllString(tags, -1) logDebug("Tags for module %s:\n%s", modName, modTagsString) @@ -77,7 +81,7 @@ func newModuleVersionFromGitTags(tags, modName string) (moduleVersion, error) { return moduleVersion{}, err } - versions = append(versions, *v) + versions = append(versions, v) } // Sort to find latest tag sort.Slice(versions, func(i, j int) bool { diff --git a/releasing/releasing/moduleversion_test.go b/releasing/releasing/moduleversion_test.go new file mode 100644 index 000000000..251af609e --- /dev/null +++ b/releasing/releasing/moduleversion_test.go @@ -0,0 +1,144 @@ +package main + +import ( + "testing" +) + +func TestVersionFromAndToString(t *testing.T) { + vs := "1.1.1" + expect := "v1.1.1" + v, err := newModuleVersionFromString(vs) + if err != nil { + t.Error(err) + } + if v.String() != expect { + t.Errorf("%s doesn't match expected %s", v.String(), expect) + } + + vs = "v0.0.0" + expect = "v0.0.0" + v, err = newModuleVersionFromString(vs) + if err != nil { + t.Error(err) + } + if v.String() != expect { + t.Errorf("%s doesn't match expected %s", v.String(), expect) + } + + vs = "v0.0" + v, err = newModuleVersionFromString(vs) + if err == nil { + t.Errorf("%s should be invalid", vs) + } + + vs = "" + v, err = newModuleVersionFromString(vs) + if err == nil { + t.Errorf("%s should be invalid", vs) + } +} + +func TestVersionFromGitTags(t *testing.T) { + tags := `api/v0.1.1 + api/v0.2.0 + api/v0.3.0 + api/v0.3.1 + api/v0.3.2 + api/v0.3.3 + cmd/config/v0.0.1 + cmd/config/v0.0.10 + cmd/config/v0.0.11 + cmd/config/v0.0.12 + cmd/config/v0.0.13 + cmd/config/v0.0.2 + cmd/config/v0.0.3 + cmd/config/v0.0.4 + cmd/config/v0.0.5 + cmd/config/v0.0.6 + cmd/config/v0.0.7 + cmd/config/v0.0.8 + cmd/config/v0.0.9 + cmd/config/v0.1.0 + cmd/config/v0.1.1 + cmd/config/v0.1.10 + cmd/config/v0.1.11 + cmd/config/v0.1.2 + cmd/config/v0.1.3 + cmd/config/v0.1.4 + cmd/config/v0.1.5 + cmd/config/v0.1.6 + cmd/config/v0.1.7 + cmd/config/v0.1.8 + cmd/kubectl/v0.0.1 + cmd/kubectl/v0.0.2 + cmd/kubectl/v0.0.3 + cmd/resource/v0.0.1 + cmd/resource/v0.0.2 + kstatus/v0.0.1 + kustomize/v3.2.1 + kustomize/v3.2.2 + kustomize/v3.2.3 + kustomize/v3.3.0 + kustomize/v3.4.0 + kustomize/v3.5.1 + kustomize/v3.5.2 + kustomize/v3.5.3 + kustomize/v3.5.4 + kustomize/v3.5.5` + expect := "v0.1.11" + + v, err := newModuleVersionFromGitTags(tags, "cmd/config") + if err != nil { + t.Error(err) + } + if v.String() != expect { + t.Errorf("%s doesn't match expected %s", v.String(), expect) + } +} + +func TestVersionBumpPatch(t *testing.T) { + v := moduleVersion{0, 1, 1} + expect := "v0.1.2" + err := v.Bump("patch") + if err != nil { + t.Error(err) + } + + if v.String() != expect { + t.Errorf("%s doesn't match expected %s", v.String(), expect) + } +} + +func TestVersionBumpMinor(t *testing.T) { + v := moduleVersion{0, 1, 1} + expect := "v0.2.0" + err := v.Bump("minor") + if err != nil { + t.Error(err) + } + + if v.String() != expect { + t.Errorf("%s doesn't match expected %s", v.String(), expect) + } +} + +func TestVersionBumpMajor(t *testing.T) { + v := moduleVersion{0, 1, 1} + expect := "v1.0.0" + err := v.Bump("major") + if err != nil { + t.Error(err) + } + + if v.String() != expect { + t.Errorf("%s doesn't match expected %s", v.String(), expect) + } +} + +func TestVersionBumpError(t *testing.T) { + v := moduleVersion{} + err := v.Bump("unknown") + if err == nil { + t.Errorf("Invalid bumping type should have error") + } +} From 4d88032e11609d5eed2ee52ec5b9e9033f5f61e5 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Wed, 20 May 2020 13:42:38 -0700 Subject: [PATCH 16/50] Add comments --- releasing/releasing/modulemeta.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/releasing/releasing/modulemeta.go b/releasing/releasing/modulemeta.go index 80744f6d8..4e90fb255 100644 --- a/releasing/releasing/modulemeta.go +++ b/releasing/releasing/modulemeta.go @@ -6,8 +6,11 @@ import ( ) type module struct { - name string - path string + // Module name + name string + // Module path. This path is only used for running test. + path string + // Module version version moduleVersion } From 4b68425d86d6198e59f02c27cbf22555cd9cfda2 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Thu, 21 May 2020 10:07:42 -0700 Subject: [PATCH 17/50] Update readme for releasing --- releasing/README.md | 13 ++----------- releasing/releasing/main.go | 5 +++-- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/releasing/README.md b/releasing/README.md index 366f31ade..4effe6152 100644 --- a/releasing/README.md +++ b/releasing/README.md @@ -112,17 +112,8 @@ The tag appears in the URL, e.g. [pluginator/v1.0.0]. ## Release procedure -> TODO: script what follows, so someone can enter -> ``` -> go run ./releasing/release.go kustomize minor -> # or: -> # go run ./releasing/release.go api patch -> # go run ./releasing/release.go pluginator minor -> ``` -> The program would look at the existing remote tags, -> confirm sanity and increment the appropriate major/minor/patch -> component, create the right branch and tag, etc. -> No more bash please. +The script used to release modules is in progress. Check it in +`releasing/releasing` directory. At any given moment, the repository's master branch is passing all its tests and contains code one could release. diff --git a/releasing/releasing/main.go b/releasing/releasing/main.go index bbada8d96..821fd946d 100644 --- a/releasing/releasing/main.go +++ b/releasing/releasing/main.go @@ -49,8 +49,9 @@ func logFatalE(e error) { // === Command line commands === var rootCmd = &cobra.Command{ - Use: "releasing", - Short: "This go program is used to improve the modules releasing process in Kustomize repository.", + Use: "releasing", + Short: `This go program is used to improve the modules releasing process in Kustomize repository. +Note: You may need to run fixgomod.sh in the module to make the module ready to release.`, } func listCmdImpl() error { From b3f5874978d4a5af80220ca2f6ed082a1db5af1c Mon Sep 17 00:00:00 2001 From: Phani Teja Marupaka Date: Wed, 20 May 2020 16:46:27 -0700 Subject: [PATCH 18/50] Short hand notation for set --- .../internal/commands/cmdcreatesetter.go | 4 +- .../commands/cmdcreatesubstitution.go | 5 +- .../internal/commands/cmdlistsetters.go | 3 +- cmd/config/internal/commands/cmdset_test.go | 20 ++--- kyaml/fieldmeta/fieldmeta.go | 82 +++++++++++++++++-- kyaml/setters2/add.go | 18 +--- kyaml/setters2/list.go | 5 +- kyaml/setters2/set.go | 3 +- kyaml/setters2/settersutil/settercreator.go | 3 +- .../settersutil/substitutioncreator.go | 3 +- 10 files changed, 103 insertions(+), 43 deletions(-) diff --git a/cmd/config/internal/commands/cmdcreatesetter.go b/cmd/config/internal/commands/cmdcreatesetter.go index dd3174c74..2a0120aac 100644 --- a/cmd/config/internal/commands/cmdcreatesetter.go +++ b/cmd/config/internal/commands/cmdcreatesetter.go @@ -9,10 +9,10 @@ import ( "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands" "sigs.k8s.io/kustomize/kyaml/errors" + "sigs.k8s.io/kustomize/kyaml/fieldmeta" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/openapi" "sigs.k8s.io/kustomize/kyaml/setters" - "sigs.k8s.io/kustomize/kyaml/setters2" "sigs.k8s.io/kustomize/kyaml/setters2/settersutil" ) @@ -102,7 +102,7 @@ func (r *CreateSetterRunner) preRunE(c *cobra.Command, args []string) error { } // check if substitution with same name exists and throw error - ref, err := spec.NewRef(setters2.DefinitionsPrefix + setters2.SubstitutionDefinitionPrefix + r.CreateSetter.Name) + ref, err := spec.NewRef(fieldmeta.DefinitionsPrefix + fieldmeta.SubstitutionDefinitionPrefix + r.CreateSetter.Name) if err != nil { return err } diff --git a/cmd/config/internal/commands/cmdcreatesubstitution.go b/cmd/config/internal/commands/cmdcreatesubstitution.go index b4cb47988..e0a12ae24 100644 --- a/cmd/config/internal/commands/cmdcreatesubstitution.go +++ b/cmd/config/internal/commands/cmdcreatesubstitution.go @@ -12,6 +12,7 @@ import ( "github.com/spf13/cobra" "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/kyaml/errors" + "sigs.k8s.io/kustomize/kyaml/fieldmeta" "sigs.k8s.io/kustomize/kyaml/openapi" "sigs.k8s.io/kustomize/kyaml/setters2" "sigs.k8s.io/kustomize/kyaml/setters2/settersutil" @@ -71,7 +72,7 @@ func (r *CreateSubstitutionRunner) preRunE(c *cobra.Command, args []string) erro } // check if setter with same name exists and throw error - ref, err := spec.NewRef(setters2.DefinitionsPrefix + setters2.SetterDefinitionPrefix + r.CreateSubstitution.Name) + ref, err := spec.NewRef(fieldmeta.DefinitionsPrefix + fieldmeta.SetterDefinitionPrefix + r.CreateSubstitution.Name) if err != nil { return err } @@ -92,7 +93,7 @@ func (r *CreateSubstitutionRunner) preRunE(c *cobra.Command, args []string) erro } for _, marker := range markers { - ref := setters2.DefinitionsPrefix + setters2.SetterDefinitionPrefix + + ref := fieldmeta.DefinitionsPrefix + fieldmeta.SetterDefinitionPrefix + strings.TrimSuffix(strings.TrimPrefix(string(marker), "${"), "}") r.CreateSubstitution.Values = append( r.CreateSubstitution.Values, diff --git a/cmd/config/internal/commands/cmdlistsetters.go b/cmd/config/internal/commands/cmdlistsetters.go index d88a4802d..d5fc93610 100644 --- a/cmd/config/internal/commands/cmdlistsetters.go +++ b/cmd/config/internal/commands/cmdlistsetters.go @@ -13,6 +13,7 @@ import ( "github.com/spf13/cobra" "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands" + "sigs.k8s.io/kustomize/kyaml/fieldmeta" "sigs.k8s.io/kustomize/kyaml/setters" "sigs.k8s.io/kustomize/kyaml/setters2" ) @@ -117,7 +118,7 @@ func (r *ListSettersRunner) ListSubstitutions(c *cobra.Command, args []string) e s := r.List.Substitutions[i] setters := "" for _, value := range s.Values { - setter := strings.TrimPrefix(value.Ref, setters2.DefinitionsPrefix+setters2.SetterDefinitionPrefix) + setter := strings.TrimPrefix(value.Ref, fieldmeta.DefinitionsPrefix+fieldmeta.SetterDefinitionPrefix) setters = setters + "," + setter } setters = fmt.Sprintf("[%s]", strings.TrimPrefix(setters, ",")) diff --git a/cmd/config/internal/commands/cmdset_test.go b/cmd/config/internal/commands/cmdset_test.go index 7bf532263..c10edcf08 100644 --- a/cmd/config/internal/commands/cmdset_test.go +++ b/cmd/config/internal/commands/cmdset_test.go @@ -50,7 +50,7 @@ kind: Deployment metadata: name: nginx-deployment spec: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openAPI":"replicas"} `, expectedOpenAPI: ` apiVersion: v1alpha1 @@ -71,7 +71,7 @@ kind: Deployment metadata: name: nginx-deployment spec: - replicas: 4 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 4 # {"$openAPI":"replicas"} `, }, { @@ -129,10 +129,10 @@ apiVersion: v1alpha1 kind: Example openAPI: definitions: - io.k8s.cli.setters.image: + io.k8s.cli.setters.image-setter: x-k8s-cli: setter: - name: image + name: image-setter value: "nginx" io.k8s.cli.setters.tag: x-k8s-cli: @@ -146,7 +146,7 @@ openAPI: pattern: IMAGE:TAG values: - marker: IMAGE - ref: '#/definitions/io.k8s.cli.setters.image' + ref: '#/definitions/io.k8s.cli.setters.image-setter' - marker: TAG ref: '#/definitions/io.k8s.cli.setters.tag' `, @@ -161,7 +161,7 @@ spec: spec: containers: - name: nginx - image: nginx:1.7.9 # {"$ref":"#/definitions/io.k8s.cli.substitutions.image"} + image: nginx:1.7.9 # {"$openAPI":"image"} - name: sidecar image: sidecar:1.7.9 `, @@ -170,10 +170,10 @@ apiVersion: v1alpha1 kind: Example openAPI: definitions: - io.k8s.cli.setters.image: + io.k8s.cli.setters.image-setter: x-k8s-cli: setter: - name: image + name: image-setter value: "nginx" io.k8s.cli.setters.tag: x-k8s-cli: @@ -187,7 +187,7 @@ openAPI: pattern: IMAGE:TAG values: - marker: IMAGE - ref: '#/definitions/io.k8s.cli.setters.image' + ref: '#/definitions/io.k8s.cli.setters.image-setter' - marker: TAG ref: '#/definitions/io.k8s.cli.setters.tag' @@ -203,7 +203,7 @@ spec: spec: containers: - name: nginx - image: nginx:1.8.1 # {"$ref":"#/definitions/io.k8s.cli.substitutions.image"} + image: nginx:1.8.1 # {"$openAPI":"image"} - name: sidecar image: sidecar:1.7.9 `, diff --git a/kyaml/fieldmeta/fieldmeta.go b/kyaml/fieldmeta/fieldmeta.go index a6a34cccc..663832efc 100644 --- a/kyaml/fieldmeta/fieldmeta.go +++ b/kyaml/fieldmeta/fieldmeta.go @@ -11,6 +11,7 @@ import ( "github.com/go-openapi/spec" "sigs.k8s.io/kustomize/kyaml/errors" + "sigs.k8s.io/kustomize/kyaml/openapi" "sigs.k8s.io/kustomize/kyaml/yaml" ) @@ -54,14 +55,17 @@ func (fm *FieldMeta) Read(n *yaml.RNode) error { continue } c := strings.TrimLeft(c, "#") - // if it doesn't Unmarshal that is fine, it means there is no metadata - // other comments are valid, they just don't parse - // TODO: consider more sophisticated parsing techniques similar to what is used - // for go struct tags. - if err := fm.Schema.UnmarshalJSON([]byte(c)); err != nil { - // note: don't return an error if the comment isn't a fieldmeta struct - return nil + // check for new short hand notation or fall back to openAPI ref format + if !fm.processShortHand(c) { + // if it doesn't Unmarshal that is fine, it means there is no metadata + // other comments are valid, they just don't parse + // TODO: consider more sophisticated parsing techniques similar to what is used + // for go struct tags. + if err := fm.Schema.UnmarshalJSON([]byte(c)); err != nil { + // note: don't return an error if the comment isn't a fieldmeta struct + return nil + } } fe := fm.Schema.VendorExtensible.Extensions["x-kustomize"] if fe == nil { @@ -76,6 +80,53 @@ func (fm *FieldMeta) Read(n *yaml.RNode) error { return nil } +// processShortHand parses the comment for short hand ref and loads schema to fm +func (fm *FieldMeta) processShortHand(comment string) bool { + input := map[string]string{} + err := json.Unmarshal([]byte(comment), &input) + if err != nil { + return false + } + name := input[ShortHandRef] + if name == "" { + return false + } + + // check if setter with the name exists, else check for a substitution + // setter and substitution can't have same name in shorthand + + setterRef, err := spec.NewRef(DefinitionsPrefix + SetterDefinitionPrefix + name) + if err != nil { + return false + } + + setterRefBytes, err := setterRef.MarshalJSON() + if err != nil { + return false + } + + if _, err := openapi.Resolve(&setterRef); err == nil { + setterErr := fm.Schema.UnmarshalJSON(setterRefBytes) + return setterErr == nil + } + + substRef, err := spec.NewRef(DefinitionsPrefix + SubstitutionDefinitionPrefix + name) + if err != nil { + return false + } + + substRefBytes, err := substRef.MarshalJSON() + if err != nil { + return false + } + + if _, err := openapi.Resolve(&substRef); err == nil { + substErr := fm.Schema.UnmarshalJSON(substRefBytes) + return substErr == nil + } + return false +} + func isExtensionEmpty(x XKustomize) bool { if x.FieldSetter != nil { return false @@ -166,3 +217,20 @@ func (it FieldValueType) TagForValue(value string) string { } return "" } + +const ( + // CLIDefinitionsPrefix is the prefix for cli definition keys. + CLIDefinitionsPrefix = "io.k8s.cli." + + // SetterDefinitionPrefix is the prefix for setter definition keys. + SetterDefinitionPrefix = CLIDefinitionsPrefix + "setters." + + // SubstitutionDefinitionPrefix is the prefix for substitution definition keys. + SubstitutionDefinitionPrefix = CLIDefinitionsPrefix + "substitutions." + + // DefinitionsPrefix is the prefix used to reference definitions in the OpenAPI + DefinitionsPrefix = "#/definitions/" + + // ShortHandRef is the shorthand reference to setters and substitutions + ShortHandRef = "$openAPI" +) diff --git a/kyaml/setters2/add.go b/kyaml/setters2/add.go index 8b2946eed..8d2e2c940 100644 --- a/kyaml/setters2/add.go +++ b/kyaml/setters2/add.go @@ -79,20 +79,6 @@ func (a *Add) visitScalar(object *yaml.RNode, p string, _ *openapi.ResourceSchem return nil } -const ( - // CLIDefinitionsPrefix is the prefix for cli definition keys. - CLIDefinitionsPrefix = "io.k8s.cli." - - // SetterDefinitionPrefix is the prefix for setter definition keys. - SetterDefinitionPrefix = CLIDefinitionsPrefix + "setters." - - // SubstitutionDefinitionPrefix is the prefix for substitution definition keys. - SubstitutionDefinitionPrefix = CLIDefinitionsPrefix + "substitutions." - - // DefinitionsPrefix is the prefix used to reference definitions in the OpenAPI - DefinitionsPrefix = "#/definitions/" -) - // SetterDefinition may be used to update a files OpenAPI definitions with a new setter. type SetterDefinition struct { // Name is the name of the setter to create or update. @@ -133,7 +119,7 @@ func (sd SetterDefinition) AddToFile(path string) error { } func (sd SetterDefinition) Filter(object *yaml.RNode) (*yaml.RNode, error) { - key := SetterDefinitionPrefix + sd.Name + key := fieldmeta.SetterDefinitionPrefix + sd.Name definitions, err := object.Pipe(yaml.LookupCreate( yaml.MappingNode, openapi.SupplementaryOpenAPIFieldName, "definitions")) @@ -235,7 +221,7 @@ func (sd SubstitutionDefinition) Filter(object *yaml.RNode) (*yaml.RNode, error) } // lookup or create the definition for the substitution - defKey := SubstitutionDefinitionPrefix + sd.Name + defKey := fieldmeta.SubstitutionDefinitionPrefix + sd.Name def, err := object.Pipe(yaml.LookupCreate( yaml.MappingNode, openapi.SupplementaryOpenAPIFieldName, "definitions", defKey, "x-k8s-cli")) if err != nil { diff --git a/kyaml/setters2/list.go b/kyaml/setters2/list.go index ca00f944c..0a15ded99 100644 --- a/kyaml/setters2/list.go +++ b/kyaml/setters2/list.go @@ -8,6 +8,7 @@ import ( "strings" "sigs.k8s.io/kustomize/kyaml/errors" + "sigs.k8s.io/kustomize/kyaml/fieldmeta" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/openapi" "sigs.k8s.io/kustomize/kyaml/yaml" @@ -63,7 +64,7 @@ func (l *List) listSetters(object *yaml.RNode, resourcePath string) error { // the definition key -- contains the setter name key := node.Key.YNode().Value - if !strings.HasPrefix(key, SetterDefinitionPrefix) { + if !strings.HasPrefix(key, fieldmeta.SetterDefinitionPrefix) { // not a setter -- doesn't have the right prefix return nil } @@ -136,7 +137,7 @@ func (l *List) listSubst(object *yaml.RNode) error { // the definition key -- contains the substitution name key := node.Key.YNode().Value - if !strings.HasPrefix(key, SubstitutionDefinitionPrefix) { + if !strings.HasPrefix(key, fieldmeta.SubstitutionDefinitionPrefix) { // not a substitution -- doesn't have the right prefix return nil } diff --git a/kyaml/setters2/set.go b/kyaml/setters2/set.go index e7daedb6c..39a63a5a5 100644 --- a/kyaml/setters2/set.go +++ b/kyaml/setters2/set.go @@ -12,6 +12,7 @@ import ( "github.com/go-openapi/strfmt" "github.com/go-openapi/validate" "sigs.k8s.io/kustomize/kyaml/errors" + "sigs.k8s.io/kustomize/kyaml/fieldmeta" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/kio/kioutil" "sigs.k8s.io/kustomize/kyaml/openapi" @@ -268,7 +269,7 @@ func (s SetOpenAPI) UpdateFile(path string) error { } func (s SetOpenAPI) Filter(object *yaml.RNode) (*yaml.RNode, error) { - key := SetterDefinitionPrefix + s.Name + key := fieldmeta.SetterDefinitionPrefix + s.Name oa, err := object.Pipe(yaml.Lookup("openAPI", "definitions", key)) if err != nil { return nil, err diff --git a/kyaml/setters2/settersutil/settercreator.go b/kyaml/setters2/settersutil/settercreator.go index 03094fb53..9cc12e787 100644 --- a/kyaml/setters2/settersutil/settercreator.go +++ b/kyaml/setters2/settersutil/settercreator.go @@ -6,6 +6,7 @@ package settersutil import ( "io/ioutil" + "sigs.k8s.io/kustomize/kyaml/fieldmeta" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/openapi" "sigs.k8s.io/kustomize/kyaml/setters2" @@ -65,7 +66,7 @@ func (c SetterCreator) Create(openAPIPath, resourcesPath string) error { &setters2.Add{ FieldName: c.FieldName, FieldValue: c.FieldValue, - Ref: setters2.DefinitionsPrefix + setters2.SetterDefinitionPrefix + c.Name, + Ref: fieldmeta.DefinitionsPrefix + fieldmeta.SetterDefinitionPrefix + c.Name, })}, Outputs: []kio.Writer{inout}, }.Execute() diff --git a/kyaml/setters2/settersutil/substitutioncreator.go b/kyaml/setters2/settersutil/substitutioncreator.go index e31cb8dd9..e654c7037 100644 --- a/kyaml/setters2/settersutil/substitutioncreator.go +++ b/kyaml/setters2/settersutil/substitutioncreator.go @@ -8,6 +8,7 @@ import ( "strings" "sigs.k8s.io/kustomize/kyaml/errors" + "sigs.k8s.io/kustomize/kyaml/fieldmeta" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/openapi" "sigs.k8s.io/kustomize/kyaml/setters2" @@ -68,7 +69,7 @@ func (c SubstitutionCreator) Create(openAPIPath, resourcesPath string) error { &setters2.Add{ FieldName: c.FieldName, FieldValue: c.FieldValue, - Ref: setters2.DefinitionsPrefix + setters2.SubstitutionDefinitionPrefix + c.Name, + Ref: fieldmeta.DefinitionsPrefix + fieldmeta.SubstitutionDefinitionPrefix + c.Name, })}, Outputs: []kio.Writer{inout}, }.Execute() From 847d415f5012e6a2443f08adc9447e10a502f693 Mon Sep 17 00:00:00 2001 From: Prachi Pendse Date: Thu, 21 May 2020 15:30:14 -0700 Subject: [PATCH 19/50] Update examples versions --- .../examples/application-cr/image/go.mod | 7 +- .../examples/application-cr/image/go.sum | 61 +++++ .../injection-tshirt-sizes/image/go.mod | 2 +- .../injection-tshirt-sizes/image/go.sum | 76 ++++++ .../examples/template-go-nginx/image/go.mod | 2 +- .../examples/template-go-nginx/image/go.sum | 76 ++++++ .../examples/validator-kubeval/image/go.mod | 2 +- .../examples/validator-kubeval/image/go.sum | 232 +++++++++++++++++ .../validator-resource-requests/image/go.mod | 2 +- .../validator-resource-requests/image/go.sum | 236 ++++++++++++++++++ 10 files changed, 688 insertions(+), 8 deletions(-) diff --git a/functions/examples/application-cr/image/go.mod b/functions/examples/application-cr/image/go.mod index 0ca8c22c1..1cd596a6c 100644 --- a/functions/examples/application-cr/image/go.mod +++ b/functions/examples/application-cr/image/go.mod @@ -5,9 +5,8 @@ go 1.13 require ( github.com/gogo/protobuf v1.3.1 // indirect github.com/google/gofuzz v1.1.0 // indirect - golang.org/x/net v0.0.0-20200202094626-16171245cfb2 // indirect - k8s.io/apimachinery v0.17.2 + k8s.io/apimachinery v0.18.3 sigs.k8s.io/application v0.8.2-0.20200228023238-a3b16d81fa81 - sigs.k8s.io/kustomize/kyaml v0.1.1-0.20200227221838-a24cc4d305f4 - sigs.k8s.io/yaml v1.1.0 + sigs.k8s.io/kustomize/kyaml v0.1.11 + sigs.k8s.io/yaml v1.2.0 ) diff --git a/functions/examples/application-cr/image/go.sum b/functions/examples/application-cr/image/go.sum index 03108334c..2fabd6b33 100644 --- a/functions/examples/application-cr/image/go.sum +++ b/functions/examples/application-cr/image/go.sum @@ -2,6 +2,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= @@ -13,6 +14,8 @@ github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbt github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= @@ -24,6 +27,7 @@ github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4Rq github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= @@ -32,9 +36,14 @@ github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -45,13 +54,16 @@ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -59,7 +71,9 @@ github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustmop/soup v1.1.2-0.20190516214245-38228baa104e/go.mod h1:CgNC6SGbT+Xb8wGGvzilttZL1mc5sQ/5KkcxsZttMIk= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -76,6 +90,7 @@ github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6 github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/zapr v0.1.0 h1:h+WVe9j6HAA01niTJPA/kKH0i7e0rLZBCwauQFcRE54= @@ -120,6 +135,7 @@ github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pL github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= @@ -129,6 +145,7 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= +github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -164,6 +181,7 @@ github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= @@ -172,9 +190,11 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= @@ -228,10 +248,12 @@ github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lN github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.4.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -239,11 +261,13 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/paulmach/orb v0.1.3/go.mod h1:VFlX/8C+IQ1p6FTRRKzKoOPJnvEtA5G0Veuqwbu//Vk= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= @@ -256,32 +280,42 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -289,16 +323,20 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= @@ -307,12 +345,15 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= @@ -345,6 +386,7 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -357,6 +399,7 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -365,6 +408,8 @@ golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -391,6 +436,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd h1:3x5uuvBgE6oaXJjCOvpCC1IpgJogqQ+PqGGU3ZxAgII= golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -436,6 +483,7 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -462,6 +510,8 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 h1:XZx7nhd5GMaZpmDaEHFVafUZC7ya0fuo7cSJ3UCKYmM= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= @@ -478,6 +528,8 @@ k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655/go.mod h1:nL6pwRT8NgfF8TT k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.17.2 h1:hwDQQFbdRlpnnsR64Asdi55GyCaIP/3WQpMmbNBeWr4= k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/apimachinery v0.18.3 h1:pOGcbVAhxADgUYnjS08EFXs9QMl8qaH5U4fr5LGUrSk= +k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad/go.mod h1:XPCXEwhjaFN29a8NldXA901ElnKeKLrLtREO9ZhFyhg= k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90/go.mod h1:J69/JveO6XESwVgG53q3Uz5OSfgsv4uxpScmmyYOOlk= @@ -497,6 +549,7 @@ k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a h1:UcxjrRMyNx/i/y8G7kPvLyy7rfbeuf1PYyBf973pgyU= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f h1:GiPwtSzdP43eI1hpPCbROQCCIgCuiMMNF8YUVLF3vJo= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= @@ -511,10 +564,18 @@ sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9 sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= sigs.k8s.io/kustomize/kyaml v0.1.1-0.20200227221838-a24cc4d305f4 h1:sAwSXsspJa7zmKAmrKlYpkdhoMjQUqA06SdBTvPL0S4= sigs.k8s.io/kustomize/kyaml v0.1.1-0.20200227221838-a24cc4d305f4/go.mod h1:/NdPPfrperSCGjm55cwEro1loBVtbtVIXSb7FguK6uk= +sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= +sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= +sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06 h1:zD2IemQ4LmOcAumeiyDWXKUI2SO0NYDe3H6QGvPOVgU= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/testing_frameworks v0.1.2 h1:vK0+tvjF0BZ/RYFeZ1E6BYBwHJJXhjuZ3TdsEKH+UQM= sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/functions/examples/injection-tshirt-sizes/image/go.mod b/functions/examples/injection-tshirt-sizes/image/go.mod index aa9179b86..bebece126 100644 --- a/functions/examples/injection-tshirt-sizes/image/go.mod +++ b/functions/examples/injection-tshirt-sizes/image/go.mod @@ -2,4 +2,4 @@ module sigs.k8s.io/kustomize/functions/examples/injection-tshirt-sizes go 1.13 -require sigs.k8s.io/kustomize/kyaml v0.1.10 +require sigs.k8s.io/kustomize/kyaml v0.1.11 diff --git a/functions/examples/injection-tshirt-sizes/image/go.sum b/functions/examples/injection-tshirt-sizes/image/go.sum index a9ccee0bc..f86019328 100644 --- a/functions/examples/injection-tshirt-sizes/image/go.sum +++ b/functions/examples/injection-tshirt-sizes/image/go.sum @@ -3,14 +3,19 @@ github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5E github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -29,24 +34,64 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustmop/soup v1.1.2-0.20190516214245-38228baa104e/go.mod h1:CgNC6SGbT+Xb8wGGvzilttZL1mc5sQ/5KkcxsZttMIk= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= +github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2 h1:o20suLFB4Ri0tuzpWtyHlh7E7HnkqTNLq6aR6WVNS1w= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= +github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/spec v0.19.5 h1:Xm0Ao53uqnk9QE/LlYV5DEU09UAgpliA85QoT9LzqPw= github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= +github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -57,6 +102,9 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= @@ -73,12 +121,17 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= @@ -86,6 +139,7 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwd github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/paulmach/orb v0.1.3/go.mod h1:VFlX/8C+IQ1p6FTRRKzKoOPJnvEtA5G0Veuqwbu//Vk= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -102,6 +156,7 @@ github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40T github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -117,18 +172,24 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -136,13 +197,19 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -152,11 +219,15 @@ golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAG golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= @@ -165,7 +236,10 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -189,3 +263,5 @@ gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= sigs.k8s.io/kustomize/kyaml v0.1.10 h1:ZZfBnA/kYa9ZxUFIgI9oq3pWKzzA1gGOKgU0Hv/NhVg= sigs.k8s.io/kustomize/kyaml v0.1.10/go.mod h1:mPmeBSRy0LTMv6fSrYSoi2yIFNZVouGKDsTekE5kdhs= +sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= +sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= diff --git a/functions/examples/template-go-nginx/image/go.mod b/functions/examples/template-go-nginx/image/go.mod index 957bdcf6b..86c6fd92f 100644 --- a/functions/examples/template-go-nginx/image/go.mod +++ b/functions/examples/template-go-nginx/image/go.mod @@ -2,4 +2,4 @@ module sigs.k8s.io/kustomize/functions/examples/template-go-nginx go 1.12 -require sigs.k8s.io/kustomize/kyaml v0.1.10 +require sigs.k8s.io/kustomize/kyaml v0.1.11 diff --git a/functions/examples/template-go-nginx/image/go.sum b/functions/examples/template-go-nginx/image/go.sum index d2face732..e0c345a0b 100644 --- a/functions/examples/template-go-nginx/image/go.sum +++ b/functions/examples/template-go-nginx/image/go.sum @@ -3,14 +3,19 @@ github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5E github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -29,24 +34,64 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustmop/soup v1.1.2-0.20190516214245-38228baa104e/go.mod h1:CgNC6SGbT+Xb8wGGvzilttZL1mc5sQ/5KkcxsZttMIk= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= +github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2 h1:o20suLFB4Ri0tuzpWtyHlh7E7HnkqTNLq6aR6WVNS1w= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= +github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/spec v0.19.5 h1:Xm0Ao53uqnk9QE/LlYV5DEU09UAgpliA85QoT9LzqPw= github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= +github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -57,6 +102,9 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= @@ -73,12 +121,17 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= @@ -86,6 +139,7 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwd github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/paulmach/orb v0.1.3/go.mod h1:VFlX/8C+IQ1p6FTRRKzKoOPJnvEtA5G0Veuqwbu//Vk= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -102,6 +156,7 @@ github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40T github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -118,18 +173,24 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -137,13 +198,19 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -153,11 +220,15 @@ golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAG golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= @@ -166,7 +237,10 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -190,3 +264,5 @@ gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= sigs.k8s.io/kustomize/kyaml v0.1.10 h1:ZZfBnA/kYa9ZxUFIgI9oq3pWKzzA1gGOKgU0Hv/NhVg= sigs.k8s.io/kustomize/kyaml v0.1.10/go.mod h1:mPmeBSRy0LTMv6fSrYSoi2yIFNZVouGKDsTekE5kdhs= +sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= +sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= diff --git a/functions/examples/validator-kubeval/image/go.mod b/functions/examples/validator-kubeval/image/go.mod index 9cc966038..8d1300992 100644 --- a/functions/examples/validator-kubeval/image/go.mod +++ b/functions/examples/validator-kubeval/image/go.mod @@ -4,5 +4,5 @@ go 1.13 require ( github.com/instrumenta/kubeval v0.0.0-20190918223246-8d013ec9fc56 - sigs.k8s.io/kustomize/kyaml v0.0.0-20191212230447-6309af43a718 + sigs.k8s.io/kustomize/kyaml v0.1.11 ) diff --git a/functions/examples/validator-kubeval/image/go.sum b/functions/examples/validator-kubeval/image/go.sum index 83c84467c..3ea20e4d8 100644 --- a/functions/examples/validator-kubeval/image/go.sum +++ b/functions/examples/validator-kubeval/image/go.sum @@ -1,68 +1,300 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustmop/soup v1.1.2-0.20190516214245-38228baa104e/go.mod h1:CgNC6SGbT+Xb8wGGvzilttZL1mc5sQ/5KkcxsZttMIk= github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= +github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= +github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.19.5 h1:Xm0Ao53uqnk9QE/LlYV5DEU09UAgpliA85QoT9LzqPw= +github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= +github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357 h1:Rem2+U35z1QtPQc6r+WolF7yXiefXqDKyk+lN2pE164= github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0 h1:j30noezaCfvNLcdMYSvHLv81DxYRSt1grlpseG67vhU= github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/instrumenta/kubeval v0.0.0-20190918223246-8d013ec9fc56 h1:kKOrEaxR9KvCDdnQqjiBxbaeJg/goLvJvW0lno6aWm4= github.com/instrumenta/kubeval v0.0.0-20190918223246-8d013ec9fc56/go.mod h1:bpiMYvNpVxWjdJsS0hDRu9TrobT5GfWCZwJseGUstxE= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mattn/go-colorable v0.1.0 h1:v2XXALHHh6zHfYTJ+cSkwtyffnaOyR1MXaA91mTrb8o= github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v0.0.0-20180715050151-f15292f7a699/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/paulmach/orb v0.1.3/go.mod h1:VFlX/8C+IQ1p6FTRRKzKoOPJnvEtA5G0Veuqwbu//Vk= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v0.0.0-20180724185102-c2dbbc24a979/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.0-20180820174524-ff0d02e85550 h1:LB9SHuuXO8gnsHtexOQSpsJrrAHYA35lvHUaE74kznU= github.com/spf13/cobra v0.0.0-20180820174524-ff0d02e85550/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v0.0.0-20180814060501-14d3d4c51834/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20180821114517-d929dcbb1086 h1:iU+nPfqRqK8ShQqnpZLv8cZ9oklo6NFUcmX1JT5Rudg= github.com/spf13/pflag v0.0.0-20180821114517-d929dcbb1086/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/viper v1.1.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180816142147-da425ebb7609 h1:BcMExZAULPkihVZ7UJXK7t8rwGqisXFw75tILnafhBY= github.com/xeipuuv/gojsonschema v0.0.0-20180816142147-da425ebb7609/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180821044426-4ea2f632f6e9 h1:0RHCP7KEw0rDuVXXaT2gfV77uu6lTKa5aItB+EoFbQk= golang.org/x/sys v0.0.0-20180821044426-4ea2f632f6e9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20180810153555-6e3c4e7365dd/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d h1:LCPbGQ34PMrwad11aMZ+dbz5SAsq/0ySjRwQ8I9Qwd8= gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 h1:XZx7nhd5GMaZpmDaEHFVafUZC7ya0fuo7cSJ3UCKYmM= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= sigs.k8s.io/kustomize/kyaml v0.0.0-20191212230447-6309af43a718 h1:Kbn9yTkj4eMwY/LQLXnwDm4eTLqQsaOL81iSsr/UhQU= sigs.k8s.io/kustomize/kyaml v0.0.0-20191212230447-6309af43a718/go.mod h1:rywm/rcR5LmCBghz9956tE45OdUPChFoXVVs+WmhMTI= +sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= +sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/functions/examples/validator-resource-requests/image/go.mod b/functions/examples/validator-resource-requests/image/go.mod index 0ca504273..bd40fcf31 100644 --- a/functions/examples/validator-resource-requests/image/go.mod +++ b/functions/examples/validator-resource-requests/image/go.mod @@ -2,4 +2,4 @@ module sigs.k8s.io/kustomize/functions/examples/validator-resource-requests go 1.13 -require sigs.k8s.io/kustomize/kyaml v0.0.0-20191126155111-73fb32c85ad4 +require sigs.k8s.io/kustomize/kyaml v0.1.11 diff --git a/functions/examples/validator-resource-requests/image/go.sum b/functions/examples/validator-resource-requests/image/go.sum index dfe158f56..304f31db7 100644 --- a/functions/examples/validator-resource-requests/image/go.sum +++ b/functions/examples/validator-resource-requests/image/go.sum @@ -1,27 +1,263 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustmop/soup v1.1.2-0.20190516214245-38228baa104e/go.mod h1:CgNC6SGbT+Xb8wGGvzilttZL1mc5sQ/5KkcxsZttMIk= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= +github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= +github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.19.5 h1:Xm0Ao53uqnk9QE/LlYV5DEU09UAgpliA85QoT9LzqPw= +github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= +github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/paulmach/orb v0.1.3/go.mod h1:VFlX/8C+IQ1p6FTRRKzKoOPJnvEtA5G0Veuqwbu//Vk= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d h1:LCPbGQ34PMrwad11aMZ+dbz5SAsq/0ySjRwQ8I9Qwd8= gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 h1:XZx7nhd5GMaZpmDaEHFVafUZC7ya0fuo7cSJ3UCKYmM= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= sigs.k8s.io/kustomize/kyaml v0.0.0-20191126155111-73fb32c85ad4 h1:QfQuib3Xi0uyHUi/R5MgWmDScb5iy/+LjoaGIdpmMpE= sigs.k8s.io/kustomize/kyaml v0.0.0-20191126155111-73fb32c85ad4/go.mod h1:rywm/rcR5LmCBghz9956tE45OdUPChFoXVVs+WmhMTI= +sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= +sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= From 28c919912aabb17495a9fcc64d05e2aeab41ae92 Mon Sep 17 00:00:00 2001 From: Phillip Wittrock Date: Wed, 20 May 2020 16:11:08 -0700 Subject: [PATCH 20/50] Fix cmd/config windows issues --- cmd/config/internal/commands/cmdwrap_test.go | 7 +++ cmd/config/internal/commands/cmdxargs_test.go | 4 +- cmd/config/internal/commands/e2e/e2e_test.go | 53 ++++++++++++------- cmd/config/internal/commands/fmt_test.go | 3 +- kyaml/fn/runtime/container/container.go | 7 ++- kyaml/fn/runtime/container/container_test.go | 6 ++- kyaml/fn/runtime/exec/exec.go | 2 + kyaml/fn/runtime/runtimeutil/functiontypes.go | 13 +++-- kyaml/kio/filters/merge3_test.go | 11 ++++ kyaml/testutil/testutil.go | 7 +++ 10 files changed, 84 insertions(+), 29 deletions(-) diff --git a/cmd/config/internal/commands/cmdwrap_test.go b/cmd/config/internal/commands/cmdwrap_test.go index a55a951e5..adc8e6611 100644 --- a/cmd/config/internal/commands/cmdwrap_test.go +++ b/cmd/config/internal/commands/cmdwrap_test.go @@ -10,6 +10,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "sigs.k8s.io/kustomize/kyaml/testutil" ) const ( @@ -231,6 +232,8 @@ items: ) func TestCmd_wrap(t *testing.T) { + testutil.SkipWindows(t) + _, dir, _, ok := runtime.Caller(0) if !assert.True(t, ok) { t.FailNow() @@ -253,6 +256,8 @@ func TestCmd_wrap(t *testing.T) { } func TestCmd_wrapNoMerge(t *testing.T) { + testutil.SkipWindows(t) + _, dir, _, ok := runtime.Caller(0) if !assert.True(t, ok) { t.FailNow() @@ -280,6 +285,8 @@ func TestCmd_wrapNoMerge(t *testing.T) { } func TestCmd_wrapOverride(t *testing.T) { + testutil.SkipWindows(t) + _, dir, _, ok := runtime.Caller(0) if !assert.True(t, ok) { t.FailNow() diff --git a/cmd/config/internal/commands/cmdxargs_test.go b/cmd/config/internal/commands/cmdxargs_test.go index d3353499f..a170c49bd 100644 --- a/cmd/config/internal/commands/cmdxargs_test.go +++ b/cmd/config/internal/commands/cmdxargs_test.go @@ -5,6 +5,7 @@ package commands_test import ( "bytes" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -84,8 +85,7 @@ func TestXArgs_flags(t *testing.T) { if !assert.NoError(t, c.Command.Execute()) { t.FailNow() } - assert.Equal(t, `--a=b --c=d --e=f 1 3 2 4 -`, out.String()) + assert.Equal(t, strings.TrimSpace(`--a=b --c=d --e=f 1 3 2 4`), strings.TrimSpace(out.String())) } func TestXArgs_input(t *testing.T) { diff --git a/cmd/config/internal/commands/e2e/e2e_test.go b/cmd/config/internal/commands/e2e/e2e_test.go index 747ac28f4..6ac3d7c5a 100644 --- a/cmd/config/internal/commands/e2e/e2e_test.go +++ b/cmd/config/internal/commands/e2e/e2e_test.go @@ -10,10 +10,12 @@ import ( "os" "os/exec" "path/filepath" + "runtime" "strings" "testing" "github.com/stretchr/testify/assert" + "sigs.k8s.io/kustomize/kyaml/testutil" ) func TestRunE2e(t *testing.T) { @@ -21,7 +23,7 @@ func TestRunE2e(t *testing.T) { if !assert.NoError(t, err) { t.FailNow() } - //defer os.RemoveAll(binDir) + defer os.RemoveAll(binDir) build(t, binDir) tests := []struct { @@ -114,7 +116,7 @@ metadata: annotations: config.kubernetes.io/function: | exec: - path: "%s" + path: %s `, filepath.Join(d, "e2econtainerconfig")), } }, @@ -128,7 +130,7 @@ metadata: annotations: config.kubernetes.io/function: | exec: - path: "%s" + path: %s a-string-value: '' a-int-value: '0' a-bool-value: 'false' @@ -140,7 +142,7 @@ metadata: // Starklark function tests // { - name: "exec_function_config", + name: "exec_function_config_data", args: func(d string) []string { return []string{"--enable-exec"} }, @@ -154,7 +156,7 @@ metadata: annotations: config.kubernetes.io/function: | exec: - path: "%s" + path: %s data: stringValue: a intValue: 2 @@ -178,7 +180,7 @@ metadata: annotations: config.kubernetes.io/function: | exec: - path: "%s" + path: %s a-string-value: 'a' a-int-value: '2' a-bool-value: 'true' @@ -219,7 +221,7 @@ metadata: annotations: config.kubernetes.io/function: | exec: - path: "%s" + path: %s data: stringValue: a intValue: 2 @@ -243,7 +245,7 @@ metadata: annotations: config.kubernetes.io/function: | exec: - path: "%s" + path: %s data: stringValue: a intValue: 2 @@ -676,13 +678,11 @@ metadata: // write the input for path, data := range tt.files(binDir) { err := ioutil.WriteFile(path, []byte(data), 0600) - if !assert.NoError(t, err) { - t.FailNow() - } + testutil.AssertNoError(t, err) } args := append([]string{"run", "."}, tt.args(binDir)...) - cmd := exec.Command(filepath.Join(binDir, "kyaml"), args...) + cmd := exec.Command(filepath.Join(binDir, kyamlBin), args...) cmd.Dir = dir var stdErr, stdOut bytes.Buffer cmd.Stdout = &stdOut @@ -696,15 +696,12 @@ metadata: } return } - if !assert.NoError(t, err, stdErr.String()) { - t.FailNow() - } + testutil.AssertNoError(t, err, stdErr.String()) for path, data := range tt.expectedFiles(binDir) { b, err := ioutil.ReadFile(path) - if !assert.NoError(t, err, stdErr.String()) { - t.FailNow() - } + testutil.AssertNoError(t, err, stdErr.String()) + if !assert.Equal(t, strings.TrimSpace(data), strings.TrimSpace(string(b)), stdErr.String()) { t.FailNow() } @@ -715,15 +712,16 @@ metadata: func build(t *testing.T, binDir string) { build := exec.Command("go", "build", "-o", - filepath.Join(binDir, "e2econtainerconfig")) + filepath.Join(binDir, e2econtainerconfigBin)) build.Dir = "e2econtainerconfig" build.Stdout = os.Stdout build.Stderr = os.Stderr + build.Env = os.Environ() if !assert.NoError(t, build.Run()) { t.FailNow() } - build = exec.Command("go", "build", "-o", filepath.Join(binDir, "kyaml")) + build = exec.Command("go", "build", "-o", filepath.Join(binDir, kyamlBin)) build.Dir = filepath.Join("..", "..", "..") build.Stdout = os.Stdout build.Stderr = os.Stderr @@ -743,3 +741,18 @@ func build(t *testing.T, binDir string) { t.FailNow() } } + +var ( + e2econtainerconfigBin string + kyamlBin string +) + +func init() { + kyamlBin = "kyaml" + e2econtainerconfigBin = "e2econtainerconfig" + + if runtime.GOOS == "windows" { + kyamlBin = "kyaml.exe" + e2econtainerconfigBin = "e2econtainerconfig.exe" + } +} diff --git a/cmd/config/internal/commands/fmt_test.go b/cmd/config/internal/commands/fmt_test.go index c373a5ca7..5896d0767 100644 --- a/cmd/config/internal/commands/fmt_test.go +++ b/cmd/config/internal/commands/fmt_test.go @@ -13,6 +13,7 @@ import ( "github.com/stretchr/testify/assert" "sigs.k8s.io/kustomize/cmd/config/internal/commands" "sigs.k8s.io/kustomize/kyaml/kio/filters/testyaml" + "sigs.k8s.io/kustomize/kyaml/testutil" ) // TestCmd_files verifies the fmt command formats the files @@ -146,7 +147,7 @@ func TestCmd_failFiles(t *testing.T) { r.Command.SilenceUsage = true r.Command.SilenceErrors = true err := r.Command.Execute() - assert.EqualError(t, err, "lstat notrealfile: no such file or directory") + testutil.AssertErrorContains(t, err, "notrealfile:") } // TestCmd_files verifies the fmt command formats the files diff --git a/kyaml/fn/runtime/container/container.go b/kyaml/fn/runtime/container/container.go index 5e205f368..9b4d43876 100644 --- a/kyaml/fn/runtime/container/container.go +++ b/kyaml/fn/runtime/container/container.go @@ -194,9 +194,12 @@ func (c *Filter) getCommand() (string, []string) { // export the local environment vars to the container for _, pair := range os.Environ() { - args = append(args, "-e", strings.Split(pair, "=")[0]) + items := strings.Split(pair, "=") + if items[0] == "" || items[1] == "" { + continue + } + args = append(args, "-e", items[0]) } a := append(args, c.Image) - return "docker", a } diff --git a/kyaml/fn/runtime/container/container_test.go b/kyaml/fn/runtime/container/container_test.go index c7fd5dcdd..17bf65095 100644 --- a/kyaml/fn/runtime/container/container_test.go +++ b/kyaml/fn/runtime/container/container_test.go @@ -103,7 +103,11 @@ metadata: // configure expected env for _, e := range os.Environ() { // the process env - tt.expectedArgs = append(tt.expectedArgs, "-e", strings.Split(e, "=")[0]) + parts := strings.Split(e, "=") + if parts[0] == "" || parts[1] == "" { + continue + } + tt.expectedArgs = append(tt.expectedArgs, "-e", parts[0]) } tt.expectedArgs = append(tt.expectedArgs, tt.instance.Image) diff --git a/kyaml/fn/runtime/exec/exec.go b/kyaml/fn/runtime/exec/exec.go index cf8edeaa5..3346bc998 100644 --- a/kyaml/fn/runtime/exec/exec.go +++ b/kyaml/fn/runtime/exec/exec.go @@ -5,6 +5,7 @@ package exec import ( "io" + "os" "os/exec" "sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil" @@ -30,5 +31,6 @@ func (c *Filter) Run(reader io.Reader, writer io.Writer) error { cmd := exec.Command(c.Path, c.Args...) cmd.Stdin = reader cmd.Stdout = writer + cmd.Stderr = os.Stderr return cmd.Run() } diff --git a/kyaml/fn/runtime/runtimeutil/functiontypes.go b/kyaml/fn/runtime/runtimeutil/functiontypes.go index d068f4b2d..031857342 100644 --- a/kyaml/fn/runtime/runtimeutil/functiontypes.go +++ b/kyaml/fn/runtime/runtimeutil/functiontypes.go @@ -5,6 +5,7 @@ package runtimeutil import ( "fmt" + "os" "strings" "sigs.k8s.io/kustomize/kyaml/yaml" @@ -121,7 +122,10 @@ func getFunctionSpecFromAnnotation(n *yaml.RNode, meta yaml.ResourceMeta) *Funct for _, s := range functionAnnotationKeys { fn := meta.Annotations[s] if fn != "" { - _ = yaml.Unmarshal([]byte(fn), &fs) + err := yaml.Unmarshal([]byte(fn), &fs) + if err != nil { + fmt.Fprintf(os.Stderr, "%v\n", err) + } return &fs } } @@ -131,9 +135,12 @@ func getFunctionSpecFromAnnotation(n *yaml.RNode, meta yaml.ResourceMeta) *Funct } s, err := n.String() if err != nil { - return nil + fmt.Fprintf(os.Stderr, "%v\n", err) + } + err = yaml.Unmarshal([]byte(s), &fs) + if err != nil { + fmt.Fprintf(os.Stderr, "%v\n", err) } - _ = yaml.Unmarshal([]byte(s), &fs) return &fs } diff --git a/kyaml/kio/filters/merge3_test.go b/kyaml/kio/filters/merge3_test.go index 66974c2b5..0703233d5 100644 --- a/kyaml/kio/filters/merge3_test.go +++ b/kyaml/kio/filters/merge3_test.go @@ -10,12 +10,17 @@ import ( "runtime" "testing" + "sigs.k8s.io/kustomize/kyaml/testutil" + "github.com/stretchr/testify/assert" "sigs.k8s.io/kustomize/kyaml/copyutil" "sigs.k8s.io/kustomize/kyaml/kio/filters" ) func TestMerge3_Merge(t *testing.T) { + // TODO: make this test pass on windows -- currently failing due to comment whitespace changes + testutil.SkipWindows(t) + _, datadir, _, ok := runtime.Caller(0) if !assert.True(t, ok) { t.FailNow() @@ -58,6 +63,9 @@ func TestMerge3_Merge(t *testing.T) { // TestMerge3_Merge_path tests that if the same resource is specified multiple times // with MergeOnPath, that the resources will be merged by the filepath name. func TestMerge3_Merge_path(t *testing.T) { + // TODO: make this test pass on windows -- currently failing due to comment whitespace changes + testutil.SkipWindows(t) + _, datadir, _, ok := runtime.Caller(0) if !assert.True(t, ok) { t.FailNow() @@ -101,6 +109,9 @@ func TestMerge3_Merge_path(t *testing.T) { // TestMerge3_Merge_fail tests that if the same resource is defined multiple times // that merge will fail func TestMerge3_Merge_fail(t *testing.T) { + // TODO: make this test pass on windows -- currently failing due to comment whitespace changes + testutil.SkipWindows(t) + _, datadir, _, ok := runtime.Caller(0) if !assert.True(t, ok) { t.FailNow() diff --git a/kyaml/testutil/testutil.go b/kyaml/testutil/testutil.go index 100ad9684..b9f6b5397 100644 --- a/kyaml/testutil/testutil.go +++ b/kyaml/testutil/testutil.go @@ -5,6 +5,7 @@ package testutil import ( "bytes" + "runtime" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/yaml" @@ -59,3 +60,9 @@ func AssertNoError(t *testing.T, err error, msg ...string) { t.FailNow() } } + +func SkipWindows(t *testing.T) { + if runtime.GOOS == "windows" { + t.Skip() + } +} From 93bfb5b6f6e10b35f613fd474ca8313bd08788a9 Mon Sep 17 00:00:00 2001 From: Morten Torkildsen Date: Thu, 21 May 2020 17:36:24 -0700 Subject: [PATCH 21/50] Release cmd/config --- releasing/VERSIONS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasing/VERSIONS b/releasing/VERSIONS index f48388f31..46119626a 100644 --- a/releasing/VERSIONS +++ b/releasing/VERSIONS @@ -21,7 +21,7 @@ export api_patch=3 # cmd/config version export cmd_config_major=0 export cmd_config_minor=1 -export cmd_config_patch=11 +export cmd_config_patch=12 # cmd/kubectl version export cmd_kubectl_major=0 From ffde2c452d5a808e0ad595de82a962b5d8abd086 Mon Sep 17 00:00:00 2001 From: Jeff Regan Date: Thu, 21 May 2020 17:48:32 -0700 Subject: [PATCH 22/50] Update execPluginGuidedExample.md fix #2410 --- docs/plugins/execPluginGuidedExample.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/plugins/execPluginGuidedExample.md b/docs/plugins/execPluginGuidedExample.md index 8b713d87a..65030a339 100644 --- a/docs/plugins/execPluginGuidedExample.md +++ b/docs/plugins/execPluginGuidedExample.md @@ -202,6 +202,7 @@ Per the [instructions](../../INSTALL.md): ``` curl -s "https://raw.githubusercontent.com/\ kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash +mkdir -p $DEMO/bin mv kustomize $DEMO/bin ``` From f63faca99962b36c6e842fd63718f47121f09323 Mon Sep 17 00:00:00 2001 From: Phillip Wittrock Date: Thu, 21 May 2020 08:11:12 -0700 Subject: [PATCH 23/50] Test on windows and mac --- .github/workflows/go.yml | 128 ++++++++++++++++++++++++++++++--------- 1 file changed, 100 insertions(+), 28 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index e9f35f5b6..46c733331 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -1,28 +1,100 @@ -name: Go - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - - build: - name: Build - runs-on: ubuntu-latest - steps: - - - name: Set up Go 1.x - uses: actions/setup-go@v2 - with: - go-version: ^1.13 - id: go - - - name: Check out code into the Go module directory - uses: actions/checkout@v2 - - - name: Build - run: ./travis/kyaml-pre-commit.sh - env: - KUSTOMIZE_DOCKER_E2E: true +name: Go + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + + lint: + name: Lint + runs-on: [ubuntu-latest] + steps: + + - name: Set up Go 1.x + uses: actions/setup-go@v2 + with: + go-version: ^1.13 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Lint + run: ./travis/kyaml-pre-commit.sh + env: + KUSTOMIZE_DOCKER_E2E: false # don't need to do e2e tests for linting + + test-linux: + name: Test Linux + runs-on: [ubuntu-latest] + steps: + + - name: Set up Go 1.x + uses: actions/setup-go@v2 + with: + go-version: ^1.13 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Test kyaml + run: go test -cover ./... + working-directory: ./kyaml + + - name: Test cmd/config + run: go test -cover ./... + working-directory: ./cmd/config + env: + KUSTOMIZE_DOCKER_E2E: true + + test-macos: + name: Test MacOS + runs-on: [macos-latest] + steps: + + - name: Set up Go 1.x + uses: actions/setup-go@v2 + with: + go-version: ^1.13 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Test kyaml + run: go test -cover ./... + working-directory: ./kyaml + + - name: Test cmd/config + run: go test -cover ./... + working-directory: ./cmd/config + env: + KUSTOMIZE_DOCKER_E2E: false # docker not installed on mac + + test-windows: + name: Test Windows + runs-on: [windows-latest] + steps: + + - name: Set up Go 1.x + uses: actions/setup-go@v2 + with: + go-version: ^1.13 + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Test kyaml + run: go test -cover ./... + working-directory: ./kyaml + + - name: Test cmd/config + run: go test -cover ./... + working-directory: ./cmd/config + env: + KUSTOMIZE_DOCKER_E2E: false # docker on windows not working well yet From 589f274493ac52ac17245ddf068fdae6d84177d8 Mon Sep 17 00:00:00 2001 From: Alex Pyrgiotis Date: Fri, 22 May 2020 08:27:20 +0000 Subject: [PATCH 24/50] Mark components example as WIP Since the required implementation for the components example has not been merged yet, we must inform the users that this example is a work in progress. Signed-off-by: Alex Pyrgiotis --- examples/components.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/components.md b/examples/components.md index d5ca42fb4..30b442c0a 100644 --- a/examples/components.md +++ b/examples/components.md @@ -1,5 +1,8 @@ # Demo: Components +_(Note: This is still a work in progress. Tracking KEP: +https://github.com/kubernetes/enhancements/pull/1803)_ + Suppose you've written a very simple Web application: ```yaml From 823847d90a0e5fc8bf9825d6c14261e4b214ee22 Mon Sep 17 00:00:00 2001 From: Michael Cristina Date: Fri, 22 May 2020 13:23:20 -0500 Subject: [PATCH 25/50] Add tools package, tidy go mods --- .../examples/application-cr/image/go.mod | 2 +- .../examples/application-cr/image/go.sum | 4 ++-- hack/go.sum | 22 +++++++++++++++++++ hack/tools.go | 9 ++++++++ travis/check-go-mod.sh | 2 +- 5 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 hack/tools.go diff --git a/functions/examples/application-cr/image/go.mod b/functions/examples/application-cr/image/go.mod index 0ca8c22c1..ac3937cee 100644 --- a/functions/examples/application-cr/image/go.mod +++ b/functions/examples/application-cr/image/go.mod @@ -7,7 +7,7 @@ require ( github.com/google/gofuzz v1.1.0 // indirect golang.org/x/net v0.0.0-20200202094626-16171245cfb2 // indirect k8s.io/apimachinery v0.17.2 - sigs.k8s.io/application v0.8.2-0.20200228023238-a3b16d81fa81 + sigs.k8s.io/application v0.8.2 sigs.k8s.io/kustomize/kyaml v0.1.1-0.20200227221838-a24cc4d305f4 sigs.k8s.io/yaml v1.1.0 ) diff --git a/functions/examples/application-cr/image/go.sum b/functions/examples/application-cr/image/go.sum index 03108334c..d9d0d65ff 100644 --- a/functions/examples/application-cr/image/go.sum +++ b/functions/examples/application-cr/image/go.sum @@ -505,8 +505,8 @@ modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= -sigs.k8s.io/application v0.8.2-0.20200228023238-a3b16d81fa81 h1:UfB69/nuzg30T/EyejFxgIPHjKNbBmNL2rqOrtcV6Cs= -sigs.k8s.io/application v0.8.2-0.20200228023238-a3b16d81fa81/go.mod h1:Mv+ht9RE/QNtITYCzRbt3XTIN6t6so6cInmiyg6wOIg= +sigs.k8s.io/application v0.8.2 h1:XB7C33f7eW+1MbCJXoZa0+nP+R+S/VbAvYfCd3ufP1I= +sigs.k8s.io/application v0.8.2/go.mod h1:Mv+ht9RE/QNtITYCzRbt3XTIN6t6so6cInmiyg6wOIg= sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9NPsg= sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= sigs.k8s.io/kustomize/kyaml v0.1.1-0.20200227221838-a24cc4d305f4 h1:sAwSXsspJa7zmKAmrKlYpkdhoMjQUqA06SdBTvPL0S4= diff --git a/hack/go.sum b/hack/go.sum index 3cb808ebe..ab5bf3e00 100644 --- a/hack/go.sum +++ b/hack/go.sum @@ -57,6 +57,7 @@ github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur9 github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg= github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= +github.com/go-toolsmith/pkgload v1.0.0 h1:4DFWWMXVfbcN5So1sBNW9+yeiMqLFGl1wFLTL5R0Tgg= github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= @@ -74,6 +75,7 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= @@ -106,9 +108,11 @@ github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunE github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3 h1:JVnpOZS+qxli+rgVl98ILOXVNbW+kb5wcxeGx8ShUIw= @@ -118,7 +122,9 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a h1:GmsqmapfzSJkm28dhRoHz2tLRbJmqhU86IPgBtN3mmk= github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s= @@ -126,6 +132,7 @@ github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3 h1:jNYP github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -135,11 +142,14 @@ github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -167,7 +177,9 @@ github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d h1:AREM5mwr4u1 github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.8.1 h1:C5Dqfs/LeauYDX0jJXIe2SWmwCbGzx9yF8C8xy3Lh34= github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= @@ -194,12 +206,16 @@ github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83 h1:AtnWoOvTioyDXFvu github.com/securego/gosec v0.0.0-20200103095621-79fbf3af8d83/go.mod h1:vvbZ2Ae7AzSq3/kywjUDxSNq2SJ27RxCz2un0H3ePqE= github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sourcegraph/go-diff v0.5.1 h1:gO6i5zugwzo1RVTvgvfwCOSVegNuvnNi6bAD1QCmkHs= @@ -260,6 +276,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee h1:WG0RUwxtNT4qqaXX3DPA8zHFNm/D9xaBpxzHt1WcA/E= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -272,6 +289,7 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478 h1:l5EDrHhldLYb3ZRHDUhXF7Om7MvYXnkV9/iQNo1lX6g= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -315,6 +333,7 @@ golang.org/x/tools v0.0.0-20200102140908-9497f49d5709/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200204192400-7124308813f3 h1:Ms82wn6YK4ZycO6Bxyh0kxX3gFFVGo79CCuc52xgcys= golang.org/x/tools v0.0.0-20200204192400-7124308813f3/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -324,12 +343,15 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/hack/tools.go b/hack/tools.go new file mode 100644 index 000000000..c368cefbf --- /dev/null +++ b/hack/tools.go @@ -0,0 +1,9 @@ +// +build tools + +// This package imports things required by build scripts, to force `go mod` to see them as dependencies +// https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module +package hack + +import ( + _ "github.com/golangci/golangci-lint/cmd/golangci-lint" +) diff --git a/travis/check-go-mod.sh b/travis/check-go-mod.sh index a387f30d4..eee8beb6b 100755 --- a/travis/check-go-mod.sh +++ b/travis/check-go-mod.sh @@ -6,7 +6,7 @@ set -x set -e # verify all modules pass validation -for i in $(find . -name go.mod -not -path "./hack/*"); do +for i in $(find . -name go.mod); do pushd . cd $(dirname $i); go list -m -json all > /dev/null From eba34f40712e2534c4585d444f3e2bac270122ab Mon Sep 17 00:00:00 2001 From: Michael Cristina Date: Fri, 22 May 2020 18:46:39 -0500 Subject: [PATCH 26/50] Add init as an alias to create --- kustomize/internal/commands/create/create.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kustomize/internal/commands/create/create.go b/kustomize/internal/commands/create/create.go index 4d3d3bb64..7561e8ad6 100644 --- a/kustomize/internal/commands/create/create.go +++ b/kustomize/internal/commands/create/create.go @@ -33,9 +33,10 @@ type createFlags struct { func NewCmdCreate(fSys filesys.FileSystem, uf ifc.KunstructuredFactory) *cobra.Command { opts := createFlags{path: filesys.SelfDir} c := &cobra.Command{ - Use: "create", - Short: "Create a new kustomization in the current directory", - Long: "", + Use: "create", + Aliases: []string{"init"}, + Short: "Create a new kustomization in the current directory", + Long: "", Example: ` # Create a new overlay from the base '../base". kustomize create --resources ../base From 75d8492c514db5f8b0ebce1859d97817b8e46795 Mon Sep 17 00:00:00 2001 From: jregan Date: Fri, 22 May 2020 16:58:03 -0700 Subject: [PATCH 27/50] Remove flakey test optimization. --- api/internal/plugins/compiler/compiler.go | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/api/internal/plugins/compiler/compiler.go b/api/internal/plugins/compiler/compiler.go index 2ca04c437..d5d83f685 100644 --- a/api/internal/plugins/compiler/compiler.go +++ b/api/internal/plugins/compiler/compiler.go @@ -11,7 +11,6 @@ import ( "os/exec" "path/filepath" "strings" - "time" "github.com/pkg/errors" ) @@ -65,16 +64,8 @@ func (b *Compiler) Cleanup() { // ${pluginRoot}/${g}/${v}/$lower(${k} and places // object code next to source code. func (b *Compiler) Compile() error { - if FileYoungerThan(b.ObjPath(), 8*time.Second) { - // Skip rebuilding it, to save time in a plugin test file - // that has many distinct calls to make a harness and compile - // the plugin (only the first compile will happen). - // Make it a short time to avoid tricking someone who's actively - // developing a plugin. - return nil - } if !FileExists(b.srcPath()) { - return fmt.Errorf("cannot find source at '%s'", b.srcPath()) + return fmt.Errorf("cannot find source at '%s'", b.srcPath()) } // If you use an IDE, make sure it's go build and test flags // match those used below. Same goes for Makefile targets. @@ -104,6 +95,9 @@ func (b *Compiler) Compile() error { err, "cannot compile %s:\nSTDERR\n%s\n", b.srcPath(), b.stderr.String()) } + if result := filepath.Join(b.workDir, b.objFile()); !FileExists(result) { + return fmt.Errorf("post compile, cannot find '%s'", result) + } return nil } From 82a05738f0faafd5294360541fa21c5b32e14485 Mon Sep 17 00:00:00 2001 From: Jeff Regan Date: Fri, 22 May 2020 17:09:17 -0700 Subject: [PATCH 28/50] kustomize api v0.4.0 --- releasing/VERSIONS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releasing/VERSIONS b/releasing/VERSIONS index 46119626a..9083818dc 100644 --- a/releasing/VERSIONS +++ b/releasing/VERSIONS @@ -15,8 +15,8 @@ export kstatus_patch=1 # kustomize api version export api_major=0 -export api_minor=3 -export api_patch=3 +export api_minor=4 +export api_patch=0 # cmd/config version export cmd_config_major=0 From fd8c63772fdd6e07b299834ac08c6a603294ff51 Mon Sep 17 00:00:00 2001 From: Michael Cristina Date: Fri, 22 May 2020 19:52:16 -0500 Subject: [PATCH 29/50] Simplify install --- Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Makefile b/Makefile index e129e10be..e036bb925 100644 --- a/Makefile +++ b/Makefile @@ -43,10 +43,8 @@ verify-kustomize-e2e: test-examples-e2e-kustomize $(MYGOBIN)/golangci-lint-kustomize: ( \ set -e; \ - export GOBIN=$$(mktemp -d); \ cd hack; \ - GO111MODULE=on go install github.com/golangci/golangci-lint/cmd/golangci-lint; \ - mv $$GOBIN/golangci-lint $(MYGOBIN)/golangci-lint-kustomize \ + GO111MODULE=on go build -tags=tools -o $(MYGOBIN)/golangci-lint-kustomize github.com/golangci/golangci-lint/cmd/golangci-lint; \ ) # Version pinned by api/go.mod From b4f9e9ae56bfd702fcd3d404c7bcf2b7209e3a33 Mon Sep 17 00:00:00 2001 From: jregan Date: Fri, 22 May 2020 18:00:01 -0700 Subject: [PATCH 30/50] Make plugin utils package. --- api/internal/plugins/compiler/compiler.go | 9 +++++---- api/internal/plugins/compiler/compiler_test.go | 11 ++++++----- api/internal/plugins/loader/loader.go | 8 ++++++-- api/internal/plugins/{compiler => utils}/utils.go | 4 ++-- .../plugins/{compiler => utils}/utils_test.go | 2 +- api/testutils/kusttest/plugintestenv.go | 3 ++- functions/examples/application-cr/image/go.mod | 4 +--- functions/examples/application-cr/image/go.sum | 7 +------ .../examples/injection-tshirt-sizes/image/go.sum | 2 -- functions/examples/template-go-nginx/image/go.sum | 2 -- functions/examples/validator-kubeval/image/go.sum | 6 ++---- .../examples/validator-resource-requests/image/go.sum | 5 +---- 12 files changed, 27 insertions(+), 36 deletions(-) rename api/internal/plugins/{compiler => utils}/utils.go (98%) rename api/internal/plugins/{compiler => utils}/utils_test.go (97%) diff --git a/api/internal/plugins/compiler/compiler.go b/api/internal/plugins/compiler/compiler.go index d5d83f685..21241a480 100644 --- a/api/internal/plugins/compiler/compiler.go +++ b/api/internal/plugins/compiler/compiler.go @@ -13,6 +13,7 @@ import ( "strings" "github.com/pkg/errors" + "sigs.k8s.io/kustomize/api/internal/plugins/utils" ) // Compiler creates Go plugin object files. @@ -64,7 +65,7 @@ func (b *Compiler) Cleanup() { // ${pluginRoot}/${g}/${v}/$lower(${k} and places // object code next to source code. func (b *Compiler) Compile() error { - if !FileExists(b.srcPath()) { + if !utils.FileExists(b.srcPath()) { return fmt.Errorf("cannot find source at '%s'", b.srcPath()) } // If you use an IDE, make sure it's go build and test flags @@ -77,8 +78,8 @@ func (b *Compiler) Compile() error { "plugin", "-o", b.objFile(), } - goBin := goBin() - if !FileExists(goBin) { + goBin := utils.GoBin() + if !utils.FileExists(goBin) { return fmt.Errorf( "cannot find go compiler %s", goBin) } @@ -95,7 +96,7 @@ func (b *Compiler) Compile() error { err, "cannot compile %s:\nSTDERR\n%s\n", b.srcPath(), b.stderr.String()) } - if result := filepath.Join(b.workDir, b.objFile()); !FileExists(result) { + if result := filepath.Join(b.workDir, b.objFile()); !utils.FileExists(result) { return fmt.Errorf("post compile, cannot find '%s'", result) } return nil diff --git a/api/internal/plugins/compiler/compiler_test.go b/api/internal/plugins/compiler/compiler_test.go index 36f4031cb..eaa9a5f25 100644 --- a/api/internal/plugins/compiler/compiler_test.go +++ b/api/internal/plugins/compiler/compiler_test.go @@ -9,11 +9,12 @@ import ( "sigs.k8s.io/kustomize/api/filesys" . "sigs.k8s.io/kustomize/api/internal/plugins/compiler" + "sigs.k8s.io/kustomize/api/internal/plugins/utils" ) // Regression coverage over compiler behavior. func TestCompiler(t *testing.T) { - srcRoot, err := DeterminePluginSrcRoot(filesys.MakeFsOnDisk()) + srcRoot, err := utils.DeterminePluginSrcRoot(filesys.MakeFsOnDisk()) if err != nil { t.Error(err) } @@ -29,11 +30,11 @@ func TestCompiler(t *testing.T) { if err != nil { t.Error(err) } - if !FileExists(expectObj) { + if !utils.FileExists(expectObj) { t.Errorf("didn't find expected obj file %s", expectObj) } c.Cleanup() - if FileExists(expectObj) { + if utils.FileExists(expectObj) { t.Errorf("obj file '%s' should be gone", expectObj) } @@ -48,11 +49,11 @@ func TestCompiler(t *testing.T) { if err != nil { t.Error(err) } - if !FileExists(expectObj) { + if !utils.FileExists(expectObj) { t.Errorf("didn't find expected obj file %s", expectObj) } c.Cleanup() - if FileExists(expectObj) { + if utils.FileExists(expectObj) { t.Errorf("obj file '%s' should be gone", expectObj) } } diff --git a/api/internal/plugins/loader/loader.go b/api/internal/plugins/loader/loader.go index 76e8ac611..aad57ff65 100644 --- a/api/internal/plugins/loader/loader.go +++ b/api/internal/plugins/loader/loader.go @@ -15,6 +15,7 @@ import ( "sigs.k8s.io/kustomize/api/ifc" "sigs.k8s.io/kustomize/api/internal/plugins/builtinhelpers" "sigs.k8s.io/kustomize/api/internal/plugins/execplugin" + "sigs.k8s.io/kustomize/api/internal/plugins/utils" "sigs.k8s.io/kustomize/api/konfig" "sigs.k8s.io/kustomize/api/resid" "sigs.k8s.io/kustomize/api/resmap" @@ -202,8 +203,11 @@ func (l *Loader) loadGoPlugin(id resid.ResId) (resmap.Configurable, error) { if c, ok := registry[regId]; ok { return copyPlugin(c), nil } - absPath := l.absolutePluginPath(id) - p, err := plugin.Open(absPath + ".so") + absPath := l.absolutePluginPath(id) + ".so" + if !utils.FileExists(absPath) { + return nil, fmt.Errorf("cannot find Go object code '%s'", absPath) + } + p, err := plugin.Open(absPath) if err != nil { return nil, errors.Wrapf(err, "plugin %s fails to load", absPath) } diff --git a/api/internal/plugins/compiler/utils.go b/api/internal/plugins/utils/utils.go similarity index 98% rename from api/internal/plugins/compiler/utils.go rename to api/internal/plugins/utils/utils.go index 40bde9e96..af4976cea 100644 --- a/api/internal/plugins/compiler/utils.go +++ b/api/internal/plugins/utils/utils.go @@ -1,7 +1,7 @@ // Copyright 2020 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -package compiler +package utils import ( "os" @@ -13,7 +13,7 @@ import ( "sigs.k8s.io/kustomize/api/konfig" ) -func goBin() string { +func GoBin() string { return filepath.Join(runtime.GOROOT(), "bin", "go") } diff --git a/api/internal/plugins/compiler/utils_test.go b/api/internal/plugins/utils/utils_test.go similarity index 97% rename from api/internal/plugins/compiler/utils_test.go rename to api/internal/plugins/utils/utils_test.go index aab8d0973..e4341287b 100644 --- a/api/internal/plugins/compiler/utils_test.go +++ b/api/internal/plugins/utils/utils_test.go @@ -1,7 +1,7 @@ // Copyright 2020 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -package compiler +package utils import ( "path/filepath" diff --git a/api/testutils/kusttest/plugintestenv.go b/api/testutils/kusttest/plugintestenv.go index 3bbb8d702..4e9dbde26 100644 --- a/api/testutils/kusttest/plugintestenv.go +++ b/api/testutils/kusttest/plugintestenv.go @@ -9,6 +9,7 @@ import ( "sigs.k8s.io/kustomize/api/filesys" "sigs.k8s.io/kustomize/api/internal/plugins/compiler" + "sigs.k8s.io/kustomize/api/internal/plugins/utils" "sigs.k8s.io/kustomize/api/konfig" ) @@ -33,7 +34,7 @@ func newPluginTestEnv(t *testing.T) *pluginTestEnv { // the FileSystem used for loading config yaml in the tests. func (x *pluginTestEnv) set() *pluginTestEnv { var err error - x.pluginRoot, err = compiler.DeterminePluginSrcRoot(filesys.MakeFsOnDisk()) + x.pluginRoot, err = utils.DeterminePluginSrcRoot(filesys.MakeFsOnDisk()) if err != nil { x.t.Error(err) } diff --git a/functions/examples/application-cr/image/go.mod b/functions/examples/application-cr/image/go.mod index c0ccccc65..417346f0e 100644 --- a/functions/examples/application-cr/image/go.mod +++ b/functions/examples/application-cr/image/go.mod @@ -3,10 +3,8 @@ module sigs.k8s.io/kustomize/functions/examples/application-cr go 1.13 require ( - github.com/gogo/protobuf v1.3.1 // indirect - github.com/google/gofuzz v1.1.0 // indirect k8s.io/apimachinery v0.18.3 sigs.k8s.io/application v0.8.2 - sigs.k8s.io/kustomize/kyaml v0.1.11 + sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) diff --git a/functions/examples/application-cr/image/go.sum b/functions/examples/application-cr/image/go.sum index b9acc79e2..dcc6eb22f 100644 --- a/functions/examples/application-cr/image/go.sum +++ b/functions/examples/application-cr/image/go.sum @@ -261,6 +261,7 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= @@ -406,8 +407,6 @@ golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -526,8 +525,6 @@ k8s.io/apiextensions-apiserver v0.17.0 h1:+XgcGxqaMztkbbvsORgCmHIb4uImHKvTjNyu7b k8s.io/apiextensions-apiserver v0.17.0/go.mod h1:XiIFUakZywkUl54fVXa7QTEHcqQz9HG55nHd1DCoHj8= k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655/go.mod h1:nL6pwRT8NgfF8TT68DBI8uEePRt89cSvoXUVqbkWHq4= k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.17.2 h1:hwDQQFbdRlpnnsR64Asdi55GyCaIP/3WQpMmbNBeWr4= -k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.18.3 h1:pOGcbVAhxADgUYnjS08EFXs9QMl8qaH5U4fr5LGUrSk= k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad/go.mod h1:XPCXEwhjaFN29a8NldXA901ElnKeKLrLtREO9ZhFyhg= @@ -562,8 +559,6 @@ sigs.k8s.io/application v0.8.2 h1:XB7C33f7eW+1MbCJXoZa0+nP+R+S/VbAvYfCd3ufP1I= sigs.k8s.io/application v0.8.2/go.mod h1:Mv+ht9RE/QNtITYCzRbt3XTIN6t6so6cInmiyg6wOIg= sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9NPsg= sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= -sigs.k8s.io/kustomize/kyaml v0.1.1-0.20200227221838-a24cc4d305f4 h1:sAwSXsspJa7zmKAmrKlYpkdhoMjQUqA06SdBTvPL0S4= -sigs.k8s.io/kustomize/kyaml v0.1.1-0.20200227221838-a24cc4d305f4/go.mod h1:/NdPPfrperSCGjm55cwEro1loBVtbtVIXSb7FguK6uk= sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= diff --git a/functions/examples/injection-tshirt-sizes/image/go.sum b/functions/examples/injection-tshirt-sizes/image/go.sum index f86019328..95eca6142 100644 --- a/functions/examples/injection-tshirt-sizes/image/go.sum +++ b/functions/examples/injection-tshirt-sizes/image/go.sum @@ -261,7 +261,5 @@ gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 h1:XZx7nhd5GMaZpmDaEHFVafUZC7ya0fuo7cSJ3UCKYmM= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/kustomize/kyaml v0.1.10 h1:ZZfBnA/kYa9ZxUFIgI9oq3pWKzzA1gGOKgU0Hv/NhVg= -sigs.k8s.io/kustomize/kyaml v0.1.10/go.mod h1:mPmeBSRy0LTMv6fSrYSoi2yIFNZVouGKDsTekE5kdhs= sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= diff --git a/functions/examples/template-go-nginx/image/go.sum b/functions/examples/template-go-nginx/image/go.sum index e0c345a0b..f83d3c1d5 100644 --- a/functions/examples/template-go-nginx/image/go.sum +++ b/functions/examples/template-go-nginx/image/go.sum @@ -262,7 +262,5 @@ gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 h1:XZx7nhd5GMaZpmDaEHFVafUZC7ya0fuo7cSJ3UCKYmM= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/kustomize/kyaml v0.1.10 h1:ZZfBnA/kYa9ZxUFIgI9oq3pWKzzA1gGOKgU0Hv/NhVg= -sigs.k8s.io/kustomize/kyaml v0.1.10/go.mod h1:mPmeBSRy0LTMv6fSrYSoi2yIFNZVouGKDsTekE5kdhs= sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= diff --git a/functions/examples/validator-kubeval/image/go.sum b/functions/examples/validator-kubeval/image/go.sum index 3ea20e4d8..b38f1035a 100644 --- a/functions/examples/validator-kubeval/image/go.sum +++ b/functions/examples/validator-kubeval/image/go.sum @@ -257,6 +257,7 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c h1:Vco5b+cuG5NNfORVxZy6bYZQ7rsigisU1WQFkvQ0L5E= golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20180810153555-6e3c4e7365dd/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -278,6 +279,7 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= @@ -287,13 +289,9 @@ gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d h1:LCPbGQ34PMrwad11aMZ+dbz5SAsq/0ySjRwQ8I9Qwd8= -gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 h1:XZx7nhd5GMaZpmDaEHFVafUZC7ya0fuo7cSJ3UCKYmM= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/kustomize/kyaml v0.0.0-20191212230447-6309af43a718 h1:Kbn9yTkj4eMwY/LQLXnwDm4eTLqQsaOL81iSsr/UhQU= -sigs.k8s.io/kustomize/kyaml v0.0.0-20191212230447-6309af43a718/go.mod h1:rywm/rcR5LmCBghz9956tE45OdUPChFoXVVs+WmhMTI= sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= diff --git a/functions/examples/validator-resource-requests/image/go.sum b/functions/examples/validator-resource-requests/image/go.sum index 304f31db7..68dcbd4e8 100644 --- a/functions/examples/validator-resource-requests/image/go.sum +++ b/functions/examples/validator-resource-requests/image/go.sum @@ -243,6 +243,7 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= @@ -252,12 +253,8 @@ gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d h1:LCPbGQ34PMrwad11aMZ+dbz5SAsq/0ySjRwQ8I9Qwd8= -gopkg.in/yaml.v3 v3.0.0-20191026110619-0b21df46bc1d/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 h1:XZx7nhd5GMaZpmDaEHFVafUZC7ya0fuo7cSJ3UCKYmM= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/kustomize/kyaml v0.0.0-20191126155111-73fb32c85ad4 h1:QfQuib3Xi0uyHUi/R5MgWmDScb5iy/+LjoaGIdpmMpE= -sigs.k8s.io/kustomize/kyaml v0.0.0-20191126155111-73fb32c85ad4/go.mod h1:rywm/rcR5LmCBghz9956tE45OdUPChFoXVVs+WmhMTI= sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= From 02184dbfc57f301bc9046f78dbfc6ba71101fbb0 Mon Sep 17 00:00:00 2001 From: jregan Date: Fri, 22 May 2020 18:54:17 -0700 Subject: [PATCH 31/50] Add logging. --- api/internal/plugins/compiler/compiler.go | 8 +++++--- api/internal/plugins/loader/loader.go | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/api/internal/plugins/compiler/compiler.go b/api/internal/plugins/compiler/compiler.go index 21241a480..1ec33bb32 100644 --- a/api/internal/plugins/compiler/compiler.go +++ b/api/internal/plugins/compiler/compiler.go @@ -96,10 +96,12 @@ func (b *Compiler) Compile() error { err, "cannot compile %s:\nSTDERR\n%s\n", b.srcPath(), b.stderr.String()) } - if result := filepath.Join(b.workDir, b.objFile()); !utils.FileExists(result) { - return fmt.Errorf("post compile, cannot find '%s'", result) + result := filepath.Join(b.workDir, b.objFile()) + if utils.FileExists(result) { + log.Printf("Created %s", result) + return nil } - return nil + return fmt.Errorf("post compile, cannot find '%s'", result) } func (b *Compiler) report() { diff --git a/api/internal/plugins/loader/loader.go b/api/internal/plugins/loader/loader.go index aad57ff65..59ad5858e 100644 --- a/api/internal/plugins/loader/loader.go +++ b/api/internal/plugins/loader/loader.go @@ -5,6 +5,7 @@ package loader import ( "fmt" + "log" "os" "path/filepath" "plugin" @@ -207,6 +208,7 @@ func (l *Loader) loadGoPlugin(id resid.ResId) (resmap.Configurable, error) { if !utils.FileExists(absPath) { return nil, fmt.Errorf("cannot find Go object code '%s'", absPath) } + log.Printf("Attempting plugin load from '%s'", absPath) p, err := plugin.Open(absPath) if err != nil { return nil, errors.Wrapf(err, "plugin %s fails to load", absPath) From a1931299208c74f0474ecf34175457bb817dd021 Mon Sep 17 00:00:00 2001 From: jregan Date: Sat, 23 May 2020 17:51:32 -0700 Subject: [PATCH 32/50] Remove race in tests. --- api/internal/plugins/compiler/compiler.go | 8 +------- api/internal/plugins/compiler/compiler_test.go | 8 -------- api/internal/plugins/loader/loader.go | 3 ++- 3 files changed, 3 insertions(+), 16 deletions(-) diff --git a/api/internal/plugins/compiler/compiler.go b/api/internal/plugins/compiler/compiler.go index 1ec33bb32..04f827eff 100644 --- a/api/internal/plugins/compiler/compiler.go +++ b/api/internal/plugins/compiler/compiler.go @@ -55,12 +55,6 @@ func (b *Compiler) ObjPath() string { return filepath.Join(b.workDir, b.objFile()) } -// Cleanup provides a hook to delete the .so file. -// Ignore errors. -func (b *Compiler) Cleanup() { - _ = os.Remove(b.ObjPath()) -} - // Compile changes its working directory to // ${pluginRoot}/${g}/${v}/$lower(${k} and places // object code next to source code. @@ -98,7 +92,7 @@ func (b *Compiler) Compile() error { } result := filepath.Join(b.workDir, b.objFile()) if utils.FileExists(result) { - log.Printf("Created %s", result) + log.Printf("compiler created: %s", result) return nil } return fmt.Errorf("post compile, cannot find '%s'", result) diff --git a/api/internal/plugins/compiler/compiler_test.go b/api/internal/plugins/compiler/compiler_test.go index eaa9a5f25..e4cd5b2a2 100644 --- a/api/internal/plugins/compiler/compiler_test.go +++ b/api/internal/plugins/compiler/compiler_test.go @@ -33,10 +33,6 @@ func TestCompiler(t *testing.T) { if !utils.FileExists(expectObj) { t.Errorf("didn't find expected obj file %s", expectObj) } - c.Cleanup() - if utils.FileExists(expectObj) { - t.Errorf("obj file '%s' should be gone", expectObj) - } c.SetGVK("builtin", "", "SecretGenerator") expectObj = filepath.Join( @@ -52,8 +48,4 @@ func TestCompiler(t *testing.T) { if !utils.FileExists(expectObj) { t.Errorf("didn't find expected obj file %s", expectObj) } - c.Cleanup() - if utils.FileExists(expectObj) { - t.Errorf("obj file '%s' should be gone", expectObj) - } } diff --git a/api/internal/plugins/loader/loader.go b/api/internal/plugins/loader/loader.go index 59ad5858e..09dc3a167 100644 --- a/api/internal/plugins/loader/loader.go +++ b/api/internal/plugins/loader/loader.go @@ -206,7 +206,8 @@ func (l *Loader) loadGoPlugin(id resid.ResId) (resmap.Configurable, error) { } absPath := l.absolutePluginPath(id) + ".so" if !utils.FileExists(absPath) { - return nil, fmt.Errorf("cannot find Go object code '%s'", absPath) + return nil, fmt.Errorf( + "expected file with Go object code at: %s", absPath) } log.Printf("Attempting plugin load from '%s'", absPath) p, err := plugin.Open(absPath) From 315f7c6e7fbaffed8cd25d18b6161c8ce6323edc Mon Sep 17 00:00:00 2001 From: jregan Date: Sun, 24 May 2020 10:28:30 -0700 Subject: [PATCH 33/50] Upgrade CLI to API v0.4.0 --- kustomize/go.mod | 2 +- kustomize/go.sum | 6 ++---- kustomize/internal/commands/kustfile/kustomizationfile.go | 5 ++++- plugin/builtin/annotationstransformer/go.mod | 4 ++-- plugin/builtin/configmapgenerator/go.mod | 4 ++-- plugin/builtin/hashtransformer/go.mod | 4 ++-- plugin/builtin/imagetagtransformer/go.mod | 4 ++-- plugin/builtin/labeltransformer/go.mod | 4 ++-- plugin/builtin/legacyordertransformer/go.mod | 4 ++-- plugin/builtin/namespacetransformer/go.mod | 4 ++-- plugin/builtin/patchjson6902transformer/go.mod | 4 ++-- plugin/builtin/patchstrategicmergetransformer/go.mod | 4 ++-- plugin/builtin/patchtransformer/go.mod | 4 ++-- plugin/builtin/prefixsuffixtransformer/go.mod | 4 ++-- plugin/builtin/replicacounttransformer/go.mod | 4 ++-- plugin/builtin/secretgenerator/go.mod | 4 ++-- plugin/builtin/valueaddtransformer/go.mod | 4 ++-- plugin/someteam.example.com/v1/bashedconfigmap/go.mod | 4 ++-- plugin/someteam.example.com/v1/chartinflator/go.mod | 4 ++-- plugin/someteam.example.com/v1/dateprefixer/go.mod | 4 ++-- plugin/someteam.example.com/v1/gogetter/go.mod | 4 ++-- plugin/someteam.example.com/v1/printpluginenv/go.mod | 4 ++-- .../someteam.example.com/v1/replacementtransformer/go.mod | 4 ++-- plugin/someteam.example.com/v1/secretsfromdatabase/go.mod | 4 ++-- plugin/someteam.example.com/v1/sedtransformer/go.mod | 4 ++-- plugin/someteam.example.com/v1/someservicegenerator/go.mod | 4 ++-- plugin/someteam.example.com/v1/stringprefixer/go.mod | 4 ++-- plugin/someteam.example.com/v1/validator/go.mod | 4 ++-- 28 files changed, 57 insertions(+), 56 deletions(-) diff --git a/kustomize/go.mod b/kustomize/go.mod index 3f86edf7b..66df2d84a 100644 --- a/kustomize/go.mod +++ b/kustomize/go.mod @@ -12,7 +12,7 @@ require ( k8s.io/apimachinery v0.17.0 k8s.io/client-go v0.17.0 sigs.k8s.io/controller-runtime v0.4.0 - sigs.k8s.io/kustomize/api v0.3.3 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/cmd/config v0.1.11 sigs.k8s.io/kustomize/cmd/kubectl v0.0.3 sigs.k8s.io/kustomize/kstatus v0.0.1 diff --git a/kustomize/go.sum b/kustomize/go.sum index fc6105e6b..8eb56a09e 100644 --- a/kustomize/go.sum +++ b/kustomize/go.sum @@ -786,12 +786,10 @@ sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9 sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= -sigs.k8s.io/kustomize/api v0.3.3 h1:E3nUKiTnezsA1NoGA37jWlatjjMq2a/i1UIGAzSZGnk= -sigs.k8s.io/kustomize/api v0.3.3/go.mod h1:JU8ooABgAO6xVDiWThwKtKShI8phhAALPaMfBpmNDOM= +sigs.k8s.io/kustomize/api v0.4.0 h1:EhlPWA4S1S1UUPzNanVR/SfPQ7g66j+jiN8ovtyby3Y= +sigs.k8s.io/kustomize/api v0.4.0/go.mod h1:NqxqT+wbYHrD0P19Uu4dXiMsVwI1IwQs+MJHlLhmPqQ= sigs.k8s.io/kustomize/cmd/config v0.1.11 h1:wSVvutGQtgiYWcd4IH5sr8jP4v6zgr9IcUAbA+32ULo= sigs.k8s.io/kustomize/cmd/config v0.1.11/go.mod h1:w6vK8ulANez23sOTtmdej5KpBU9Ykdomu/W70PC8YMs= -sigs.k8s.io/kustomize/kyaml v0.1.10 h1:ZZfBnA/kYa9ZxUFIgI9oq3pWKzzA1gGOKgU0Hv/NhVg= -sigs.k8s.io/kustomize/kyaml v0.1.10/go.mod h1:mPmeBSRy0LTMv6fSrYSoi2yIFNZVouGKDsTekE5kdhs= sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= diff --git a/kustomize/internal/commands/kustfile/kustomizationfile.go b/kustomize/internal/commands/kustfile/kustomizationfile.go index fe30bf2cb..2a9a77916 100644 --- a/kustomize/internal/commands/kustfile/kustomizationfile.go +++ b/kustomize/internal/commands/kustfile/kustomizationfile.go @@ -148,7 +148,10 @@ func (mf *kustomizationFile) Read() (*types.Kustomization, error) { if err != nil { return nil, err } - data = types.FixKustomizationPreUnmarshalling(data) + data, err = types.FixKustomizationPreUnmarshalling(data) + if err != nil { + return nil, err + } var k types.Kustomization err = yaml.Unmarshal(data, &k) if err != nil { diff --git a/plugin/builtin/annotationstransformer/go.mod b/plugin/builtin/annotationstransformer/go.mod index bfe97e349..70bd46a31 100644 --- a/plugin/builtin/annotationstransformer/go.mod +++ b/plugin/builtin/annotationstransformer/go.mod @@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/builtin/annotationstransformer go 1.13 require ( - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/configmapgenerator/go.mod b/plugin/builtin/configmapgenerator/go.mod index 4ffdf7a61..e9935d83e 100644 --- a/plugin/builtin/configmapgenerator/go.mod +++ b/plugin/builtin/configmapgenerator/go.mod @@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/configmapgenerator go 1.13 require ( - sigs.k8s.io/kustomize/api v0.3.1 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/hashtransformer/go.mod b/plugin/builtin/hashtransformer/go.mod index a5a55bb66..3287430bc 100644 --- a/plugin/builtin/hashtransformer/go.mod +++ b/plugin/builtin/hashtransformer/go.mod @@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/builtin/hashtransformer go 1.13 -require sigs.k8s.io/kustomize/api v0.3.1 +require sigs.k8s.io/kustomize/api v0.4.0 -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/imagetagtransformer/go.mod b/plugin/builtin/imagetagtransformer/go.mod index c90ceef97..e3aa4c329 100644 --- a/plugin/builtin/imagetagtransformer/go.mod +++ b/plugin/builtin/imagetagtransformer/go.mod @@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/imagetagtransformer go 1.13 require ( - sigs.k8s.io/kustomize/api v0.3.1 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/labeltransformer/go.mod b/plugin/builtin/labeltransformer/go.mod index ca0ca4b4a..71f034107 100644 --- a/plugin/builtin/labeltransformer/go.mod +++ b/plugin/builtin/labeltransformer/go.mod @@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/builtin/labeltransformer go 1.13 require ( - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/legacyordertransformer/go.mod b/plugin/builtin/legacyordertransformer/go.mod index c4796359a..339b802d0 100644 --- a/plugin/builtin/legacyordertransformer/go.mod +++ b/plugin/builtin/legacyordertransformer/go.mod @@ -4,7 +4,7 @@ go 1.13 require ( github.com/pkg/errors v0.8.1 - sigs.k8s.io/kustomize/api v0.3.1 + sigs.k8s.io/kustomize/api v0.4.0 ) -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/namespacetransformer/go.mod b/plugin/builtin/namespacetransformer/go.mod index 68e66338b..45fb99742 100644 --- a/plugin/builtin/namespacetransformer/go.mod +++ b/plugin/builtin/namespacetransformer/go.mod @@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/builtin/namespacetransformer go 1.13 require ( - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/patchjson6902transformer/go.mod b/plugin/builtin/patchjson6902transformer/go.mod index 4a5c95b6d..5673fcceb 100644 --- a/plugin/builtin/patchjson6902transformer/go.mod +++ b/plugin/builtin/patchjson6902transformer/go.mod @@ -5,9 +5,9 @@ go 1.13 require ( github.com/evanphx/json-patch v4.5.0+incompatible github.com/pkg/errors v0.8.1 - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/patchstrategicmergetransformer/go.mod b/plugin/builtin/patchstrategicmergetransformer/go.mod index 225a7f1cb..1ecec0e80 100644 --- a/plugin/builtin/patchstrategicmergetransformer/go.mod +++ b/plugin/builtin/patchstrategicmergetransformer/go.mod @@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/builtin/patchstrategicmergetransformer go 1.13 require ( - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/patchtransformer/go.mod b/plugin/builtin/patchtransformer/go.mod index ffc3aba3b..f029cbf6d 100644 --- a/plugin/builtin/patchtransformer/go.mod +++ b/plugin/builtin/patchtransformer/go.mod @@ -5,9 +5,9 @@ go 1.13 require ( github.com/evanphx/json-patch v4.5.0+incompatible github.com/pkg/errors v0.8.1 - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/prefixsuffixtransformer/go.mod b/plugin/builtin/prefixsuffixtransformer/go.mod index 755cf2175..4de584b23 100644 --- a/plugin/builtin/prefixsuffixtransformer/go.mod +++ b/plugin/builtin/prefixsuffixtransformer/go.mod @@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/prefixsuffixtransformer go 1.13 require ( - sigs.k8s.io/kustomize/api v0.3.1 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/replicacounttransformer/go.mod b/plugin/builtin/replicacounttransformer/go.mod index 3f23d492b..31ecaeb6f 100644 --- a/plugin/builtin/replicacounttransformer/go.mod +++ b/plugin/builtin/replicacounttransformer/go.mod @@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/replicacounttransformer go 1.13 require ( - sigs.k8s.io/kustomize/api v0.3.1 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/secretgenerator/go.mod b/plugin/builtin/secretgenerator/go.mod index 737199eb5..d649f3597 100644 --- a/plugin/builtin/secretgenerator/go.mod +++ b/plugin/builtin/secretgenerator/go.mod @@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/secretgenerator go 1.13 require ( - sigs.k8s.io/kustomize/api v0.3.1 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/builtin/valueaddtransformer/go.mod b/plugin/builtin/valueaddtransformer/go.mod index ebf021c9a..0bbe2c86e 100644 --- a/plugin/builtin/valueaddtransformer/go.mod +++ b/plugin/builtin/valueaddtransformer/go.mod @@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/valueaddtransformer go 1.13 require ( - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api diff --git a/plugin/someteam.example.com/v1/bashedconfigmap/go.mod b/plugin/someteam.example.com/v1/bashedconfigmap/go.mod index 207096ddb..ee1cb424b 100644 --- a/plugin/someteam.example.com/v1/bashedconfigmap/go.mod +++ b/plugin/someteam.example.com/v1/bashedconfigmap/go.mod @@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/bashedconfigmap go 1.13 -require sigs.k8s.io/kustomize/api v0.3.1 +require sigs.k8s.io/kustomize/api v0.4.0 -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/chartinflator/go.mod b/plugin/someteam.example.com/v1/chartinflator/go.mod index beadc9452..bd658cc30 100644 --- a/plugin/someteam.example.com/v1/chartinflator/go.mod +++ b/plugin/someteam.example.com/v1/chartinflator/go.mod @@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/chartinflator go 1.13 -require sigs.k8s.io/kustomize/api v0.3.1 +require sigs.k8s.io/kustomize/api v0.4.0 -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/dateprefixer/go.mod b/plugin/someteam.example.com/v1/dateprefixer/go.mod index 4d95777d3..946ae97be 100644 --- a/plugin/someteam.example.com/v1/dateprefixer/go.mod +++ b/plugin/someteam.example.com/v1/dateprefixer/go.mod @@ -4,8 +4,8 @@ go 1.13 require ( github.com/pkg/errors v0.8.1 - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/gogetter/go.mod b/plugin/someteam.example.com/v1/gogetter/go.mod index 3d80df521..5276cbedf 100644 --- a/plugin/someteam.example.com/v1/gogetter/go.mod +++ b/plugin/someteam.example.com/v1/gogetter/go.mod @@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/gogetter go 1.13 -require sigs.k8s.io/kustomize/api v0.3.1 +require sigs.k8s.io/kustomize/api v0.4.0 -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/printpluginenv/go.mod b/plugin/someteam.example.com/v1/printpluginenv/go.mod index 04441a6f8..3585518fd 100644 --- a/plugin/someteam.example.com/v1/printpluginenv/go.mod +++ b/plugin/someteam.example.com/v1/printpluginenv/go.mod @@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/printworkdir go 1.13 -require sigs.k8s.io/kustomize/api v0.3.1 +require sigs.k8s.io/kustomize/api v0.4.0 -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/replacementtransformer/go.mod b/plugin/someteam.example.com/v1/replacementtransformer/go.mod index 200d3f838..ea8dc5cc2 100644 --- a/plugin/someteam.example.com/v1/replacementtransformer/go.mod +++ b/plugin/someteam.example.com/v1/replacementtransformer/go.mod @@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/replacementtransform go 1.13 require ( - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/secretsfromdatabase/go.mod b/plugin/someteam.example.com/v1/secretsfromdatabase/go.mod index 01db57a40..4b12af1a3 100644 --- a/plugin/someteam.example.com/v1/secretsfromdatabase/go.mod +++ b/plugin/someteam.example.com/v1/secretsfromdatabase/go.mod @@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/secretsfromdatabase go 1.13 require ( - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/sedtransformer/go.mod b/plugin/someteam.example.com/v1/sedtransformer/go.mod index ebeb0c988..960c3d477 100644 --- a/plugin/someteam.example.com/v1/sedtransformer/go.mod +++ b/plugin/someteam.example.com/v1/sedtransformer/go.mod @@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/sedtransformer go 1.13 -require sigs.k8s.io/kustomize/api v0.3.1 +require sigs.k8s.io/kustomize/api v0.4.0 -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/someservicegenerator/go.mod b/plugin/someteam.example.com/v1/someservicegenerator/go.mod index d3ff9d9f0..cb3dea630 100644 --- a/plugin/someteam.example.com/v1/someservicegenerator/go.mod +++ b/plugin/someteam.example.com/v1/someservicegenerator/go.mod @@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/someservicegenerator go 1.13 require ( - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/stringprefixer/go.mod b/plugin/someteam.example.com/v1/stringprefixer/go.mod index d8df777cb..c811d75f4 100644 --- a/plugin/someteam.example.com/v1/stringprefixer/go.mod +++ b/plugin/someteam.example.com/v1/stringprefixer/go.mod @@ -4,8 +4,8 @@ go 1.13 require ( github.com/pkg/errors v0.8.1 - sigs.k8s.io/kustomize/api v0.0.0 + sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/yaml v1.2.0 ) -replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api diff --git a/plugin/someteam.example.com/v1/validator/go.mod b/plugin/someteam.example.com/v1/validator/go.mod index aa65d8b18..68fa22dd8 100644 --- a/plugin/someteam.example.com/v1/validator/go.mod +++ b/plugin/someteam.example.com/v1/validator/go.mod @@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/validator go 1.13 -require sigs.k8s.io/kustomize/api v0.3.1 +require sigs.k8s.io/kustomize/api v0.4.0 -replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api +replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api From e05404f89c646ec1c6d122092b70da8dbc014397 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Tue, 26 May 2020 10:12:33 -0700 Subject: [PATCH 34/50] Improve error message for merge error --- api/krusty/generatormergeandreplace_test.go | 4 ++-- api/resmap/resmap.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api/krusty/generatormergeandreplace_test.go b/api/krusty/generatormergeandreplace_test.go index 32407bd30..1b6798502 100644 --- a/api/krusty/generatormergeandreplace_test.go +++ b/api/krusty/generatormergeandreplace_test.go @@ -541,7 +541,7 @@ configMapGenerator: if err == nil { t.Fatalf("expected error") } - if !strings.Contains(err.Error(), "must merge or replace") { + if !strings.Contains(err.Error(), "behavior must be merge or replace") { t.Fatalf("unexpected error %v", err) } } @@ -566,7 +566,7 @@ secretGenerator: if err == nil { t.Fatalf("expected error") } - if !strings.Contains(err.Error(), "must merge or replace") { + if !strings.Contains(err.Error(), "behavior must be merge or replace") { t.Fatalf("unexpected error %v", err) } } diff --git a/api/resmap/resmap.go b/api/resmap/resmap.go index 380dbe79d..56b67b181 100644 --- a/api/resmap/resmap.go +++ b/api/resmap/resmap.go @@ -691,7 +691,7 @@ func (m *resWrangler) appendReplaceOrMerge( res.Merge(old) default: return fmt.Errorf( - "id %#v exists; must merge or replace", id) + "id %#v exists; behavior must be merge or replace", id) } i, err := m.Replace(res) if err != nil { From 98ba8b7491a424fd42ec105d4b610003926fdf37 Mon Sep 17 00:00:00 2001 From: Phani Teja Marupaka Date: Sat, 23 May 2020 17:03:40 -0700 Subject: [PATCH 35/50] Change to create setter --- .../internal/commands/cmdcreatesetter_test.go | 6 ++--- .../commands/cmdcreatesubstitution_test.go | 4 +-- cmd/config/internal/commands/cmdset_test.go | 8 +++--- kyaml/fieldmeta/fieldmeta.go | 27 ++++++++++++------- kyaml/setters2/add_test.go | 14 +++++----- kyaml/setters2/example_test.go | 6 ++--- 6 files changed, 37 insertions(+), 28 deletions(-) diff --git a/cmd/config/internal/commands/cmdcreatesetter_test.go b/cmd/config/internal/commands/cmdcreatesetter_test.go index ff6da4f31..001de307e 100644 --- a/cmd/config/internal/commands/cmdcreatesetter_test.go +++ b/cmd/config/internal/commands/cmdcreatesetter_test.go @@ -62,7 +62,7 @@ kind: Deployment metadata: name: nginx-deployment spec: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openapi":"replicas"} `, }, { @@ -124,7 +124,7 @@ kind: Deployment metadata: name: nginx-deployment spec: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openapi":"replicas"} `, }, @@ -165,7 +165,7 @@ apiVersion: example.com/v1beta1 kind: Example spec: list: - - "a" # {"$ref":"#/definitions/io.k8s.cli.setters.list"} + - "a" # {"$openapi":"list"} `, }, } diff --git a/cmd/config/internal/commands/cmdcreatesubstitution_test.go b/cmd/config/internal/commands/cmdcreatesubstitution_test.go index 90ffc854b..505afbf39 100644 --- a/cmd/config/internal/commands/cmdcreatesubstitution_test.go +++ b/cmd/config/internal/commands/cmdcreatesubstitution_test.go @@ -99,7 +99,7 @@ spec: spec: containers: - name: nginx - image: nginx:1.7.9 # {"$ref":"#/definitions/io.k8s.cli.substitutions.my-image-subst"} + image: nginx:1.7.9 # {"$openapi":"my-image-subst"} - name: sidecar image: sidecar:1.7.9 `, @@ -181,7 +181,7 @@ spec: spec: containers: - name: nginx - image: something/nginx::1.7.9/nginxotherthing # {"$ref":"#/definitions/io.k8s.cli.substitutions.my-image-subst"} + image: something/nginx::1.7.9/nginxotherthing # {"$openapi":"my-image-subst"} - name: sidecar image: sidecar:1.7.9 `, diff --git a/cmd/config/internal/commands/cmdset_test.go b/cmd/config/internal/commands/cmdset_test.go index c10edcf08..5e253573c 100644 --- a/cmd/config/internal/commands/cmdset_test.go +++ b/cmd/config/internal/commands/cmdset_test.go @@ -50,7 +50,7 @@ kind: Deployment metadata: name: nginx-deployment spec: - replicas: 3 # {"$openAPI":"replicas"} + replicas: 3 # {"$openapi":"replicas"} `, expectedOpenAPI: ` apiVersion: v1alpha1 @@ -71,7 +71,7 @@ kind: Deployment metadata: name: nginx-deployment spec: - replicas: 4 # {"$openAPI":"replicas"} + replicas: 4 # {"$openapi":"replicas"} `, }, { @@ -161,7 +161,7 @@ spec: spec: containers: - name: nginx - image: nginx:1.7.9 # {"$openAPI":"image"} + image: nginx:1.7.9 # {"$openapi":"image"} - name: sidecar image: sidecar:1.7.9 `, @@ -203,7 +203,7 @@ spec: spec: containers: - name: nginx - image: nginx:1.8.1 # {"$openAPI":"image"} + image: nginx:1.8.1 # {"$openapi":"image"} - name: sidecar image: sidecar:1.7.9 `, diff --git a/kyaml/fieldmeta/fieldmeta.go b/kyaml/fieldmeta/fieldmeta.go index 663832efc..c8597a29e 100644 --- a/kyaml/fieldmeta/fieldmeta.go +++ b/kyaml/fieldmeta/fieldmeta.go @@ -5,6 +5,7 @@ package fieldmeta import ( "encoding/json" + "fmt" "reflect" "strconv" "strings" @@ -87,7 +88,7 @@ func (fm *FieldMeta) processShortHand(comment string) bool { if err != nil { return false } - name := input[ShortHandRef] + name := input[shortHandRef] if name == "" { return false } @@ -147,11 +148,11 @@ func (fm *FieldMeta) Write(n *yaml.RNode) error { } else { delete(fm.Schema.VendorExtensible.Extensions, "x-kustomize") } - b, err := json.Marshal(fm.Schema) - if err != nil { - return errors.Wrap(err) - } - n.YNode().LineComment = string(b) + + // Ex: {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} should be converted to + // {"openAPI":"replicas"} and added to the line comment + arr := strings.Split(fm.Schema.Ref.String(), ".") + n.YNode().LineComment = fmt.Sprintf(`{"%s":"%s"}`, shortHandRef, arr[len(arr)-1]) return nil } @@ -230,7 +231,15 @@ const ( // DefinitionsPrefix is the prefix used to reference definitions in the OpenAPI DefinitionsPrefix = "#/definitions/" - - // ShortHandRef is the shorthand reference to setters and substitutions - ShortHandRef = "$openAPI" ) + +// shortHandRef is the shorthand reference to setters and substitutions +var shortHandRef = "$openapi" + +func SetShortHandRef(ref string) { + shortHandRef = ref +} + +func ShortHandRef() string { + return shortHandRef +} diff --git a/kyaml/setters2/add_test.go b/kyaml/setters2/add_test.go index ab5524287..9516612c3 100644 --- a/kyaml/setters2/add_test.go +++ b/kyaml/setters2/add_test.go @@ -42,7 +42,7 @@ kind: Deployment metadata: name: nginx-deployment spec: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openapi":"replicas"} `, }, { @@ -67,9 +67,9 @@ kind: Deployment metadata: name: nginx-deployment annotations: - something: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + something: 3 # {"$openapi":"replicas"} spec: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openapi":"replicas"} `, }, { @@ -97,7 +97,7 @@ metadata: annotations: something: 3 spec: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openapi":"replicas"} `, }, { @@ -123,9 +123,9 @@ kind: Deployment metadata: name: nginx-deployment annotations: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openapi":"replicas"} spec: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openapi":"replicas"} `, }, { @@ -153,7 +153,7 @@ metadata: annotations: replicas: 3 spec: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openapi":"replicas"} `, }, { diff --git a/kyaml/setters2/example_test.go b/kyaml/setters2/example_test.go index 10e3c918a..8bb36c485 100644 --- a/kyaml/setters2/example_test.go +++ b/kyaml/setters2/example_test.go @@ -162,7 +162,7 @@ spec: // annotations: // something: 3 // spec: - // replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + // replicas: 3 # {"$openapi":"replicas"} } // ExampleAdd demonstrates adding a setter reference to fields. @@ -196,7 +196,7 @@ spec: // metadata: // name: nginx-deployment // annotations: - // something: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + // something: 3 # {"$openapi":"replicas"} // spec: - // replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + // replicas: 3 # {"$openapi":"replicas"} } From 5449dbc775c0bffbb5024724700047e47b424606 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Tue, 26 May 2020 14:44:37 -0700 Subject: [PATCH 36/50] Fix git commit hash ignored --- api/internal/git/cloner.go | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/api/internal/git/cloner.go b/api/internal/git/cloner.go index 63fcaa21e..e3696db3e 100644 --- a/api/internal/git/cloner.go +++ b/api/internal/git/cloner.go @@ -4,7 +4,6 @@ package git import ( - "bytes" "log" "os/exec" @@ -34,34 +33,38 @@ func ClonerUsingGitExec(repoSpec *RepoSpec) error { cmd := exec.Command( gitProgram, "clone", - "--depth=1", repoSpec.CloneSpec(), - "-b", - repoSpec.Ref, repoSpec.Dir.String()) - var out bytes.Buffer - cmd.Stdout = &out - cmd.Stderr = &out - err = cmd.Run() + out, err := cmd.CombinedOutput() if err != nil { - log.Printf("Error cloning git repo: %s", out.String()) + log.Printf("Error cloning git repo: %s", out) return errors.Wrapf( err, "trouble cloning git repo %v in %s", repoSpec.CloneSpec(), repoSpec.Dir.String()) } + cmd = exec.Command( + gitProgram, + "checkout", + repoSpec.Ref) + cmd.Dir = repoSpec.Dir.String() + out, err = cmd.CombinedOutput() + if err != nil { + log.Printf("Error checking out ref: %s", out) + return errors.Wrapf(err, "trouble checking out %s", repoSpec.Ref) + } + cmd = exec.Command( gitProgram, "submodule", "update", "--init", "--recursive") - cmd.Stdout = &out - cmd.Stderr = &out cmd.Dir = repoSpec.Dir.String() - err = cmd.Run() + out, err = cmd.CombinedOutput() if err != nil { + log.Printf("Error fetching submodules: %s", out) return errors.Wrapf(err, "trouble fetching submodules for %s", repoSpec.CloneSpec()) } From e5e4f33ac7c4e625948bd4693f0ce70722e5b2ec Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Tue, 26 May 2020 17:42:31 -0700 Subject: [PATCH 37/50] Fix go-getter --- api/loader/getter.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/loader/getter.go b/api/loader/getter.go index 5e663b932..9d0e89d90 100644 --- a/api/loader/getter.go +++ b/api/loader/getter.go @@ -60,6 +60,8 @@ func getRemoteTarget(rs *remoteTargetSpec) error { return err } + rs.Dir = filesys.ConfirmedDir(rs.Dir.Join("repo")) + // Get the pwd pwd, err := os.Getwd() if err != nil { From 90c23026c2d591aa775dc9f1d677128aa59e4e65 Mon Sep 17 00:00:00 2001 From: jregan Date: Wed, 27 May 2020 10:56:01 -0700 Subject: [PATCH 38/50] Pin to kstatus/v0.0.2 --- cmd/kubectl/go.mod | 4 +--- cmd/kubectl/go.sum | 2 ++ kustomize/go.mod | 7 ++----- kustomize/go.sum | 2 ++ 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/cmd/kubectl/go.mod b/cmd/kubectl/go.mod index e25767373..d501e9b09 100644 --- a/cmd/kubectl/go.mod +++ b/cmd/kubectl/go.mod @@ -13,8 +13,6 @@ require ( k8s.io/component-base v0.17.0 // indirect k8s.io/kubectl v0.0.0-20191219154910-1528d4eea6dd sigs.k8s.io/controller-runtime v0.4.0 - sigs.k8s.io/kustomize/kstatus v0.0.1 + sigs.k8s.io/kustomize/kstatus v0.0.2 sigs.k8s.io/kustomize/kyaml v0.1.11 ) - -replace sigs.k8s.io/kustomize/kstatus v0.0.1 => ../../kstatus diff --git a/cmd/kubectl/go.sum b/cmd/kubectl/go.sum index 9ba9020d1..e4119a9be 100644 --- a/cmd/kubectl/go.sum +++ b/cmd/kubectl/go.sum @@ -597,6 +597,8 @@ sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9 sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= +sigs.k8s.io/kustomize/kstatus v0.0.2 h1:7GoHi/Vq7rIAS8AQONlfcdaCpVXY0HqzNhU5us7dToA= +sigs.k8s.io/kustomize/kstatus v0.0.2/go.mod h1:6qUKWLy4+yGExtjbs+fibz2tOBZG7413yx2NHyAzIU0= sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= diff --git a/kustomize/go.mod b/kustomize/go.mod index 66df2d84a..f168b8ea1 100644 --- a/kustomize/go.mod +++ b/kustomize/go.mod @@ -15,7 +15,7 @@ require ( sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/cmd/config v0.1.11 sigs.k8s.io/kustomize/cmd/kubectl v0.0.3 - sigs.k8s.io/kustomize/kstatus v0.0.1 + sigs.k8s.io/kustomize/kstatus v0.0.2 sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) @@ -25,7 +25,4 @@ exclude ( sigs.k8s.io/kustomize/api v0.2.0 ) -replace ( - sigs.k8s.io/kustomize/cmd/kubectl v0.0.3 => ../cmd/kubectl - sigs.k8s.io/kustomize/kstatus v0.0.1 => ../kstatus -) +replace sigs.k8s.io/kustomize/cmd/kubectl v0.0.3 => ../cmd/kubectl diff --git a/kustomize/go.sum b/kustomize/go.sum index 8eb56a09e..94e84cc90 100644 --- a/kustomize/go.sum +++ b/kustomize/go.sum @@ -790,6 +790,8 @@ sigs.k8s.io/kustomize/api v0.4.0 h1:EhlPWA4S1S1UUPzNanVR/SfPQ7g66j+jiN8ovtyby3Y= sigs.k8s.io/kustomize/api v0.4.0/go.mod h1:NqxqT+wbYHrD0P19Uu4dXiMsVwI1IwQs+MJHlLhmPqQ= sigs.k8s.io/kustomize/cmd/config v0.1.11 h1:wSVvutGQtgiYWcd4IH5sr8jP4v6zgr9IcUAbA+32ULo= sigs.k8s.io/kustomize/cmd/config v0.1.11/go.mod h1:w6vK8ulANez23sOTtmdej5KpBU9Ykdomu/W70PC8YMs= +sigs.k8s.io/kustomize/kstatus v0.0.2 h1:7GoHi/Vq7rIAS8AQONlfcdaCpVXY0HqzNhU5us7dToA= +sigs.k8s.io/kustomize/kstatus v0.0.2/go.mod h1:6qUKWLy4+yGExtjbs+fibz2tOBZG7413yx2NHyAzIU0= sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= From f7ca4fa1062baa95b97b8fd50218599db01b417c Mon Sep 17 00:00:00 2001 From: Phani Teja Marupaka Date: Wed, 27 May 2020 11:47:31 -0700 Subject: [PATCH 39/50] Suggested Changes --- kyaml/fieldmeta/fieldmeta.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kyaml/fieldmeta/fieldmeta.go b/kyaml/fieldmeta/fieldmeta.go index c8597a29e..b24a792a9 100644 --- a/kyaml/fieldmeta/fieldmeta.go +++ b/kyaml/fieldmeta/fieldmeta.go @@ -81,7 +81,9 @@ func (fm *FieldMeta) Read(n *yaml.RNode) error { return nil } -// processShortHand parses the comment for short hand ref and loads schema to fm +// processShortHand parses the comment for short hand ref, loads schema to fm +// and returns true if successful, returns false for any other cases and not throw +// error, as the comment might not be a setter ref func (fm *FieldMeta) processShortHand(comment string) bool { input := map[string]string{} err := json.Unmarshal([]byte(comment), &input) From def978b33450ebff7d8c36def36ec348a79dc457 Mon Sep 17 00:00:00 2001 From: jregan Date: Wed, 27 May 2020 12:20:39 -0700 Subject: [PATCH 40/50] pin kustomize to cmd/kubectl_v0_1_0 --- kustomize/go.mod | 4 +--- kustomize/go.sum | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kustomize/go.mod b/kustomize/go.mod index f168b8ea1..d3e8488cd 100644 --- a/kustomize/go.mod +++ b/kustomize/go.mod @@ -14,7 +14,7 @@ require ( sigs.k8s.io/controller-runtime v0.4.0 sigs.k8s.io/kustomize/api v0.4.0 sigs.k8s.io/kustomize/cmd/config v0.1.11 - sigs.k8s.io/kustomize/cmd/kubectl v0.0.3 + sigs.k8s.io/kustomize/cmd/kubectl v0.1.0 sigs.k8s.io/kustomize/kstatus v0.0.2 sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 @@ -24,5 +24,3 @@ exclude ( github.com/russross/blackfriday v2.0.0+incompatible sigs.k8s.io/kustomize/api v0.2.0 ) - -replace sigs.k8s.io/kustomize/cmd/kubectl v0.0.3 => ../cmd/kubectl diff --git a/kustomize/go.sum b/kustomize/go.sum index 94e84cc90..b3d5eb683 100644 --- a/kustomize/go.sum +++ b/kustomize/go.sum @@ -790,6 +790,8 @@ sigs.k8s.io/kustomize/api v0.4.0 h1:EhlPWA4S1S1UUPzNanVR/SfPQ7g66j+jiN8ovtyby3Y= sigs.k8s.io/kustomize/api v0.4.0/go.mod h1:NqxqT+wbYHrD0P19Uu4dXiMsVwI1IwQs+MJHlLhmPqQ= sigs.k8s.io/kustomize/cmd/config v0.1.11 h1:wSVvutGQtgiYWcd4IH5sr8jP4v6zgr9IcUAbA+32ULo= sigs.k8s.io/kustomize/cmd/config v0.1.11/go.mod h1:w6vK8ulANez23sOTtmdej5KpBU9Ykdomu/W70PC8YMs= +sigs.k8s.io/kustomize/cmd/kubectl v0.1.0 h1:TAAv9ZhUalC0tqgHp1rr8Vv5fA5ILcQwGYjdAGdCmhg= +sigs.k8s.io/kustomize/cmd/kubectl v0.1.0/go.mod h1:qF57icqAzCMX+jN0jp21jlWiVBzyXWwPdBF8aW/amX0= sigs.k8s.io/kustomize/kstatus v0.0.2 h1:7GoHi/Vq7rIAS8AQONlfcdaCpVXY0HqzNhU5us7dToA= sigs.k8s.io/kustomize/kstatus v0.0.2/go.mod h1:6qUKWLy4+yGExtjbs+fibz2tOBZG7413yx2NHyAzIU0= sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= From c35f5b0189e7ef14e4453fe0d50a1676b79293b6 Mon Sep 17 00:00:00 2001 From: jregan Date: Wed, 27 May 2020 13:32:22 -0700 Subject: [PATCH 41/50] pin CLI to API v0.4.1 --- kustomize/go.mod | 2 +- kustomize/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kustomize/go.mod b/kustomize/go.mod index d3e8488cd..af769b484 100644 --- a/kustomize/go.mod +++ b/kustomize/go.mod @@ -12,7 +12,7 @@ require ( k8s.io/apimachinery v0.17.0 k8s.io/client-go v0.17.0 sigs.k8s.io/controller-runtime v0.4.0 - sigs.k8s.io/kustomize/api v0.4.0 + sigs.k8s.io/kustomize/api v0.4.1 sigs.k8s.io/kustomize/cmd/config v0.1.11 sigs.k8s.io/kustomize/cmd/kubectl v0.1.0 sigs.k8s.io/kustomize/kstatus v0.0.2 diff --git a/kustomize/go.sum b/kustomize/go.sum index b3d5eb683..669a0aac9 100644 --- a/kustomize/go.sum +++ b/kustomize/go.sum @@ -786,8 +786,8 @@ sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9 sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= -sigs.k8s.io/kustomize/api v0.4.0 h1:EhlPWA4S1S1UUPzNanVR/SfPQ7g66j+jiN8ovtyby3Y= -sigs.k8s.io/kustomize/api v0.4.0/go.mod h1:NqxqT+wbYHrD0P19Uu4dXiMsVwI1IwQs+MJHlLhmPqQ= +sigs.k8s.io/kustomize/api v0.4.1 h1:Lwco6Rsxd3TcubJzx9wAV2k7roh0M95FjrS29n76TRo= +sigs.k8s.io/kustomize/api v0.4.1/go.mod h1:NqxqT+wbYHrD0P19Uu4dXiMsVwI1IwQs+MJHlLhmPqQ= sigs.k8s.io/kustomize/cmd/config v0.1.11 h1:wSVvutGQtgiYWcd4IH5sr8jP4v6zgr9IcUAbA+32ULo= sigs.k8s.io/kustomize/cmd/config v0.1.11/go.mod h1:w6vK8ulANez23sOTtmdej5KpBU9Ykdomu/W70PC8YMs= sigs.k8s.io/kustomize/cmd/kubectl v0.1.0 h1:TAAv9ZhUalC0tqgHp1rr8Vv5fA5ILcQwGYjdAGdCmhg= From 4dcf81050ecc5f85fc4d31cfa525e89cd3ece865 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Wed, 27 May 2020 13:58:28 -0700 Subject: [PATCH 42/50] Consider stringData when calculate secret hash --- api/k8sdeps/kunstruct/hasher.go | 8 +++++++- api/k8sdeps/kunstruct/hasher_test.go | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/api/k8sdeps/kunstruct/hasher.go b/api/k8sdeps/kunstruct/hasher.go index 6abfb4a52..35bf5eb22 100644 --- a/api/k8sdeps/kunstruct/hasher.go +++ b/api/k8sdeps/kunstruct/hasher.go @@ -78,6 +78,7 @@ func secretHash(sec *corev1.Secret) (string, error) { // encodeConfigMap encodes a ConfigMap. // Data, Kind, and Name are taken into account. +// BinaryData is included if it's not empty to avoid useless key in output. func encodeConfigMap(cm *corev1.ConfigMap) (string, error) { // json.Marshal sorts the keys in a stable order in the encoding m := map[string]interface{}{"kind": "ConfigMap", "name": cm.Name, "data": cm.Data} @@ -93,9 +94,14 @@ func encodeConfigMap(cm *corev1.ConfigMap) (string, error) { // encodeSecret encodes a Secret. // Data, Kind, Name, and Type are taken into account. +// StringData is included if it's not empty to avoid useless key in output. func encodeSecret(sec *corev1.Secret) (string, error) { // json.Marshal sorts the keys in a stable order in the encoding - data, err := json.Marshal(map[string]interface{}{"kind": "Secret", "type": sec.Type, "name": sec.Name, "data": sec.Data}) + m := map[string]interface{}{"kind": "Secret", "type": sec.Type, "name": sec.Name, "data": sec.Data} + if len(sec.StringData) > 0 { + m["stringData"] = sec.StringData + } + data, err := json.Marshal(m) if err != nil { return "", err } diff --git a/api/k8sdeps/kunstruct/hasher_test.go b/api/k8sdeps/kunstruct/hasher_test.go index 5fd83d6ff..0c43ec4d9 100644 --- a/api/k8sdeps/kunstruct/hasher_test.go +++ b/api/k8sdeps/kunstruct/hasher_test.go @@ -58,6 +58,10 @@ func TestSecretHash(t *testing.T) { {"one key", &corev1.Secret{Type: "my-type", Data: map[string][]byte{"one": []byte("")}}, "74bd68bm66", ""}, // three keys (tests sorting order) {"three keys", &corev1.Secret{Type: "my-type", Data: map[string][]byte{"two": []byte("2"), "one": []byte(""), "three": []byte("3")}}, "dgcb6h9tmk", ""}, + // with stringdata + {"stringdata", &corev1.Secret{Type: "my-type", Data: map[string][]byte{"one": []byte("")}, StringData: map[string]string{"two": "2"}}, "ckm7f798g2", ""}, + // empty stringdata + {"empty stringdata", &corev1.Secret{Type: "my-type", Data: map[string][]byte{"one": []byte("")}, StringData: map[string]string{}}, "74bd68bm66", ""}, } for _, c := range cases { @@ -125,6 +129,12 @@ func TestEncodeSecret(t *testing.T) { Data: map[string][]byte{"two": []byte("2"), "one": []byte(""), "three": []byte("3")}, }, `{"data":{"one":"","three":"Mw==","two":"Mg=="},"kind":"Secret","name":"","type":"my-type"}`, ""}, + // with stringdata + {"stringdata", &corev1.Secret{Type: "my-type", Data: map[string][]byte{"one": []byte("")}, StringData: map[string]string{"two": "2"}}, + `{"data":{"one":""},"kind":"Secret","name":"","stringData":{"two":"2"},"type":"my-type"}`, ""}, + // empty stringdata + {"empty stringdata", &corev1.Secret{Type: "my-type", Data: map[string][]byte{"one": []byte("")}, StringData: map[string]string{}}, + `{"data":{"one":""},"kind":"Secret","name":"","type":"my-type"}`, ""}, } for _, c := range cases { s, err := encodeSecret(c.secret) From a7af7df9cbe16a7237c794bf455315e49569d31c Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Thu, 28 May 2020 10:15:19 -0700 Subject: [PATCH 43/50] Add a note for go-getter --- examples/remoteBuild.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/remoteBuild.md b/examples/remoteBuild.md index 2c4a48714..d47a77ebf 100644 --- a/examples/remoteBuild.md +++ b/examples/remoteBuild.md @@ -71,6 +71,10 @@ test 3 == \ The url should follow [hashicorp/go-getter URL format](https://github.com/hashicorp/go-getter#url-format). +Note that using `//` in the url will only copy the directory specified by the path +after `//`, which means some relative paths, like `../xxx`, may not work. Using `/` to copy +entire repo. For more details please see [go-getter documentation](https://github.com/hashicorp/go-getter#subdirectories). + Note that S3 and GCS are NOT supported to avoid introducing massive dependency. Here are some example urls From 8ac23654064f8154e5fbd47869eb3368adc69b2e Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Thu, 28 May 2020 12:34:58 -0700 Subject: [PATCH 44/50] Check replace in go.mod before releasing --- releasing/releasing/go.mod | 5 ++- releasing/releasing/go.sum | 11 +++++ releasing/releasing/main.go | 6 +++ releasing/releasing/modulemeta.go | 37 ++++++++++++++++- releasing/releasing/modulemeta_test.go | 57 ++++++++++++++++++++++++++ 5 files changed, 114 insertions(+), 2 deletions(-) diff --git a/releasing/releasing/go.mod b/releasing/releasing/go.mod index 7b7020029..3d5bb6e0b 100644 --- a/releasing/releasing/go.mod +++ b/releasing/releasing/go.mod @@ -2,4 +2,7 @@ module sigs.k8s.io/kustomize/releasing go 1.13 -require github.com/spf13/cobra v1.0.0 +require ( + github.com/spf13/cobra v1.0.0 + golang.org/x/mod v0.3.0 +) diff --git a/releasing/releasing/go.sum b/releasing/releasing/go.sum index 193d57c78..dd3cee8f6 100644 --- a/releasing/releasing/go.sum +++ b/releasing/releasing/go.sum @@ -103,29 +103,40 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/releasing/releasing/main.go b/releasing/releasing/main.go index 821fd946d..2459da61c 100644 --- a/releasing/releasing/main.go +++ b/releasing/releasing/main.go @@ -212,6 +212,12 @@ func releaseCmdImpl(args []string) error { mod.Tag(), ) + // Check is there replace statement in go.mod + err = mod.CheckModReplace() + if err != nil { + return err + } + // Run module tests output, err := mod.RunTest() if err != nil { diff --git a/releasing/releasing/modulemeta.go b/releasing/releasing/modulemeta.go index 4e90fb255..66fc5cfab 100644 --- a/releasing/releasing/modulemeta.go +++ b/releasing/releasing/modulemeta.go @@ -1,14 +1,20 @@ package main import ( + "fmt" + "io/ioutil" + "os" "os/exec" "path/filepath" + "strings" + + "golang.org/x/mod/modfile" ) type module struct { // Module name name string - // Module path. This path is only used for running test. + // Module path path string // Module version version moduleVersion @@ -23,6 +29,35 @@ func (m *module) UpdateVersion(tags string) error { return nil } +func (m *module) CheckModReplace() error { + goModPath := filepath.Join(m.path, m.name, "go.mod") + info, err := os.Stat(goModPath) + if os.IsNotExist(err) || info.IsDir() { + return nil + } + + goModContent, err := ioutil.ReadFile(goModPath) + if err != nil { + return err + } + return checkModReplace(goModPath, goModContent) +} + +func checkModReplace(path string, data []byte) error { + f, err := modfile.Parse(path, data, nil) + if err != nil { + return err + } + if len(f.Replace) > 0 { + var msg strings.Builder + for _, replace := range f.Replace { + fmt.Fprintf(&msg, " - Please update go.mod to pin a specific version of %s\n", replace.Old.Path) + } + return fmt.Errorf("Found replace in %s\n%s", path, msg.String()) + } + return nil +} + func (m *module) Tag() string { return m.name + "/" + m.version.String() } diff --git a/releasing/releasing/modulemeta_test.go b/releasing/releasing/modulemeta_test.go index c8764ac4e..15754037e 100644 --- a/releasing/releasing/modulemeta_test.go +++ b/releasing/releasing/modulemeta_test.go @@ -66,3 +66,60 @@ func TestModuleTags(t *testing.T) { t.Errorf("Tag %s doesn't match expected %s", m.Tag(), expect) } } + +func TestCheckModReplace1(t *testing.T) { + path := "testpath" + dataString := `module sigs.k8s.io/kustomize/kustomize/v3 + + go 1.13 + + replace ( + sigs.k8s.io/kustomize/cmd/kubectl v0.0.3 => ../cmd/kubectl + sigs.k8s.io/kustomize/kstatus v0.0.1 => ../kstatus + )` + + expect := `Found replace in testpath + - Please update go.mod to pin a specific version of sigs.k8s.io/kustomize/cmd/kubectl + - Please update go.mod to pin a specific version of sigs.k8s.io/kustomize/kstatus +` + + err := checkModReplace(path, []byte(dataString)) + if err.Error() != expect { + t.Errorf("Error %s doesn't match expected %s", err.Error(), expect) + } +} + +func TestCheckModReplace2(t *testing.T) { + path := "testpath" + dataString := `module sigs.k8s.io/kustomize/kustomize/v3 + + go 1.13 + + replace sigs.k8s.io/kustomize/cmd/kubectl v0.0.3 => ../cmd/kubectl` + + expect := `Found replace in testpath + - Please update go.mod to pin a specific version of sigs.k8s.io/kustomize/cmd/kubectl +` + + err := checkModReplace(path, []byte(dataString)) + if err.Error() != expect { + t.Errorf("Error %s doesn't match expected %s", err.Error(), expect) + } +} + +func TestCheckModReplace3(t *testing.T) { + path := "testpath" + dataString := `module sigs.k8s.io/kustomize/kustomize/v3 + + go 1.13 + + exclude ( + github.com/russross/blackfriday v2.0.0+incompatible + sigs.k8s.io/kustomize/api v0.2.0 + )` + + err := checkModReplace(path, []byte(dataString)) + if err != nil { + t.Errorf("Error %s is not expected", err.Error()) + } +} From dca164e9671f8268779ea830f06bf0075a62eace Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Thu, 28 May 2020 12:53:26 -0700 Subject: [PATCH 45/50] More tests --- releasing/releasing/modulemeta_test.go | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/releasing/releasing/modulemeta_test.go b/releasing/releasing/modulemeta_test.go index 15754037e..c0d5729d9 100644 --- a/releasing/releasing/modulemeta_test.go +++ b/releasing/releasing/modulemeta_test.go @@ -1,6 +1,9 @@ package main import ( + "io/ioutil" + "os" + "path/filepath" "testing" ) @@ -123,3 +126,35 @@ func TestCheckModReplace3(t *testing.T) { t.Errorf("Error %s is not expected", err.Error()) } } + +func TestCheckModReplaceWithFile(t *testing.T) { + dataString := `module sigs.k8s.io/kustomize/kustomize/v3 + + go 1.13 + + exclude ( + github.com/russross/blackfriday v2.0.0+incompatible + sigs.k8s.io/kustomize/api v0.2.0 + )` + + dir, err := ioutil.TempDir("", "kustomize-releases-test") + modName := "kustomize" + defer os.RemoveAll(dir) + + err = os.MkdirAll(filepath.Join(dir, modName), os.FileMode(0700)) + if err != nil { + t.Error(err) + } + + ioutil.WriteFile(filepath.Join(dir, modName, "go.mod"), []byte(dataString), os.FileMode(0600)) + + m := module{ + name: modName, + path: dir, + } + + err = m.CheckModReplace() + if err != nil { + t.Errorf("Error %s is not expected", err.Error()) + } +} From 37918ae74528d518ae4d1cf55131e2606eaf42e3 Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Thu, 28 May 2020 13:01:50 -0700 Subject: [PATCH 46/50] Check error from ioutil.TempDir in test --- releasing/releasing/modulemeta_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/releasing/releasing/modulemeta_test.go b/releasing/releasing/modulemeta_test.go index c0d5729d9..877166256 100644 --- a/releasing/releasing/modulemeta_test.go +++ b/releasing/releasing/modulemeta_test.go @@ -138,6 +138,9 @@ func TestCheckModReplaceWithFile(t *testing.T) { )` dir, err := ioutil.TempDir("", "kustomize-releases-test") + if err != nil { + t.Error(err) + } modName := "kustomize" defer os.RemoveAll(dir) From 572260c0f05b288fb0780797a46bd8dfd5b790a3 Mon Sep 17 00:00:00 2001 From: Jijie Wei Date: Tue, 26 May 2020 17:22:04 -0700 Subject: [PATCH 47/50] change args to use flags instead, so that values starting with hyphen can be correctly parsed. --- .../internal/commands/cmdcreatesetter.go | 17 +- .../internal/commands/cmdcreatesetter_test.go | 37 +++ cmd/config/internal/commands/cmdset.go | 34 ++- cmd/config/internal/commands/cmdset_test.go | 249 +++++++++++++++++- cmd/config/internal/commands/util.go | 11 + 5 files changed, 335 insertions(+), 13 deletions(-) diff --git a/cmd/config/internal/commands/cmdcreatesetter.go b/cmd/config/internal/commands/cmdcreatesetter.go index 2a0120aac..a15bad8f8 100644 --- a/cmd/config/internal/commands/cmdcreatesetter.go +++ b/cmd/config/internal/commands/cmdcreatesetter.go @@ -20,14 +20,16 @@ import ( func NewCreateSetterRunner(parent string) *CreateSetterRunner { r := &CreateSetterRunner{} set := &cobra.Command{ - Use: "create-setter DIR NAME VALUE", - Args: cobra.ExactArgs(3), + Use: "create-setter DIR NAME --value VALUE", + Args: cobra.RangeArgs(2, 3), Short: commands.CreateSetterShort, Long: commands.CreateSetterLong, Example: commands.CreateSetterExamples, PreRunE: r.preRunE, RunE: r.runE, } + set.Flags().StringVar(&r.Set.SetPartialField.Setter.Value, "value", "", + "optional flag, the value of the setter to be set to") set.Flags().StringVar(&r.Set.SetPartialField.SetBy, "set-by", "", "record who the field was default by.") set.Flags().StringVar(&r.Set.SetPartialField.Description, "description", "", @@ -73,18 +75,23 @@ func (r *CreateSetterRunner) runE(c *cobra.Command, args []string) error { } func (r *CreateSetterRunner) preRunE(c *cobra.Command, args []string) error { + valueSetFromFlag := isFlagSet("value", c) var err error r.Set.SetPartialField.Setter.Name = args[1] - r.Set.SetPartialField.Setter.Value = args[2] r.CreateSetter.Name = args[1] - r.CreateSetter.FieldValue = args[2] + if valueSetFromFlag { + r.CreateSetter.FieldValue = r.Set.SetPartialField.Setter.Value + } else if len(args) > 2 { + r.Set.SetPartialField.Setter.Value = args[2] + r.CreateSetter.FieldValue = args[2] + } r.CreateSetter.FieldName, err = c.Flags().GetString("field") if err != nil { return err } if setterVersion == "" { - if len(args) < 3 { + if len(args) < 2 || !valueSetFromFlag && len(args) < 3 { setterVersion = "v1" } else if err := initSetterVersion(c, args); err != nil { return err diff --git a/cmd/config/internal/commands/cmdcreatesetter_test.go b/cmd/config/internal/commands/cmdcreatesetter_test.go index 001de307e..c194e194c 100644 --- a/cmd/config/internal/commands/cmdcreatesetter_test.go +++ b/cmd/config/internal/commands/cmdcreatesetter_test.go @@ -166,6 +166,43 @@ kind: Example spec: list: - "a" # {"$openapi":"list"} + `, + }, + { + name: "add replicas with value set by flag", + args: []string{"replicas", "--value", "3", "--description", "hello world", "--set-by", "me"}, + input: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 + `, + inputOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +`, + expectedOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +openAPI: + definitions: + io.k8s.cli.setters.replicas: + description: hello world + x-k8s-cli: + setter: + name: replicas + value: "3" + setBy: me + `, + expectedResources: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} `, }, } diff --git a/cmd/config/internal/commands/cmdset.go b/cmd/config/internal/commands/cmdset.go index 6886d16ed..d5875dcbc 100644 --- a/cmd/config/internal/commands/cmdset.go +++ b/cmd/config/internal/commands/cmdset.go @@ -11,6 +11,7 @@ import ( "github.com/spf13/cobra" "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands" + "sigs.k8s.io/kustomize/kyaml/errors" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/setters" "sigs.k8s.io/kustomize/kyaml/setters2/settersutil" @@ -20,8 +21,8 @@ import ( func NewSetRunner(parent string) *SetRunner { r := &SetRunner{} c := &cobra.Command{ - Use: "set DIR NAME [VALUE]", - Args: cobra.MinimumNArgs(3), + Use: "set DIR NAME --values [VALUE]", + Args: cobra.MinimumNArgs(2), Short: commands.SetShort, Long: commands.SetLong, Example: commands.SetExamples, @@ -30,6 +31,8 @@ func NewSetRunner(parent string) *SetRunner { } fixDocs(parent, c) r.Command = c + c.Flags().StringArrayVar(&r.Values, "values", []string{}, + "optional flag, the values of the setter to be set to") c.Flags().StringVar(&r.Perform.SetBy, "set-by", "", "annotate the field with who set it") c.Flags().StringVar(&r.Perform.Description, "description", "", @@ -53,6 +56,7 @@ type SetRunner struct { Perform setters.PerformSetters Set settersutil.FieldSetter OpenAPIFile string + Values []string } func initSetterVersion(c *cobra.Command, args []string) error { @@ -75,16 +79,25 @@ func initSetterVersion(c *cobra.Command, args []string) error { } func (r *SetRunner) preRunE(c *cobra.Command, args []string) error { + valueFlagSet := isFlagSet("values", c) + + if valueFlagSet && len(args) > 2 { + return errors.Errorf("value should set either from flag or arg") + } + if len(args) > 1 { r.Perform.Name = args[1] r.Lookup.Name = args[1] } - if len(args) > 2 { + + if isFlagSet("values", c) && len(r.Values) == 1 { + r.Perform.Value = r.Values[0] + } else if len(args) > 2 { r.Perform.Value = args[2] } if setterVersion == "" { - if len(args) < 3 { + if len(args) < 2 || len(args) < 3 && !valueFlagSet { setterVersion = "v1" } else if err := initSetterVersion(c, args); err != nil { return err @@ -93,12 +106,19 @@ func (r *SetRunner) preRunE(c *cobra.Command, args []string) error { if setterVersion == "v2" { var err error r.Set.Name = args[1] - r.Set.Value = args[2] + if valueFlagSet { + r.Set.Value = r.Values[0] + } else { + r.Set.Value = args[2] + } // set remaining values as list values - if len(args) > 3 { + if valueFlagSet && len(r.Values) > 1 { + r.Set.ListValues = r.Values[1:] + } else if !valueFlagSet && len(args) > 3 { r.Set.ListValues = args[3:] } + r.Set.Description = r.Perform.Description r.Set.SetBy = r.Perform.SetBy r.OpenAPIFile, err = ext.GetOpenAPIFile(args) @@ -116,7 +136,7 @@ func (r *SetRunner) runE(c *cobra.Command, args []string) error { fmt.Fprintf(c.OutOrStdout(), "set %d fields\n", count) return handleError(c, err) } - if len(args) == 3 { + if len(args) > 2 || isFlagSet("values", c) { return handleError(c, r.perform(c, args)) } return handleError(c, lookup(r.Lookup, c, args)) diff --git a/cmd/config/internal/commands/cmdset_test.go b/cmd/config/internal/commands/cmdset_test.go index 5e253573c..427a0c557 100644 --- a/cmd/config/internal/commands/cmdset_test.go +++ b/cmd/config/internal/commands/cmdset_test.go @@ -74,6 +74,54 @@ spec: replicas: 4 # {"$openapi":"replicas"} `, }, + { + name: "validate length of argument", + args: []string{"--description", "hi there", "--set-by", "pw"}, + inputOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +openAPI: + definitions: + io.k8s.cli.setters.replicas: + description: hello world + x-k8s-cli: + setter: + name: replicas + value: "3" + setBy: me + `, + input: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + `, + expectedOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +openAPI: + definitions: + io.k8s.cli.setters.replicas: + description: hello world + x-k8s-cli: + setter: + name: replicas + value: "3" + setBy: me + `, + expectedResources: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + `, + errMsg: "requires at least 2 arg(s), only received 1", + }, + { name: "set replicas no description", args: []string{"replicas", "4"}, @@ -121,7 +169,7 @@ spec: `, }, { - name: "set image", + name: "set image with value", args: []string{"tag", "1.8.1"}, out: "set 1 fields\n", inputOpenAPI: ` @@ -453,6 +501,205 @@ spec: `, errMsg: `list in body must be of type integer: "string" list in body must be of type integer: "boolean" +list in body should have at most 2 items`, + }, + + { + name: "set replicas with value set by flag", + args: []string{"replicas", "--values", "4", "--description", "hi there"}, + out: "set 1 fields\n", + inputOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +openAPI: + definitions: + io.k8s.cli.setters.replicas: + description: hello world + x-k8s-cli: + setter: + name: replicas + value: "3" + setBy: me + `, + input: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + `, + expectedOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +openAPI: + definitions: + io.k8s.cli.setters.replicas: + description: hi there + x-k8s-cli: + setter: + name: replicas + value: "4" + `, + expectedResources: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 4 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + `, + }, + + { + name: "validate values set from either flag or arg", + args: []string{"replicas", "4", "--values", "4", "--description", "hi there"}, + inputOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +openAPI: + definitions: + io.k8s.cli.setters.replicas: + description: hello world + x-k8s-cli: + setter: + name: replicas + value: "3" + setBy: me + `, + input: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + `, + expectedOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +openAPI: + definitions: + io.k8s.cli.setters.replicas: + description: hello world + x-k8s-cli: + setter: + name: replicas + value: "3" + setBy: me + `, + expectedResources: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + `, + errMsg: `value should set either from flag or arg`, + }, + + { + name: "openAPI list values set by flag success", + args: []string{"list", "--values", "10", "--values", "11"}, + out: "set 1 fields\n", + inputOpenAPI: ` +kind: Kptfile +openAPI: + definitions: + io.k8s.cli.setters.list: + type: array + maxItems: 2 + items: + type: integer + x-k8s-cli: + setter: + name: list + listValues: + - 0 + `, + input: ` +apiVersion: example.com/v1beta1 +kind: Example +spec: + list: # {"$ref":"#/definitions/io.k8s.cli.setters.list"} + - 0 + `, + expectedOpenAPI: ` +kind: Kptfile +openAPI: + definitions: + io.k8s.cli.setters.list: + type: array + maxItems: 2 + items: + type: integer + x-k8s-cli: + setter: + name: list + listValues: + - "10" + - "11" + `, + expectedResources: ` +apiVersion: example.com/v1beta1 +kind: Example +spec: + list: # {"$ref":"#/definitions/io.k8s.cli.setters.list"} + - "10" + - "11" + `, + }, + + { + name: "validate openAPI list values set by flag error", + args: []string{"list", "--values", "10", "--values", "hi", "--values", "true"}, + inputOpenAPI: ` +kind: Kptfile +openAPI: + definitions: + io.k8s.cli.setters.list: + type: array + maxItems: 2 + items: + type: integer + x-k8s-cli: + setter: + name: list + listValues: + - 0 + `, + input: ` +apiVersion: example.com/v1beta1 +kind: Example +spec: + list: # {"$ref":"#/definitions/io.k8s.cli.setters.list"} + - 0 + `, + expectedOpenAPI: ` +kind: Kptfile +openAPI: + definitions: + io.k8s.cli.setters.list: + type: array + maxItems: 2 + items: + type: integer + x-k8s-cli: + setter: + name: list + listValues: + - 0 + `, + expectedResources: ` +apiVersion: example.com/v1beta1 +kind: Example +spec: + list: # {"$ref":"#/definitions/io.k8s.cli.setters.list"} + - 0 + `, + errMsg: `list in body must be of type integer: "string" +list in body must be of type integer: "boolean" list in body should have at most 2 items`, }, } diff --git a/cmd/config/internal/commands/util.go b/cmd/config/internal/commands/util.go index b201451ed..41cd100d1 100644 --- a/cmd/config/internal/commands/util.go +++ b/cmd/config/internal/commands/util.go @@ -10,6 +10,7 @@ import ( "github.com/go-errors/errors" "github.com/spf13/cobra" + flag "github.com/spf13/pflag" ) // parseFieldPath parse a flag value into a field path @@ -39,6 +40,16 @@ func parseFieldPath(path string) ([]string, error) { return newParts, nil } +func isFlagSet(name string, c *cobra.Command) bool { + set := false + c.Flags().Visit(func(f *flag.Flag) { + if f.Name == name { + set = true + } + }) + return set +} + func handleError(c *cobra.Command, err error) error { if err == nil { return nil From 4b5b0dfdceeb7942baa7ae9b9d0c3ea0d7cae584 Mon Sep 17 00:00:00 2001 From: Jijie Wei Date: Fri, 29 May 2020 12:50:03 -0700 Subject: [PATCH 48/50] rebase --- cmd/config/internal/commands/cmdcreatesetter_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/config/internal/commands/cmdcreatesetter_test.go b/cmd/config/internal/commands/cmdcreatesetter_test.go index c194e194c..c584230c6 100644 --- a/cmd/config/internal/commands/cmdcreatesetter_test.go +++ b/cmd/config/internal/commands/cmdcreatesetter_test.go @@ -202,7 +202,7 @@ kind: Deployment metadata: name: nginx-deployment spec: - replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + replicas: 3 # {"$openapi":"replicas"} `, }, } From e63b9ef8256ebe0fdfa8ef7eff1716c164995e91 Mon Sep 17 00:00:00 2001 From: Jijie Wei Date: Fri, 29 May 2020 16:23:10 -0700 Subject: [PATCH 49/50] update on util and comments --- cmd/config/internal/commands/cmdcreatesetter.go | 8 ++++---- cmd/config/internal/commands/cmdset.go | 6 +++--- cmd/config/internal/commands/util.go | 11 ----------- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/cmd/config/internal/commands/cmdcreatesetter.go b/cmd/config/internal/commands/cmdcreatesetter.go index a15bad8f8..f2ea66ab3 100644 --- a/cmd/config/internal/commands/cmdcreatesetter.go +++ b/cmd/config/internal/commands/cmdcreatesetter.go @@ -20,7 +20,7 @@ import ( func NewCreateSetterRunner(parent string) *CreateSetterRunner { r := &CreateSetterRunner{} set := &cobra.Command{ - Use: "create-setter DIR NAME --value VALUE", + Use: "create-setter DIR NAME VALUE", Args: cobra.RangeArgs(2, 3), Short: commands.CreateSetterShort, Long: commands.CreateSetterLong, @@ -29,7 +29,7 @@ func NewCreateSetterRunner(parent string) *CreateSetterRunner { RunE: r.runE, } set.Flags().StringVar(&r.Set.SetPartialField.Setter.Value, "value", "", - "optional flag, the value of the setter to be set to") + "optional flag, alternative to specifying the value as an argument. e.g. used to specify values that start with '-'") set.Flags().StringVar(&r.Set.SetPartialField.SetBy, "set-by", "", "record who the field was default by.") set.Flags().StringVar(&r.Set.SetPartialField.Description, "description", "", @@ -75,7 +75,7 @@ func (r *CreateSetterRunner) runE(c *cobra.Command, args []string) error { } func (r *CreateSetterRunner) preRunE(c *cobra.Command, args []string) error { - valueSetFromFlag := isFlagSet("value", c) + valueSetFromFlag := c.Flag("value").Changed var err error r.Set.SetPartialField.Setter.Name = args[1] r.CreateSetter.Name = args[1] @@ -91,7 +91,7 @@ func (r *CreateSetterRunner) preRunE(c *cobra.Command, args []string) error { } if setterVersion == "" { - if len(args) < 2 || !valueSetFromFlag && len(args) < 3 { + if len(args) < 2 || !c.Flag("value").Changed && len(args) < 3 { setterVersion = "v1" } else if err := initSetterVersion(c, args); err != nil { return err diff --git a/cmd/config/internal/commands/cmdset.go b/cmd/config/internal/commands/cmdset.go index d5875dcbc..6d7143b7a 100644 --- a/cmd/config/internal/commands/cmdset.go +++ b/cmd/config/internal/commands/cmdset.go @@ -79,7 +79,7 @@ func initSetterVersion(c *cobra.Command, args []string) error { } func (r *SetRunner) preRunE(c *cobra.Command, args []string) error { - valueFlagSet := isFlagSet("values", c) + valueFlagSet := c.Flag("values").Changed if valueFlagSet && len(args) > 2 { return errors.Errorf("value should set either from flag or arg") @@ -90,7 +90,7 @@ func (r *SetRunner) preRunE(c *cobra.Command, args []string) error { r.Lookup.Name = args[1] } - if isFlagSet("values", c) && len(r.Values) == 1 { + if valueFlagSet { r.Perform.Value = r.Values[0] } else if len(args) > 2 { r.Perform.Value = args[2] @@ -136,7 +136,7 @@ func (r *SetRunner) runE(c *cobra.Command, args []string) error { fmt.Fprintf(c.OutOrStdout(), "set %d fields\n", count) return handleError(c, err) } - if len(args) > 2 || isFlagSet("values", c) { + if len(args) > 2 || c.Flag("values").Changed { return handleError(c, r.perform(c, args)) } return handleError(c, lookup(r.Lookup, c, args)) diff --git a/cmd/config/internal/commands/util.go b/cmd/config/internal/commands/util.go index 41cd100d1..b201451ed 100644 --- a/cmd/config/internal/commands/util.go +++ b/cmd/config/internal/commands/util.go @@ -10,7 +10,6 @@ import ( "github.com/go-errors/errors" "github.com/spf13/cobra" - flag "github.com/spf13/pflag" ) // parseFieldPath parse a flag value into a field path @@ -40,16 +39,6 @@ func parseFieldPath(path string) ([]string, error) { return newParts, nil } -func isFlagSet(name string, c *cobra.Command) bool { - set := false - c.Flags().Visit(func(f *flag.Flag) { - if f.Name == name { - set = true - } - }) - return set -} - func handleError(c *cobra.Command, err error) error { if err == nil { return nil From d6fdf1c01a2c2ea4cf5e555ca771bbdbeadee331 Mon Sep 17 00:00:00 2001 From: Morten Torkildsen Date: Mon, 1 Jun 2020 11:42:47 -0700 Subject: [PATCH 50/50] Release v0.1.13 of kyaml --- releasing/VERSIONS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasing/VERSIONS b/releasing/VERSIONS index 9083818dc..8f9d6edc3 100644 --- a/releasing/VERSIONS +++ b/releasing/VERSIONS @@ -6,7 +6,7 @@ # kyaml version export kyaml_major=0 export kyaml_minor=1 -export kyaml_patch=12 +export kyaml_patch=13 # kstatus version export kstatus_major=0