From f79a62496a1eaa690eb1b3559632ad1198c91d41 Mon Sep 17 00:00:00 2001 From: Nidhi Nandwani Date: Thu, 11 Jun 2026 10:56:38 +0000 Subject: [PATCH] feat(ruby): add deleteFolderRecursive sample This adds a sample demonstrating how to recursively delete a folder in a hierarchical namespace bucket. Fixes: b/521168740 --- .../storage_control_folders_test.rb | 18 +++++++++ .../samples/delete_folder_recursive.rb | 40 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 google-cloud-storage-control/samples/delete_folder_recursive.rb diff --git a/google-cloud-storage-control/samples/acceptance/storage_control_folders_test.rb b/google-cloud-storage-control/samples/acceptance/storage_control_folders_test.rb index fa4ca9f223b0..c05b1b051b4b 100644 --- a/google-cloud-storage-control/samples/acceptance/storage_control_folders_test.rb +++ b/google-cloud-storage-control/samples/acceptance/storage_control_folders_test.rb @@ -18,6 +18,7 @@ require_relative "../storage_control_list_folders" require_relative "../storage_control_rename_folder" require_relative "../storage_control_delete_folder" +require_relative "../delete_folder_recursive" describe "Storage Control Folders" do let(:bucket_name) { random_bucket_name } @@ -65,4 +66,21 @@ delete_folder bucket_name: bucket_name, folder_name: new_folder_name end end + + it "delete_folder_recursive" do + recursive_folder_name = "#{folder_name}_recursive" + # create_folder + out, _err = capture_io do + create_folder bucket_name: bucket_name, folder_name: recursive_folder_name + end + assert_includes out, recursive_folder_name + + # delete_folder_recursive + storage_control = Google::Cloud::Storage::Control.storage_control + folder_path = storage_control.folder_path project: "_", bucket: bucket_name, folder: recursive_folder_name + + assert_output "Deleted folder: #{folder_path}\n" do + delete_folder_recursive bucket_name: bucket_name, folder_name: recursive_folder_name + end + end end diff --git a/google-cloud-storage-control/samples/delete_folder_recursive.rb b/google-cloud-storage-control/samples/delete_folder_recursive.rb new file mode 100644 index 000000000000..1f94f3b2c859 --- /dev/null +++ b/google-cloud-storage-control/samples/delete_folder_recursive.rb @@ -0,0 +1,40 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# [START storage_control_delete_folder_recursive] +def delete_folder_recursive bucket_name:, folder_name: + # The ID of your GCS bucket + # bucket_name = "your-unique-bucket-name" + # + # Name of the folder you want to delete + # folder_name = "name-of-the-folder" + + require "google/cloud/storage/control" + + storage_control = Google::Cloud::Storage::Control.storage_control + + # Set project to "_" to signify globally scoped bucket + folder_path = storage_control.folder_path project: "_", bucket: bucket_name, folder: folder_name + + request = Google::Cloud::Storage::Control::V2::DeleteFolderRecursiveRequest.new name: folder_path + + operation = storage_control.delete_folder_recursive request + + operation.wait_until_done! + + puts "Deleted folder: #{folder_path}" +end +# [END storage_control_delete_folder_recursive] + +delete_folder_recursive bucket_name: ARGV.shift, folder_name: ARGV.shift if $PROGRAM_NAME == __FILE__