Sha256: 15f11e18429f580f9e798066161c2f71f8e4981e98bc1355b80b18c6f848ab36

Contents?: true

Size: 1.43 KB

Versions: 68

Compression:

Stored size: 1.43 KB

Contents

class Jets::Stack
  class Function
    extend Memoist

    attr_reader :template
    def initialize(template)
      @template = template
    end

    def meth
      attributes = @template.values.first
      handler = attributes['Properties']['Handler']
      handler.split('.').last
    end

    def lang
      if source_file
        # Detect language from file extension
        ext = File.extname(source_file).sub(/^\./,'').to_sym
        lang_map[ext]
      else
        puts "WARN: Unable to find a source file for function. Looked at: #{search_expression}".colorize(:yellow)
      end
    end

    def lang_map
      {
        rb: :ruby,
        py: :python,
        js: :node,
      }
    end

    def source_file
      Dir.glob(search_expression).first
    end
    memoize :source_file

    def search_expression
      attributes = @template.values.first
      handler = attributes['Properties']['Handler']
      search_expression = handler.split('.')[0..-2].join('.') + '.*'
      search_expression.sub('handlers/shared/', "#{Jets.root}app/shared/")
    end

    # Relative path
    # app/shared/functions/kevin.py => handlers/shared/functions/kevin.py
    def handler_dest
      return unless source_file

      dest = source_file.sub(%r{.*/app/}, "handlers/")
      if lang == :ruby
        filename = dest.split('.').first
        filename + '.js' # change extension to .js because ruby uses a node shim
      else
        dest
      end
    end
  end
end

Version data entries

68 entries across 68 versions & 1 rubygems

Version Path
jets-1.6.0 lib/jets/stack/function.rb
jets-1.5.10 lib/jets/stack/function.rb
jets-1.5.9 lib/jets/stack/function.rb
jets-1.5.8 lib/jets/stack/function.rb
jets-1.5.7 lib/jets/stack/function.rb
jets-1.5.6 lib/jets/stack/function.rb
jets-1.5.5 lib/jets/stack/function.rb
jets-1.5.4 lib/jets/stack/function.rb
jets-1.5.3 lib/jets/stack/function.rb
jets-1.5.2 lib/jets/stack/function.rb
jets-1.5.1 lib/jets/stack/function.rb
jets-1.5.0 lib/jets/stack/function.rb
jets-1.4.11 lib/jets/stack/function.rb
jets-1.4.10 lib/jets/stack/function.rb
jets-1.4.9 lib/jets/stack/function.rb
jets-1.4.8 lib/jets/stack/function.rb
jets-1.4.7 lib/jets/stack/function.rb
jets-1.4.6 lib/jets/stack/function.rb
jets-1.4.5 lib/jets/stack/function.rb
jets-1.4.4 lib/jets/stack/function.rb