File: remote.rb

package info (click to toggle)
ruby-train 3.13.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,208 kB
  • sloc: ruby: 10,002; sh: 17; makefile: 8
file content (38 lines) | stat: -rw-r--r-- 967 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
module Train
  class File
    class Remote < Train::File
      def basename(suffix = nil, sep = "/")
        raise "Not yet supported: Suffix in file.basename" unless suffix.nil?

        @basename ||= detect_filename(path, sep || "/")
      end

      def stat
        return @stat if defined?(@stat)

        @stat = Train::Extras::Stat.stat(@spath, @backend, @follow_symlink)
      end

      # helper methods provided to any implementing class
      private

      def detect_filename(path, sep)
        idx = path.rindex(sep)
        return path if idx.nil?

        idx += 1
        return detect_filename(path[0..-2], sep) if idx == path.length

        path[idx..-1]
      end
    end
  end
end

# subclass requires are loaded after Train::File::Remote is defined
# to avoid superclass mismatch errors
require_relative "remote/aix"
require_relative "remote/linux"
require_relative "remote/qnx"
require_relative "remote/unix"
require_relative "remote/windows"