Sha256: 51210b3673f0a2f2c508eca6cf21eced7da14e91f74da45dcfc35c95acacad27

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

# frozen_string_literal: true
require "tty-prompt"

module Appifier
  module Actors
    class Collector
      
      extend Carioca::Injector
      inject service: :output
      
      attr_accessor :dataset
      attr_reader :template
      
      def initialize(template: ,dataset: nil,force: false )
        @force = force
        @template = template
        get_defined_dataset(dataset)
      end
    
    
      def collect
                
        appifilename = "#{File.expand_path(Appifier::DEFAULT_TEMPLATES_PATH)}/#{template}/Appifile"
        appifile = Appifier::Components::Appifile::new path: appifilename
        prompt = TTY::Prompt.new
        @dataset = {}
        appifile.dataset_rules.each do |name, rule|
          default = (rule[:default])? rule[:default] : ""
          @dataset[name] = prompt.ask("Give #{rule[:description]} : ", default: default) do |q|
            q.required true
            q.validate Regexp.new(rule[:format]) if rule[:format]
          end 
        end
        write_dataset template: @template, data: @dataset
        @collected  = true
        output.info "Dataset recorded for #{@template}" 

      end 
      
      def collected? 
        return @collected
      end
      
      private
      def get_defined_dataset(newdataset=nil)
        if check_dataset_defined? template: @template then
          @dataset = open_dataset template: @template
          if @force
            @dataset = newdataset 
            write_dataset template: @template, data: @dataset 
          else
            raise "Dataset already collect for template : #{@template}" 
          end
          @collected = true
        elsif newdataset
          @dataset = newdataset
          write_dataset template: @template, data: @dataset
          @collected  = true
        else
          @dataset = nil
          @collected  = false
        end
      end
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
appifier-0.1.2 lib/appifier/actors/collector.rb