module Belajar
  module Terminal

    class Welcome
      include Terminal::Output

      def self.run
        self.new.run
      end

      def self.about
        self.new.about
      end

      def run
        empty_line
        say Terminal.text :welcome
        empty_line
        say "For now, let's setup the belajar paths."
        Belajar::Terminal::Setup.new.init

        show_setup_list_announcement
        show_courses_list_announcement

        courses = Loading::Courses.load(Belajar.config.courses_path)

        if courses.empty?
          show_courses_download_announcement
          show_solutions_open_announcement
        end

        empty_line
        show_learn_announcement
      end

      def about
        empty_line
        say Terminal.text :about
        empty_line
        say %x{belajar help}
      end

      private

      def show_setup_list_announcement
        command = 'belajar setup list'
        text = [
          "The courses path and solutions path have been added to your settings.",
          "Just list your current settings with the \"#{command}\" command:"
        ].join("\n")

        get_command(command, text)
      end

      def show_courses_list_announcement
        command = 'belajar courses list'
        text = [
          "Well done. Now, type \"#{command}\" to see what courses are",
          "available in your belajar folder:"
        ].join("\n")

        get_command(command, text)
      end

      def show_courses_download_announcement
        command = 'belajar courses download'
        text = [
          "Oh! You don't have any courses, yet?",
          "Just enter \"#{command}\" to download the basic Belajar course:"
        ].join("\n")

        get_command(command, text)
      end

      def show_solutions_open_announcement
        command = 'belajar solutions open'
        text = [
          "When downloading a course, Belajar scaffolds empty solution files",
          "for your code on the fly.\n",
          "Type \"#{command}\" to open your solutions folder:"
        ].join("\n")

        get_command(command, text)
      end

      def show_learn_announcement
        command = 'belajar learn'
        text = [
          "Congratulations! You learned the first steps of using belajar.",
          "To continue and start learning Ruby type \"#{command}\":"
        ].join("\n")

        get_command(command, text)
      end
    end

  end
end