Method: Roby::Application.unique_dirname

Defined in:
lib/roby/app.rb

.unique_dirname(base_dir, path_spec, date_tag = nil) ⇒ Object

Returns a unique directory name as a subdirectory of base_dir, based on path_spec. The generated name is of the form

<base_dir>/a/b/c/YYYYMMDD-HHMM-basename

if path_spec = "a/b/c/basename". A .<number> suffix is appended if the path already exists.



1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
# File 'lib/roby/app.rb', line 1770

def self.unique_dirname(base_dir, path_spec, date_tag = nil)
    if path_spec =~ %r{/$}
        basename = ""
        dirname = path_spec
    else
        basename = File.basename(path_spec)
        dirname  = File.dirname(path_spec)
    end

    date_tag ||= Time.now.strftime("%Y%m%d-%H%M")
    basename =
        if !basename.empty?
            "#{date_tag}-#{basename}"
        else
            date_tag
        end

    # Check if +basename+ already exists, and if it is the case add a
    # .x suffix to it
    full_path = File.expand_path(File.join(dirname, basename), base_dir)
    final_path = full_path
    i = 0
    while File.exist?(final_path)
        i += 1
        final_path = full_path + ".#{i}"
    end

    final_path
end