class Defoker::Core
Public Class Methods
Get days folder name list
@param [String] date yyyymmdd format string @param [String] additional additional name @return [String] yesterday folder name
# File lib/defoker_core.rb, line 72 def self.days(date, count: 3, additional: '') date = Date.new(date[0..3].to_i, date[4..5].to_i, date[6..7].to_i) DateBaseName.to_yyyymmdd_list(date, count: count, additional: additional) end
Generate Defokerfile template
# File lib/defoker_core.rb, line 39 def self.init File.open(DEFOKERFILE_PATH, 'w:utf-8') { |f|f.puts DEFOKERFILE_TEMPLATE } end
Get months folder name list
@param [String] month yyyymmdd format string @param [String] additional additional name @return [String] yesterday folder name
# File lib/defoker_core.rb, line 106 def self.months(month, count: 3, additional: '') month = Date.new(month[0..3].to_i, month[4..5].to_i) DateBaseName.to_yyyymm_list(month, count: count, additional: additional) end
Move YYYYMMDD_somename format folder to YYYYMM folder.
# File lib/defoker_core.rb, line 160 def self.mv_month Dir.glob('*/').each do |dir| next unless dir =~ %r(^[0-9]{8}(_.*)*/$) month_dir = dir[0, 6] FileUtils.mkdir_p(month_dir) unless Dir.exist?(month_dir) day_dir = dir[6..-1] FileUtils.mv(dir, File.join(month_dir, day_dir)) end end
Move YYYYMM_somename format folder to YYYY folder.
# File lib/defoker_core.rb, line 172 def self.mv_year Dir.glob('*/').each do |dir| next unless dir =~ %r(^[0-9]{6}(_.*)*/$) year_dir = dir[0, 4] FileUtils.mkdir_p(year_dir) unless Dir.exist?(year_dir) month_dir = dir[4..-1] FileUtils.mv(dir, File.join(year_dir, month_dir)) end end
Get next month folder name
@param [String] additional additional name @return [String] next month folder name
# File lib/defoker_core.rb, line 89 def self.next_month(additional: '') DateBaseName.to_yyyymm(Date.today >> 1, additional: additional) end
Get next year folder name
@param [String] additional additional name @return [String] next year folder name
# File lib/defoker_core.rb, line 123 def self.next_year(additional: '') DateBaseName.to_yyyy(Date.today >> 12, additional: additional) end
Get previous month folder name
@param [String] additional additional name @return [String] previous month folder name
# File lib/defoker_core.rb, line 97 def self.previous_month(additional: '') DateBaseName.to_yyyymm(Date.today << 1, additional: additional) end
Get previous year folder name
@param [String] additional additional name @return [String] previous year folder name
# File lib/defoker_core.rb, line 131 def self.previous_year(additional: '') DateBaseName.to_yyyy(Date.today << 12, additional: additional) end
Create folder by Defokerfile's rule.
@param [String] additional additional name @return [String] folder name
# File lib/defoker_core.rb, line 149 def self.rule(additional: '') dsl = read_dsl base = dsl.defoker.base callback = dsl.defoker.callback adds = [base, additional].reject(&:empty?) dir = send(dsl.defoker.type, additional: adds.join('_')) [dir, callback] end
Get this month folder name
@param [String] additional additional name @return [String] this month folder name
# File lib/defoker_core.rb, line 81 def self.this_month(additional: '') DateBaseName.to_yyyymm(Date.today, additional: additional) end
Get this year folder name
@param [String] additional additional name @return [String] this year folder name
# File lib/defoker_core.rb, line 115 def self.this_year(additional: '') DateBaseName.to_yyyy(Date.today, additional: additional) end
Get today folder name
@param [String] additional additional name @return [String] today folder name
# File lib/defoker_core.rb, line 47 def self.today(additional: '') DateBaseName.to_yyyymmdd(Date.today, additional: additional) end
Get tomorrow folder name
@param [String] additional additional name @return [String] tomorrow folder name
# File lib/defoker_core.rb, line 55 def self.tomorrow(additional: '') DateBaseName.to_yyyymmdd(Date.today + 1, additional: additional) end
Get years folder name list
@param [String] year yyyymmdd format string @param [String] additional additional name @return [String] yesterday folder name
# File lib/defoker_core.rb, line 140 def self.years(year, count: 3, additional: '') year = Date.new(year[0..3].to_i) DateBaseName.to_yyyy_list(year, count: count, additional: additional) end
Get yesterday folder name
@param [String] additional additional name @return [String] yesterday folder name
# File lib/defoker_core.rb, line 63 def self.yesterday(additional: '') DateBaseName.to_yyyymmdd(Date.today - 1, additional: additional) end
Private Class Methods
# File lib/defoker_core.rb, line 182 def self.read_dsl dsl = Defoker::Dsl.new unless File.exist?(DEFOKERFILE_PATH) fail DslNotExistError, "#{DEFOKERFILE_PATH} not exist" end src = File.open(DEFOKERFILE_PATH, 'r:utf-8') { |f|f.read } dsl.instance_eval(src) dsl end