lib/pdk/module/build.rb in pdk-2.7.1 vs lib/pdk/module/build.rb in pdk-3.0.0

- old
+ new

@@ -5,12 +5,11 @@ class Build def self.invoke(options = {}) new(options).build end - attr_reader :module_dir - attr_reader :target_dir + attr_reader :module_dir, :target_dir def initialize(options = {}) @module_dir = PDK::Util::Filesystem.expand_path(options[:module_dir] || Dir.pwd) @target_dir = PDK::Util::Filesystem.expand_path(options[:'target-dir'] || File.join(module_dir, 'pkg')) end @@ -84,11 +83,11 @@ # # @return [String] The module name and version, joined by a dash. def release_name @release_name ||= [ metadata['name'], - metadata['version'], + metadata['version'] ].join('-') end # Iterate through all the files and directories in the module and stage # them into the temporary build directory (unless ignored). @@ -124,22 +123,22 @@ else validate_ustar_path!(relative_path.to_path) PDK::Util::Filesystem.cp(path, dest_path, preserve: true) end rescue ArgumentError => e - raise PDK::CLI::ExitWithError, '%{message} Rename the file or exclude it from the package ' \ - 'by adding it to the .pdkignore file in your module.' % { message: e.message } + raise PDK::CLI::ExitWithError, format('%{message} Rename the file or exclude it from the package ' \ + 'by adding it to the .pdkignore file in your module.', message: e.message) end # Check if the given path matches one of the patterns listed in the # ignore file. # # @param path [String] The path to be checked. # # @return [Boolean] true if the path matches and should be ignored. def ignored_path?(path) - path = path.to_s + '/' if PDK::Util::Filesystem.directory?(path) + path = "#{path}/" if PDK::Util::Filesystem.directory?(path) !ignored_files.match_paths([path], module_dir).empty? end # Warn the user about a symlink that would have been included in the @@ -152,14 +151,12 @@ require 'pathname' symlink_path = Pathname.new(path) module_path = Pathname.new(module_dir) - PDK.logger.warn 'Symlinks in modules are not supported and will not be included in the package. Please investigate symlink %{from} -> %{to}.' % { - from: symlink_path.relative_path_from(module_path), - to: symlink_path.realpath.relative_path_from(module_path), - } + PDK.logger.warn format('Symlinks in modules are not supported and will not be included in the package. Please investigate symlink %{from} -> %{to}.', + from: symlink_path.relative_path_from(module_path), to: symlink_path.realpath.relative_path_from(module_path)) end # Checks if the path length will fit into the POSIX.1-1998 (ustar) tar # header format. # @@ -178,15 +175,11 @@ # # @raise [ArgumentError] if the path is too long or could not be split. # # @return [nil] def validate_ustar_path!(path) - if path.bytesize > 256 - raise ArgumentError, "The path '%{path}' is longer than 256 bytes." % { - path: path, - } - end + raise ArgumentError, format("The path '%{path}' is longer than 256 bytes.", path: path) if path.bytesize > 256 if path.bytesize <= 100 prefix = '' else parts = path.split(File::SEPARATOR) @@ -194,23 +187,24 @@ nxt = '' loop do nxt = parts.pop || '' break if newpath.bytesize + 1 + nxt.bytesize >= 100 + newpath = File.join(nxt, newpath) end prefix = File.join(*parts, nxt) path = newpath end return unless path.bytesize > 100 || prefix.bytesize > 155 raise ArgumentError, - "'%{path}' could not be split at a directory separator into two " \ - 'parts, the first having a maximum length of 155 bytes and the ' \ - 'second having a maximum length of 100 bytes.' % { path: path } + format("'%{path}' could not be split at a directory separator into two " \ + 'parts, the first having a maximum length of 155 bytes and the ' \ + 'second having a maximum length of 100 bytes.', path: path) end # Checks if the path contains any non-ASCII characters. # # Java will throw an error when it encounters a path containing @@ -222,14 +216,14 @@ # # @raise [ArgumentError] if the path contains non-ASCII characters. # # @return [nil] def validate_path_encoding!(path) - return unless path =~ %r{[^\x00-\x7F]} + return unless /[^\x00-\x7F]/.match?(path) - raise ArgumentError, "'%{path}' can only include ASCII characters in its path or " \ - 'filename in order to be compatible with a wide range of hosts.' % { path: path } + raise ArgumentError, format("'%{path}' can only include ASCII characters in its path or " \ + 'filename in order to be compatible with a wide range of hosts.', path: path) end # Creates a gzip compressed tarball of the build directory. # # If the destination package already exists, it will be removed before @@ -242,35 +236,28 @@ require 'find' PDK::Util::Filesystem.rm_f(package_file) Dir.chdir(target_dir) do - begin - gz = Zlib::GzipWriter.new(File.open(package_file, 'wb')) # rubocop:disable PDK/FileOpen - tar = Minitar::Output.new(gz) - Find.find(release_name) do |entry| - entry_meta = { - name: entry, - } + gz = Zlib::GzipWriter.new(File.open(package_file, 'wb')) # rubocop:disable PDK/FileOpen + tar = Minitar::Output.new(gz) + Find.find(release_name) do |entry| + entry_meta = { + name: entry + } - orig_mode = PDK::Util::Filesystem.stat(entry).mode - min_mode = Minitar.dir?(entry) ? 0o755 : 0o644 + orig_mode = PDK::Util::Filesystem.stat(entry).mode + min_mode = Minitar.dir?(entry) ? 0o755 : 0o644 - entry_meta[:mode] = orig_mode | min_mode + entry_meta[:mode] = orig_mode | min_mode - if entry_meta[:mode] != orig_mode - PDK.logger.debug('Updated permissions of packaged \'%{entry}\' to %{new_mode}' % { - entry: entry, - new_mode: (entry_meta[:mode] & 0o7777).to_s(8), - }) - end + PDK.logger.debug(format('Updated permissions of packaged \'%{entry}\' to %{new_mode}', entry: entry, new_mode: (entry_meta[:mode] & 0o7777).to_s(8))) if entry_meta[:mode] != orig_mode - Minitar.pack_file(entry_meta, tar) - end - ensure - tar.close + Minitar.pack_file(entry_meta, tar) end + ensure + tar.close end end # Select the most appropriate ignore file in the module directory. # @@ -281,11 +268,11 @@ # paths to ignore. def ignore_file @ignore_file ||= [ File.join(module_dir, '.pdkignore'), File.join(module_dir, '.pmtignore'), - File.join(module_dir, '.gitignore'), + File.join(module_dir, '.gitignore') ].find { |file| PDK::Util::Filesystem.file?(file) && PDK::Util::Filesystem.readable?(file) } end # Instantiate a new PathSpec class and populate it with the pattern(s) of # files to be ignored. @@ -301,12 +288,10 @@ PathSpec.new else PathSpec.new(PDK::Util::Filesystem.read_file(ignore_file, open_args: 'rb:UTF-8')) end - if File.realdirpath(target_dir).start_with?(File.realdirpath(module_dir)) - ignored = ignored.add("\/#{File.basename(target_dir)}\/") - end + ignored = ignored.add("/#{File.basename(target_dir)}/") if File.realdirpath(target_dir).start_with?(File.realdirpath(module_dir)) PDK::Module::DEFAULT_IGNORED.each { |r| ignored.add(r) } ignored end