From 3caf7dd93d06411105f361d3474db539327a9744 Mon Sep 17 00:00:00 2001 From: Yury Bushmelev Date: Sat, 30 Mar 2024 19:51:29 +0300 Subject: [PATCH] (GH-3286) Add `file::delete()` function Closes #3286 !feature * **Add `file::delete()` function** Delete a file on localhost using ruby's `File.delete`. This will only delete files on the machine you run Bolt on. --- .../file/lib/puppet/functions/file/delete.rb | 21 +++++++++++++++++++ .../file/spec/functions/file/delete_spec.rb | 15 +++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 bolt-modules/file/lib/puppet/functions/file/delete.rb create mode 100644 bolt-modules/file/spec/functions/file/delete_spec.rb diff --git a/bolt-modules/file/lib/puppet/functions/file/delete.rb b/bolt-modules/file/lib/puppet/functions/file/delete.rb new file mode 100644 index 0000000000..824aea5ecd --- /dev/null +++ b/bolt-modules/file/lib/puppet/functions/file/delete.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +# Delete a file on localhost using ruby's `File.delete`. This will only delete +# files on the machine you run Bolt on. +Puppet::Functions.create_function(:'file::delete') do + # @param filename Absolute path. + # @example Delete a file from disk + # file::delete('C:/Users/me/report') + dispatch :delete do + required_param 'String', :filename + return_type 'Undef' + end + + def delete(filename) + # Send Analytics Report + Puppet.lookup(:bolt_executor) {}&.report_function_call(self.class.name) + + File.delete(filename) + nil + end +end diff --git a/bolt-modules/file/spec/functions/file/delete_spec.rb b/bolt-modules/file/spec/functions/file/delete_spec.rb new file mode 100644 index 0000000000..b2b5fdd912 --- /dev/null +++ b/bolt-modules/file/spec/functions/file/delete_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'spec_helper' +require 'tempfile' + +describe 'file::delete' do + it { + Dir.mktmpdir do |dir| + file = File.join(dir, 'file_delete') + File.write(file, 'file_delete_contents') + is_expected.to run.with_params(file) + expect(File.exist?(file)).to eq(false) + end + } +end