lib/controllers/generate.rb in evertils-0.3.6 vs lib/controllers/generate.rb in evertils-0.3.7

- old
+ new

@@ -1,18 +1,16 @@ +require_relative '../types/priority-queue' +require_relative '../types/monthly-task-summary' +require_relative '../types/daily' +require_relative '../types/weekly' +require_relative '../types/monthly' + module Evertils module Controller class Generate < Controller::Base attr_accessor :force, :start, :name - # required user-created notebooks - NOTEBOOK_DAILY = :Daily - NOTEBOOK_WEEKLY = :Weekly - NOTEBOOK_MONTHLY = :Monthly - NOTEBOOK_DEPLOYMENT = :Deployments - NOTEBOOK_MTS = :'Monthly Task Summaries' - NOTEBOOK_PRIORITY_QUEUE = :'Priority Queue' - def pre_exec @methods_require_internet.push(:daily, :weekly, :monthly, :mts) OptionParser.new do |opt| opt.banner = "#{Evertils::PACKAGE_NAME} generate timeframe [...-flags]" @@ -25,163 +23,56 @@ super end # generate daily notes def daily - title = @format.date_templates[NOTEBOOK_DAILY] - body = @format.template_contents(NOTEBOOK_DAILY) - body += to_enml($config.custom_sections[NOTEBOOK_DAILY]) unless $config.custom_sections.nil? - parent_notebook = NOTEBOOK_DAILY - - @model.create_note(title: title, body: body, parent_notebook: parent_notebook) + note = Type::Daily.new + note.create end # generate weekly notes def weekly - title = @format.date_templates[NOTEBOOK_WEEKLY] - body = @format.template_contents(NOTEBOOK_WEEKLY) - body += to_enml($config.custom_sections[NOTEBOOK_WEEKLY]) unless $config.custom_sections.nil? - parent_notebook = NOTEBOOK_WEEKLY - - note = @model.create_note(title: title, body: body, parent_notebook: parent_notebook) - - # BUG: inability to tag notes lies somewhere in evertils-common, - # specifically in how note.tag works - # As this is non-functional, lets not run it - commented out for now - # tag_manager = Evertils::Common::Manager::Tag.instance - # week_tag = tag_manager.find_or_create("week-#{Date.today.cweek}") - # note.tag(week_tag.prop(:name)) + note = Type::Weekly.new + note.create end # generate monthly notes def monthly - title = @format.date_templates[NOTEBOOK_MONTHLY] - body = @format.template_contents(NOTEBOOK_MONTHLY) - body += to_enml($config.custom_sections[NOTEBOOK_MONTHLY]) unless $config.custom_sections.nil? - parent_notebook = NOTEBOOK_MONTHLY - - note = @model.create_note(title: title, body: body, parent_notebook: parent_notebook) - - # BUG: inability to tag notes lies somewhere in evertils-common, - # specifically in how note.tag works - # As this is non-functional, lets not run it - commented out for now - # tag_manager = Evertils::Common::Manager::Tag.instance - # month_tag = tag_manager.find_or_create("month-#{Date.today.month}") - # note.tag(month_tag.prop(:name)) + note = Type::Monthly.new + note.create end # generate monthly task summary templates def mts - Notify.error("Name argument is required", {}) if @name.nil? + Notify.error('Name argument is required', {}) if @name.nil? - title = "#{@name} #{DateTime.now.strftime('%m-%Y')}" - body = @format.template_contents(NOTEBOOK_MTS) - body += to_enml($config.custom_sections[NOTEBOOK_MTS]) unless $config.custom_sections.nil? - parent_notebook = NOTEBOOK_MTS - - # create the note from template - mts_note = @model.create_note(title: title, body: body, parent_notebook: parent_notebook) - - # BUG: inability to tag notes lies somewhere in evertils-common, - # specifically in how note.tag works - # As this is non-functional, lets not run it - commented out for now - # tag_manager = Evertils::Common::Manager::Tag.instance - # month_tag = tag_manager.find_or_create("month-#{Date.today.month}") - # mts_note.tag(month_tag.prop(:name)) - - # TODO: commented out until support for multiple tags is added - # client_tag = tag_manager.find_or_create(@name) - # mts_note.tag(client_tag.prop(:name)) + note = Type::MonthlyTaskSummary.new(@name) + note.create end # generate priority queue notes def pq - if Date.today.monday? - # get friday's note - friday = (Date.today - 3) - dow = @format.day_of_week(friday.strftime('%a')) - note_title = "Queue For [#{friday.strftime('%B %-d')} - #{dow}]" - found = @model.find_note_contents(note_title) - - raise "Queue was not found - #{friday.strftime('%B %-d')}" unless found - - title = @format.date_templates[NOTEBOOK_PRIORITY_QUEUE] - content = prepare_enml(found.entity.content) - - @model.create_note(title: title, body: content, parent_notebook: NOTEBOOK_PRIORITY_QUEUE) - elsif Date.today.tuesday? - # find monday's note - monday = (Date.today - 1) - dow = @format.day_of_week(monday.strftime('%a')) - monday_note_title = "Queue For [#{monday.strftime('%B %-d')} - #{dow}]" - monday_note = @model.find_note_contents(monday_note_title) - - if !monday_note.entity.nil? - note = monday_note.entity - note.title = @format.date_templates[NOTEBOOK_PRIORITY_QUEUE] - else - # if it does not exist, get friday's note - friday = (Date.today - 4) - dow = @format.day_of_week(friday.strftime('%a')) - note_title = "Queue For [#{friday.strftime('%B %-d')} - #{dow}]" - note = @model.find_note_contents(note_title) - end - - raise 'Queue was not found' unless note - - content = prepare_enml(note.content) - - @model.create_note(title: note.title, body: content, parent_notebook: NOTEBOOK_PRIORITY_QUEUE) - else - yest = (Date.today - 1) - dow = @format.day_of_week(yest.strftime('%a')) - yest_note_title = "Queue For [#{yest.strftime('%B %-d')} - #{dow}]" - found = @model.find_note_contents(yest_note_title).entity - - raise "Queue was not found - #{yest.strftime('%B %-d')}" unless found - - title = @format.date_templates[NOTEBOOK_PRIORITY_QUEUE] - content = prepare_enml(found.content) - content += to_enml($config.custom_sections[NOTEBOOK_PRIORITY_QUEUE]) unless $config.custom_sections.nil? - - @model.create_note(title: title, body: content, parent_notebook: NOTEBOOK_PRIORITY_QUEUE) - end + note = Type::PriorityQueue.new + note.create end # creates the notes required to start the day # - priority queue # - daily - # - weekly (if today is Monday) + # - weekly (if today is Monday and there isn't a weekly log already) + # - monthly (if today is the 1st and there isn't a monthly log already) def morning - pq - daily - weekly if Date.today.monday? - end + pq = Type::PriorityQueue.new + pq.create - private + daily = Type::Daily.new + daily.create - # - # @since 0.3.1 - def to_enml(hash) - Evertils::Helper::EvernoteENML.with_list(hash) - end + weekly = Type::Weekly.new + weekly.create if weekly.should_create? - # - # @since 0.3.5 - def prepare_enml(content) - # remove the xml declaration and DTD - content = content.split("\n") - content.shift(2) - - xml = Nokogiri::XML::DocumentFragment.parse(content.join) - note_xml = xml.search('en-note') - - # remove <br> tags - note_xml.search('br').each do |br| - br.remove - end - - note_xml.inner_html().to_s + monthly = Type::Monthly.new + monthly.create if monthly.should_create? end end end end