Skip to content

Commit f59d79f

Browse files
Updated dev tools docker image tag to 0.4.3
* Fixed lint tests * Updated Makefile
1 parent 9983d8d commit f59d79f

File tree

22 files changed

+84
-41
lines changed

22 files changed

+84
-41
lines changed

Makefile

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# Make will use bash instead of sh
1919
SHELL := /usr/bin/env bash
2020

21-
DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 0.1.0
21+
DOCKER_TAG_VERSION_DEVELOPER_TOOLS := 0.4.3
2222
DOCKER_IMAGE_DEVELOPER_TOOLS := cft/developer-tools
2323
REGISTRY_URL := gcr.io/cloud-foundation-cicd
2424

@@ -27,7 +27,7 @@ REGISTRY_URL := gcr.io/cloud-foundation-cicd
2727
docker_run:
2828
docker run --rm -it \
2929
-e SERVICE_ACCOUNT_JSON \
30-
-v $(CURDIR):/workspace \
30+
-v "$(CURDIR)":/workspace \
3131
$(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \
3232
/bin/bash
3333

@@ -39,7 +39,7 @@ docker_test_prepare:
3939
-e TF_VAR_org_id \
4040
-e TF_VAR_folder_id \
4141
-e TF_VAR_billing_account \
42-
-v $(CURDIR):/workspace \
42+
-v "$(CURDIR)":/workspace \
4343
$(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \
4444
/usr/local/bin/execute_with_credentials.sh prepare_environment
4545

@@ -51,7 +51,7 @@ docker_test_cleanup:
5151
-e TF_VAR_org_id \
5252
-e TF_VAR_folder_id \
5353
-e TF_VAR_billing_account \
54-
-v $(CURDIR):/workspace \
54+
-v "$(CURDIR)":/workspace \
5555
$(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \
5656
/usr/local/bin/execute_with_credentials.sh cleanup_environment
5757

@@ -60,31 +60,31 @@ docker_test_cleanup:
6060
docker_test_integration:
6161
docker run --rm -it \
6262
-e SERVICE_ACCOUNT_JSON \
63-
-v $(CURDIR):/workspace \
63+
-v "$(CURDIR)":/workspace \
6464
$(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \
6565
/usr/local/bin/test_integration.sh
6666

6767
# Execute lint tests within the docker container
6868
.PHONY: docker_test_lint
6969
docker_test_lint:
7070
docker run --rm -it \
71-
-v $(CURDIR):/workspace \
71+
-v "$(CURDIR)":/workspace \
7272
$(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \
7373
/usr/local/bin/test_lint.sh
7474

7575
# Generate documentation
7676
.PHONY: docker_generate_docs
7777
docker_generate_docs:
7878
docker run --rm -it \
79-
-v $(CURDIR):/workspace \
79+
-v "$(CURDIR)":/workspace \
8080
$(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \
8181
/bin/bash -c 'source /usr/local/bin/task_helper_functions.sh && generate_docs'
8282

8383
# Generate files from autogen
8484
.PHONY: docker_generate
8585
docker_generate:
8686
docker run --rm -it \
87-
-v $(CURDIR):/workspace \
87+
-v "$(CURDIR)":/workspace \
8888
$(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \
8989
/bin/bash -c 'source /usr/local/bin/task_helper_functions.sh && generate'
9090

autogen/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,9 @@ In either case, upgrading to module version `v1.0.0` will trigger a recreation o
195195
| non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | list(string) | `<list>` | no |
196196
| pod\_security\_policy\_config | enabled - Enable the PodSecurityPolicy controller for this cluster. If enabled, pods must be valid under a PodSecurityPolicy to be created. | list | `<list>` | no |
197197
| project\_id | The project ID to host the cluster in (required) | string | n/a | yes |
198-
| region | The region to host the cluster in (required) | string | n/a | yes |
198+
| region | The region to host the cluster in (optional if zonal cluster / required if regional) | string | `"null"` | no |
199199
| regional | Whether is a regional cluster (zonal cluster if set false. WARNING: changing this after cluster creation is destructive!) | bool | `"true"` | no |
200+
| registry\_project\_id | Project holding the Google Container Registry. If empty, we use the cluster project. If grant_registry_access is true, storage.objectViewer role is assigned on this project. | string | `""` | no |
200201
| remove\_default\_node\_pool | Remove default node pool while setting up the cluster | bool | `"false"` | no |
201202
| resource\_usage\_export\_dataset\_id | The dataset id for which network egress metering for this cluster will be enabled. If enabled, a daemonset will be created in the cluster to meter network egress traffic. | string | `""` | no |
202203
| sandbox\_enabled | (Beta) Enable GKE Sandbox (Do not forget to set `image_type` = `COS_CONTAINERD` and `node_version` = `1.12.7-gke.17` or later to use it). | bool | `"false"` | no |

autogen/scripts/wait-for-cluster.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# Copyright 2018 Google LLC
2+
# Copyright 2019 Google LLC
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -15,6 +15,11 @@
1515

1616
set -e
1717

18+
# shellcheck disable=SC2034
19+
if [ -n "${GOOGLE_APPLICATION_CREDENTIALS}" ]; then
20+
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${GOOGLE_APPLICATION_CREDENTIALS}
21+
fi
22+
1823
PROJECT=$1
1924
CLUSTER_NAME=$2
2025
gcloud_command="gcloud container clusters list --project=$PROJECT --format=json"

build/int.cloudbuild.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@ tags:
3838
- 'integration'
3939
substitutions:
4040
_DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools'
41-
_DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0.1.0'
41+
_DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0.4.3'

build/lint.cloudbuild.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ tags:
2424
- 'lint'
2525
substitutions:
2626
_DOCKER_IMAGE_DEVELOPER_TOOLS: 'cft/developer-tools'
27-
_DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0.1.0'
27+
_DOCKER_TAG_VERSION_DEVELOPER_TOOLS: '0.4.3'

modules/beta-private-cluster-update-variant/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,9 @@ In either case, upgrading to module version `v1.0.0` will trigger a recreation o
188188
| non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | list(string) | `<list>` | no |
189189
| pod\_security\_policy\_config | enabled - Enable the PodSecurityPolicy controller for this cluster. If enabled, pods must be valid under a PodSecurityPolicy to be created. | list | `<list>` | no |
190190
| project\_id | The project ID to host the cluster in (required) | string | n/a | yes |
191-
| region | The region to host the cluster in (required) | string | n/a | yes |
191+
| region | The region to host the cluster in (optional if zonal cluster / required if regional) | string | `"null"` | no |
192192
| regional | Whether is a regional cluster (zonal cluster if set false. WARNING: changing this after cluster creation is destructive!) | bool | `"true"` | no |
193+
| registry\_project\_id | Project holding the Google Container Registry. If empty, we use the cluster project. If grant_registry_access is true, storage.objectViewer role is assigned on this project. | string | `""` | no |
193194
| remove\_default\_node\_pool | Remove default node pool while setting up the cluster | bool | `"false"` | no |
194195
| resource\_usage\_export\_dataset\_id | The dataset id for which network egress metering for this cluster will be enabled. If enabled, a daemonset will be created in the cluster to meter network egress traffic. | string | `""` | no |
195196
| sandbox\_enabled | (Beta) Enable GKE Sandbox (Do not forget to set `image_type` = `COS_CONTAINERD` and `node_version` = `1.12.7-gke.17` or later to use it). | bool | `"false"` | no |
@@ -258,6 +259,9 @@ following project roles:
258259
- roles/iam.serviceAccountUser
259260
- roles/resourcemanager.projectIamAdmin (only required if `service_account` is set to `create`)
260261

262+
Additionally, if `service_account` is set to `create` and `grant_registry_access` is requested, the service account requires the following role on the `registry_project_id` project:
263+
- roles/resourcemanager.projectIamAdmin
264+
261265
### Enable APIs
262266
In order to operate with the Service Account you must activate the following APIs on the project where the Service Account was created:
263267

modules/beta-private-cluster-update-variant/main.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ data "google_compute_zones" "available" {
2323
provider = google-beta
2424

2525
project = var.project_id
26-
region = var.region
26+
region = local.region
2727
}
2828

2929
resource "random_shuffle" "available_zones" {
@@ -34,6 +34,7 @@ resource "random_shuffle" "available_zones" {
3434
locals {
3535
// location
3636
location = var.regional ? var.region : var.zones[0]
37+
region = var.region == null ? join("-", slice(split("-", var.zones[0]), 0, 2)) : var.region
3738
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
3839
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
3940
// kuberentes version

modules/beta-private-cluster-update-variant/networks.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ data "google_compute_subnetwork" "gke_subnetwork" {
2727
provider = google-beta
2828

2929
name = var.subnetwork
30-
region = var.region
30+
region = local.region
3131
project = local.network_project_id
3232
}

modules/beta-private-cluster-update-variant/sa.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ resource "google_project_iam_member" "cluster_service_account-monitoring_viewer"
6464

6565
resource "google_project_iam_member" "cluster_service_account-gcr" {
6666
count = var.create_service_account && var.grant_registry_access ? 1 : 0
67-
project = var.project_id
67+
project = var.registry_project_id == "" ? var.project_id : var.registry_project_id
6868
role = "roles/storage.objectViewer"
6969
member = "serviceAccount:${google_service_account.cluster_service_account[0].email}"
7070
}

modules/beta-private-cluster-update-variant/scripts/wait-for-cluster.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# Copyright 2018 Google LLC
2+
# Copyright 2019 Google LLC
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -15,6 +15,11 @@
1515

1616
set -e
1717

18+
# shellcheck disable=SC2034
19+
if [ -n "${GOOGLE_APPLICATION_CREDENTIALS}" ]; then
20+
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${GOOGLE_APPLICATION_CREDENTIALS}
21+
fi
22+
1823
PROJECT=$1
1924
CLUSTER_NAME=$2
2025
gcloud_command="gcloud container clusters list --project=$PROJECT --format=json"

modules/beta-private-cluster-update-variant/variables.tf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ variable "regional" {
4040

4141
variable "region" {
4242
type = string
43-
description = "The region to host the cluster in (required)"
43+
description = "The region to host the cluster in (optional if zonal cluster / required if regional)"
44+
default = null
4445
}
4546

4647
variable "zones" {
@@ -267,6 +268,12 @@ variable "grant_registry_access" {
267268
default = false
268269
}
269270

271+
variable "registry_project_id" {
272+
type = string
273+
description = "Project holding the Google Container Registry. If empty, we use the cluster project. If grant_registry_access is true, storage.objectViewer role is assigned on this project."
274+
default = ""
275+
}
276+
270277
variable "service_account" {
271278
type = string
272279
description = "The service account to run nodes as if not overridden in `node_pools`. The create_service_account variable default value (true) will cause a cluster-specific service account to be created."

modules/beta-private-cluster/scripts/wait-for-cluster.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# Copyright 2018 Google LLC
2+
# Copyright 2019 Google LLC
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -15,6 +15,11 @@
1515

1616
set -e
1717

18+
# shellcheck disable=SC2034
19+
if [ -n "${GOOGLE_APPLICATION_CREDENTIALS}" ]; then
20+
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${GOOGLE_APPLICATION_CREDENTIALS}
21+
fi
22+
1823
PROJECT=$1
1924
CLUSTER_NAME=$2
2025
gcloud_command="gcloud container clusters list --project=$PROJECT --format=json"

modules/beta-public-cluster/scripts/wait-for-cluster.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# Copyright 2018 Google LLC
2+
# Copyright 2019 Google LLC
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -15,6 +15,11 @@
1515

1616
set -e
1717

18+
# shellcheck disable=SC2034
19+
if [ -n "${GOOGLE_APPLICATION_CREDENTIALS}" ]; then
20+
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${GOOGLE_APPLICATION_CREDENTIALS}
21+
fi
22+
1823
PROJECT=$1
1924
CLUSTER_NAME=$2
2025
gcloud_command="gcloud container clusters list --project=$PROJECT --format=json"

modules/private-cluster-update-variant/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,9 @@ In either case, upgrading to module version `v1.0.0` will trigger a recreation o
174174
| node\_version | The Kubernetes version of the node pools. Defaults kubernetes_version (master) variable and can be overridden for individual node pools by setting the `version` key on them. Must be empyty or set the same as master at cluster creation. | string | `""` | no |
175175
| non\_masquerade\_cidrs | List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading. | list(string) | `<list>` | no |
176176
| project\_id | The project ID to host the cluster in (required) | string | n/a | yes |
177-
| region | The region to host the cluster in (required) | string | n/a | yes |
177+
| region | The region to host the cluster in (optional if zonal cluster / required if regional) | string | `"null"` | no |
178178
| regional | Whether is a regional cluster (zonal cluster if set false. WARNING: changing this after cluster creation is destructive!) | bool | `"true"` | no |
179+
| registry\_project\_id | Project holding the Google Container Registry. If empty, we use the cluster project. If grant_registry_access is true, storage.objectViewer role is assigned on this project. | string | `""` | no |
179180
| remove\_default\_node\_pool | Remove default node pool while setting up the cluster | bool | `"false"` | no |
180181
| service\_account | The service account to run nodes as if not overridden in `node_pools`. The create_service_account variable default value (true) will cause a cluster-specific service account to be created. | string | `""` | no |
181182
| stub\_domains | Map of stub domains and their resolvers to forward DNS queries for a certain domain to an external DNS server | map(list(string)) | `<map>` | no |
@@ -237,6 +238,9 @@ following project roles:
237238
- roles/iam.serviceAccountUser
238239
- roles/resourcemanager.projectIamAdmin (only required if `service_account` is set to `create`)
239240

241+
Additionally, if `service_account` is set to `create` and `grant_registry_access` is requested, the service account requires the following role on the `registry_project_id` project:
242+
- roles/resourcemanager.projectIamAdmin
243+
240244
### Enable APIs
241245
In order to operate with the Service Account you must activate the following APIs on the project where the Service Account was created:
242246

modules/private-cluster-update-variant/main.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ data "google_compute_zones" "available" {
2323
provider = google
2424

2525
project = var.project_id
26-
region = var.region
26+
region = local.region
2727
}
2828

2929
resource "random_shuffle" "available_zones" {
@@ -34,6 +34,7 @@ resource "random_shuffle" "available_zones" {
3434
locals {
3535
// location
3636
location = var.regional ? var.region : var.zones[0]
37+
region = var.region == null ? join("-", slice(split("-", var.zones[0]), 0, 2)) : var.region
3738
// for regional cluster - use var.zones if provided, use available otherwise, for zonal cluster use var.zones with first element extracted
3839
node_locations = var.regional ? coalescelist(compact(var.zones), sort(random_shuffle.available_zones.result)) : slice(var.zones, 1, length(var.zones))
3940
// kuberentes version

modules/private-cluster-update-variant/networks.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ data "google_compute_subnetwork" "gke_subnetwork" {
2727
provider = google
2828

2929
name = var.subnetwork
30-
region = var.region
30+
region = local.region
3131
project = local.network_project_id
3232
}

modules/private-cluster-update-variant/sa.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ resource "google_project_iam_member" "cluster_service_account-monitoring_viewer"
6464

6565
resource "google_project_iam_member" "cluster_service_account-gcr" {
6666
count = var.create_service_account && var.grant_registry_access ? 1 : 0
67-
project = var.project_id
67+
project = var.registry_project_id == "" ? var.project_id : var.registry_project_id
6868
role = "roles/storage.objectViewer"
6969
member = "serviceAccount:${google_service_account.cluster_service_account[0].email}"
7070
}

modules/private-cluster-update-variant/scripts/wait-for-cluster.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# Copyright 2018 Google LLC
2+
# Copyright 2019 Google LLC
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -15,6 +15,11 @@
1515

1616
set -e
1717

18+
# shellcheck disable=SC2034
19+
if [ -n "${GOOGLE_APPLICATION_CREDENTIALS}" ]; then
20+
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${GOOGLE_APPLICATION_CREDENTIALS}
21+
fi
22+
1823
PROJECT=$1
1924
CLUSTER_NAME=$2
2025
gcloud_command="gcloud container clusters list --project=$PROJECT --format=json"

modules/private-cluster-update-variant/variables.tf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ variable "regional" {
4040

4141
variable "region" {
4242
type = string
43-
description = "The region to host the cluster in (required)"
43+
description = "The region to host the cluster in (optional if zonal cluster / required if regional)"
44+
default = null
4445
}
4546

4647
variable "zones" {
@@ -257,6 +258,12 @@ variable "grant_registry_access" {
257258
default = false
258259
}
259260

261+
variable "registry_project_id" {
262+
type = string
263+
description = "Project holding the Google Container Registry. If empty, we use the cluster project. If grant_registry_access is true, storage.objectViewer role is assigned on this project."
264+
default = ""
265+
}
266+
260267
variable "service_account" {
261268
type = string
262269
description = "The service account to run nodes as if not overridden in `node_pools`. The create_service_account variable default value (true) will cause a cluster-specific service account to be created."

modules/private-cluster/scripts/wait-for-cluster.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# Copyright 2018 Google LLC
2+
# Copyright 2019 Google LLC
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -15,6 +15,11 @@
1515

1616
set -e
1717

18+
# shellcheck disable=SC2034
19+
if [ -n "${GOOGLE_APPLICATION_CREDENTIALS}" ]; then
20+
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${GOOGLE_APPLICATION_CREDENTIALS}
21+
fi
22+
1823
PROJECT=$1
1924
CLUSTER_NAME=$2
2025
gcloud_command="gcloud container clusters list --project=$PROJECT --format=json"

scripts/wait-for-cluster.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
set -e
1717

18+
# shellcheck disable=SC2034
1819
if [ -n "${GOOGLE_APPLICATION_CREDENTIALS}" ]; then
1920
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${GOOGLE_APPLICATION_CREDENTIALS}
2021
fi

test/task_helper_functions.sh

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function check_generate() {
3232
--exclude '*/.kitchen' \
3333
--exclude '*/.git' \
3434
/workspace "${tempdir}" >/dev/null 2>/dev/null
35-
cd "${tempdir}" || exit 1
35+
cd "${tempdir}/workspace" || exit 1
3636
generate >/dev/null 2>/dev/null
3737
diff -r \
3838
--exclude=".terraform" \
@@ -49,16 +49,3 @@ function check_generate() {
4949
rm -Rf "${tempdir}"
5050
return $((rval))
5151
}
52-
53-
find_files() {
54-
local pth="$1"
55-
shift
56-
find "${pth}" '(' \
57-
-path '*/.git' -o \
58-
-path '*/.terraform' -o \
59-
-path '*/.kitchen' -o \
60-
-path './autogen' -o \
61-
-path './test/fixtures/all_examples' -o \
62-
-path './test/fixtures/shared' ')' \
63-
-prune -o -type f "$@"
64-
}

0 commit comments

Comments
 (0)