hecks 0.1.4.rc → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/hecks +1 -1
- data/bin/hecks-package +65 -0
- data/bin/hecks_console +6 -4
- data/bin/hecks_serverless +6 -0
- data/lib/cli/build.rb +1 -0
- data/lib/cli/command_runner.rb +20 -17
- data/lib/cli/console.rb +2 -0
- data/lib/cli/generate.rb +6 -4
- data/lib/cli/hecks-cli.rb +27 -0
- data/lib/cli/test.rb +10 -9
- data/lib/console/commands.rb +5 -6
- data/lib/console/hecks-console.rb +1 -0
- data/lib/hecks.rb +5 -6
- data/lib/packager/README.md +0 -0
- data/lib/packager/app_runner.rb +21 -0
- data/lib/packager/args.rb +26 -0
- data/lib/packager/compatibility/fixnum.rb +6 -0
- data/lib/packager/hecks.rb +39 -0
- data/lib/packager/query_runner.rb +21 -0
- data/lib/packager/resources/Dockerfile +11 -0
- data/lib/packager/resources/app_binary +7 -0
- data/lib/packager/{templates/binary_package/build/resources/bundle/config → resources/bundle_config} +0 -0
- data/lib/packager/resources/traveling-ruby-20150715-2.2.2-linux-x86_64.tar.gz +0 -0
- data/lib/packager/resources/traveling-ruby-20150715-2.2.2-osx.tar.gz +0 -0
- data/lib/serverless/Domain +32 -0
- data/lib/serverless/cli.rb +75 -0
- data/lib/serverless/resources/command_name.js +5 -0
- data/lib/serverless/resources/environment.js +7 -0
- data/lib/serverless/resources/handler.js.tt +28 -0
- data/lib/serverless/resources/run_binary.js +22 -0
- data/lib/serverless/resources/serverless.yml +20 -0
- metadata +90 -38
- data/lib/cli.rb +0 -28
- data/lib/cli/package.rb +0 -13
- data/lib/console.rb +0 -23
- data/lib/packager.rb +0 -2
- data/lib/packager/generate_binary_package.rb +0 -105
- data/lib/packager/generate_lambda_package.rb +0 -26
- data/lib/packager/templates/binary_package/build/linux-x86_64/lib/app/hello.rb +0 -1
- data/lib/packager/templates/binary_package/build/resources/%domain_name%.rb.tt +0 -17
- data/lib/packager/templates/binary_package/build/resources/Dockerfile.tt +0 -8
- data/lib/packager/templates/binary_package/build/resources/Gemfile.tt +0 -4
- data/lib/packager/templates/binary_package/build/resources/wrapper.tt +0 -13
- data/lib/packager/templates/lambda_package/handler.js.tt +0 -12
- data/lib/packager/templates/lambda_package/serverless.yml.tt +0 -100
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 798ee36082afdda202f54dfb446727e79c38f99a
         | 
| 4 | 
            +
              data.tar.gz: 120419fa4fcd0b8f0dc2401fea4482c37e5924e1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7f100beec30a025476d12fd3061cdddbf24a1111f8123805c890a4d654b611f59c674364c3fa820be9895cc9a4be4f235b86ad18574fc76c04d14e94e8c08eed
         | 
| 7 | 
            +
              data.tar.gz: d2ee8bb2c264169866082e0b176a616ad8bb0fc02bd8c8468a5088faa6ca8acd4bfb70bfabe915f32c817343fc22355f4e2e8128ad165a09880dc95d91ad1b04
         | 
    
        data/bin/hecks
    CHANGED
    
    
    
        data/bin/hecks-package
    ADDED
    
    | @@ -0,0 +1,65 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            resources_path = File.expand_path(File.dirname(__FILE__)) + '/../lib/packager/resources'
         | 
| 3 | 
            +
            lib_path = File.expand_path(File.dirname(__FILE__)) + '/../lib/packager'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            bash_script =
         | 
| 6 | 
            +
            <<-BASH_SCRIPT
         | 
| 7 | 
            +
              set -xe
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              rm -rf package_build
         | 
| 10 | 
            +
              rm -rf package
         | 
| 11 | 
            +
              mkdir -p package_build
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              cp Gemfile package_build
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              cp Hecksfile package_build
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              bundle package --gemfile package_build/Gemfile
         | 
| 18 | 
            +
              cp #{resources_path}/Dockerfile package_build
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              mkdir -p package_build/package/linux/ruby
         | 
| 21 | 
            +
              mkdir -p package_build/package/linux/lib
         | 
| 22 | 
            +
              mkdir -p package_build/package/linux/.bundle
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              mkdir -p package_build/package/osx/ruby
         | 
| 25 | 
            +
              mkdir -p package_build/package/osx/lib
         | 
| 26 | 
            +
              mkdir -p package_build/package/osx/.bundle
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              tar -xzf #{resources_path}/traveling-ruby-20150715-2.2.2-linux-x86_64.tar.gz -C package_build/package/linux/ruby
         | 
| 29 | 
            +
              tar -xzf #{resources_path}/traveling-ruby-20150715-2.2.2-osx.tar.gz -C package_build/package/osx/ruby
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              docker build package_build -t binary_builder
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              CONTAINER_ID=`docker create binary_builder:latest`
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              docker cp $CONTAINER_ID:/usr/src/app/vendor package_build
         | 
| 36 | 
            +
              docker cp $CONTAINER_ID:/usr/src/app/Gemfile.lock package_build
         | 
| 37 | 
            +
              docker rm $CONTAINER_ID
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              cp -r package_build/Gemfile package_build/package/linux
         | 
| 40 | 
            +
              cp -r package_build/Gemfile package_build/package/osx
         | 
| 41 | 
            +
              cp -r package_build/Gemfile.lock package_build/package/linux
         | 
| 42 | 
            +
              cp -r package_build/Gemfile.lock package_build/package/osx
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              cp -r package_build/vendor package_build/package/linux
         | 
| 45 | 
            +
              cp -r package_build/vendor package_build/package/osx
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              cp #{resources_path}/app_binary package_build/package/linux/app
         | 
| 48 | 
            +
              cp #{resources_path}/app_binary package_build/package/osx/app
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              cp #{resources_path}/bundle_config package_build/package/linux/.bundle/config
         | 
| 51 | 
            +
              cp #{resources_path}/bundle_config package_build/package/osx/.bundle/config
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              cp -r #{lib_path}/** package_build/package/osx/lib
         | 
| 54 | 
            +
              cp -r #{lib_path}/** package_build/package/linux/lib
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              cp -r package_build/package .
         | 
| 57 | 
            +
              cp package_build/Gemfile.lock package/linux/osx
         | 
| 58 | 
            +
              cp package_build/Gemfile.lock package/linux/linux
         | 
| 59 | 
            +
             | 
| 60 | 
            +
              rm -rf package_build
         | 
| 61 | 
            +
            BASH_SCRIPT
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            bash_script.split("/n").each do |command|
         | 
| 64 | 
            +
              puts `#{command}`
         | 
| 65 | 
            +
            end
         | 
    
        data/bin/hecks_console
    CHANGED
    
    | @@ -1,10 +1,12 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 |  | 
| 3 | 
            -
            require_relative '../lib/ | 
| 4 | 
            -
            require  | 
| 3 | 
            +
            require_relative '../lib/hecks'
         | 
| 4 | 
            +
            require HecksConsole.full_path
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            puts File.dirname(__FILE__)
         | 
| 5 7 |  | 
| 6 8 | 
             
            puts "Hecks Loaded!"
         | 
| 7 | 
            -
            puts "Using the " +  | 
| 9 | 
            +
            puts "Using the " + HecksConsole.domain_name + " domain"
         | 
| 8 10 |  | 
| 9 | 
            -
            IRB::ExtendCommandBundle.include( | 
| 11 | 
            +
            IRB::ExtendCommandBundle.include(HecksConsole::Commands)
         | 
| 10 12 | 
             
            IRB.start
         | 
    
        data/lib/cli/build.rb
    CHANGED
    
    
    
        data/lib/cli/command_runner.rb
    CHANGED
    
    | @@ -1,25 +1,28 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            -
            class  | 
| 3 | 
            -
               | 
| 4 | 
            -
                 | 
| 5 | 
            -
                 | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 2 | 
            +
            class HecksCLI < Thor
         | 
| 3 | 
            +
              class CommandRunner
         | 
| 4 | 
            +
                # Runs CLI Commands
         | 
| 5 | 
            +
                def initialize(hexagon, name, dry_run = false)
         | 
| 6 | 
            +
                  @hexagon = hexagon
         | 
| 7 | 
            +
                  @dry_run = dry_run
         | 
| 8 | 
            +
                  @name    = name
         | 
| 9 | 
            +
                end
         | 
| 8 10 |  | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 11 | 
            +
                def call(command)
         | 
| 12 | 
            +
                  output = full_command(command)
         | 
| 13 | 
            +
                  unless File.directory?('tmp')
         | 
| 14 | 
            +
                    FileUtils.mkdir('tmp')
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
                  File.open('tmp/hecks', 'a') { |file| file.write(output + "\n")  }
         | 
| 17 | 
            +
                  return if dry_run
         | 
| 13 18 | 
             
                end
         | 
| 14 | 
            -
                File.open('tmp/hecks', 'a') { |file| file.write(output + "\n")  }
         | 
| 15 | 
            -
                return if dry_run
         | 
| 16 | 
            -
              end
         | 
| 17 19 |  | 
| 18 | 
            -
             | 
| 20 | 
            +
                private
         | 
| 19 21 |  | 
| 20 | 
            -
             | 
| 22 | 
            +
                attr_reader :hexagon, :dry_run, :name
         | 
| 21 23 |  | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            +
                def full_command(command)
         | 
| 25 | 
            +
                  (['hecks'] + command).join(' ')
         | 
| 26 | 
            +
                end
         | 
| 24 27 | 
             
              end
         | 
| 25 28 | 
             
            end
         | 
    
        data/lib/cli/console.rb
    CHANGED
    
    
    
        data/lib/cli/generate.rb
    CHANGED
    
    | @@ -1,4 +1,6 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # Generate Subcommands
         | 
| 2 4 | 
             
            class Generate < Thor
         | 
| 3 5 | 
             
              desc          'domain_objects', 'generate domain objects'
         | 
| 4 6 | 
             
              method_option :type,
         | 
| @@ -8,25 +10,25 @@ class Generate < Thor | |
| 8 10 | 
             
                            banner:   '[OBJECT_TYPE]',
         | 
| 9 11 | 
             
                            enum:     %w(entity value_object aggregate reference) if File.file?('Domain') || File.file?('hecks.gemspec')
         | 
| 10 12 |  | 
| 11 | 
            -
              register( | 
| 13 | 
            +
              register(HecksDomain::CLI::GenerateDomainObject,
         | 
| 12 14 | 
             
                            'domain_object',
         | 
| 13 15 | 
             
                            'domain_object',
         | 
| 14 16 | 
             
                            'Generate Domain Objects') if File.file?('Domain')
         | 
| 15 17 |  | 
| 16 18 | 
             
              desc           'resource_server', 'generate resource_server adapter'
         | 
| 17 | 
            -
              register( | 
| 19 | 
            +
              register(HecksAdapters::ResourceServer::CLI::GenerateResourceServer,
         | 
| 18 20 | 
             
                             'resource_server',
         | 
| 19 21 | 
             
                             'resource_server',
         | 
| 20 22 | 
             
                             'Generate A Resource Server for a domain') if File.file?('Domain')
         | 
| 21 23 |  | 
| 22 24 | 
             
              desc           'sql_database', 'generate SQL database adapter'
         | 
| 23 | 
            -
              register( | 
| 25 | 
            +
              register(HecksAdapters::SQLDatabase::CLI::GenerateSQLDatabase,
         | 
| 24 26 | 
             
                             'sql_database',
         | 
| 25 27 | 
             
                             'sql_database',
         | 
| 26 28 | 
             
                             'Generate a SQL Server Database adapter') if File.file?('Domain')
         | 
| 27 29 |  | 
| 28 30 | 
             
              desc           'domain_migrations', 'generate migrations for the sql database adapter based on your domain'
         | 
| 29 | 
            -
              register( | 
| 31 | 
            +
              register(HecksAdapters::SQLDatabase::CLI::GenerateDomainMigrations,
         | 
| 30 32 | 
             
                             'domain_migrations',
         | 
| 31 33 | 
             
                             'domain_migrations',
         | 
| 32 34 | 
             
                             'Generate Domain Migrations')
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
            require 'active_support/inflector'
         | 
| 3 | 
            +
            require 'hecks-adapters-resource-server'
         | 
| 4 | 
            +
            require 'hecks-adapters-sql-database'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            require_relative 'generate'
         | 
| 7 | 
            +
            require_relative 'test'
         | 
| 8 | 
            +
            require_relative 'console'
         | 
| 9 | 
            +
            require_relative 'command_runner'
         | 
| 10 | 
            +
            require_relative 'build'
         | 
| 11 | 
            +
             | 
| 12 | 
            +
             | 
| 13 | 
            +
            # A command line interface for generating and interacting with Hecks domains
         | 
| 14 | 
            +
            class HecksCLI < Thor
         | 
| 15 | 
            +
              package_name 'hecks'
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              desc 'generate', 'generate'
         | 
| 18 | 
            +
              subcommand('generate', Generate)
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              desc 'test', 'test'
         | 
| 21 | 
            +
              subcommand('test', Test) if File.file?('hecks.gemspec')
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              long_desc      'Generate a domain'
         | 
| 24 | 
            +
              method_option  :dryrun, aliases: '-d', type: :boolean, desc: 'Output commands without running'
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              register(HecksDomain::CLI::New, 'new', 'new', 'Create a new Domain') if File.file?('Domain')
         | 
| 27 | 
            +
            end
         | 
    
        data/lib/cli/test.rb
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # Test subcommands
         | 
| 1 2 | 
             
            class Test < Thor
         | 
| 2 3 | 
             
              include Thor::Actions
         | 
| 3 4 |  | 
| @@ -31,26 +32,26 @@ class Test < Thor | |
| 31 32 | 
             
              private
         | 
| 32 33 |  | 
| 33 34 | 
             
              def generate_sql_database(name)
         | 
| 34 | 
            -
                run("cd ../ | 
| 35 | 
            +
                run("cd ../example/#{name} && hecks generate sql_database")
         | 
| 35 36 | 
             
              end
         | 
| 36 37 |  | 
| 37 38 | 
             
              def reset_example(name)
         | 
| 38 | 
            -
                run("cd ../ | 
| 39 | 
            -
                run("cd ../ | 
| 40 | 
            -
                run("cd ../ | 
| 39 | 
            +
                run("cd ../example/#{name} && rm -rf lib")
         | 
| 40 | 
            +
                run("cd ../example/#{name} && rm -rf spec")
         | 
| 41 | 
            +
                run("cd ../example/#{name} && hecks new")
         | 
| 41 42 | 
             
              end
         | 
| 42 43 |  | 
| 43 44 | 
             
              def build_binary_package(name)
         | 
| 44 | 
            -
                run("cd ../ | 
| 45 | 
            +
                run("cd ../example/#{name} && hecks package binary  #{'-n' if options[:no_cache]}")
         | 
| 45 46 | 
             
              end
         | 
| 46 47 |  | 
| 47 48 | 
             
              def build_lambda_package(name)
         | 
| 48 | 
            -
                run("cd ../ | 
| 49 | 
            +
                run("cd ../example/#{name} && hecks package lambda")
         | 
| 49 50 | 
             
              end
         | 
| 50 51 |  | 
| 51 52 | 
             
              def generate_resource_server(name)
         | 
| 52 | 
            -
                run("cd ../ | 
| 53 | 
            -
                run("cd ../ | 
| 54 | 
            -
                run("cd ../ | 
| 53 | 
            +
                run("cd ../example/#{name} && rm -rf config.ru")
         | 
| 54 | 
            +
                run("cd ../example/#{name} && hecks generate resource_server")
         | 
| 55 | 
            +
                run("cd ../example/#{name}")
         | 
| 55 56 | 
             
              end
         | 
| 56 57 | 
             
            end
         | 
    
        data/lib/console/commands.rb
    CHANGED
    
    | @@ -1,9 +1,8 @@ | |
| 1 | 
            -
            module  | 
| 2 | 
            -
               | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
                  end
         | 
| 1 | 
            +
            module HecksConsole
         | 
| 2 | 
            +
              # mixin methods to the console
         | 
| 3 | 
            +
              module Commands
         | 
| 4 | 
            +
                def app
         | 
| 5 | 
            +
                  @app ||= HecksApplication.new(domain: HecksConsole.domain)
         | 
| 7 6 | 
             
                end
         | 
| 8 7 | 
             
              end
         | 
| 9 8 | 
             
            end
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            require_relative 'commands'
         | 
    
        data/lib/hecks.rb
    CHANGED
    
    | @@ -1,7 +1,6 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            -
            require ' | 
| 3 | 
            -
            require 'hecks- | 
| 4 | 
            -
             | 
| 5 | 
            -
            require_relative 'cli'
         | 
| 6 | 
            -
            require_relative 'console'
         | 
| 7 | 
            -
            require 'hecks-adapters'
         | 
| 2 | 
            +
            require 'thor'
         | 
| 3 | 
            +
            require 'hecks-adapters-dynamodb'
         | 
| 4 | 
            +
            require 'hecks-plugins-json-validator'
         | 
| 5 | 
            +
            require_relative 'cli/hecks-cli'
         | 
| 6 | 
            +
            require_relative 'console/hecks-console'
         | 
| 
            File without changes
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            module HecksPackager
         | 
| 2 | 
            +
              # Runs operations on the domain
         | 
| 3 | 
            +
              class AppRunner
         | 
| 4 | 
            +
                def initialize(args:, application:)
         | 
| 5 | 
            +
                  @args = Args.new(args)
         | 
| 6 | 
            +
                  @application = application
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def call
         | 
| 10 | 
            +
                  domain_module.send(args.method, args.data).call
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                private
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                attr_reader :args, :application
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def domain_module
         | 
| 18 | 
            +
                  application[args.domain_module]
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            module HecksPackager
         | 
| 2 | 
            +
              # represents the args passed in
         | 
| 3 | 
            +
              class Args
         | 
| 4 | 
            +
                attr_reader :method
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                def initialize(command_args)
         | 
| 7 | 
            +
                  @domain_module = command_args[0]
         | 
| 8 | 
            +
                  @method        = command_args[1]
         | 
| 9 | 
            +
                  @data          = command_args[2]
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def domain_module
         | 
| 13 | 
            +
                  @domain_module.to_sym
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def data
         | 
| 17 | 
            +
                  json = JSON.parse(@data, symbolize_names: true)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  if(@method == 'delete')
         | 
| 20 | 
            +
                    return json[:id]
         | 
| 21 | 
            +
                  else
         | 
| 22 | 
            +
                    json
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            require 'bundler'
         | 
| 2 | 
            +
            require 'getoptlong'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Bundler.require
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            require_relative 'args'
         | 
| 7 | 
            +
            require_relative 'compatibility/fixnum'
         | 
| 8 | 
            +
            require_relative 'app_runner'
         | 
| 9 | 
            +
            require_relative 'query_runner'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            load('Hecksfile')
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            opts = GetoptLong.new(
         | 
| 14 | 
            +
              [ '--module', '-m', GetoptLong::REQUIRED_ARGUMENT ],
         | 
| 15 | 
            +
              [ '--command', '-c', GetoptLong::REQUIRED_ARGUMENT ],
         | 
| 16 | 
            +
              [ '--data', '-d', GetoptLong::REQUIRED_ARGUMENT ]
         | 
| 17 | 
            +
            )
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            domain_module = ''
         | 
| 20 | 
            +
            command = ''
         | 
| 21 | 
            +
            data = ''
         | 
| 22 | 
            +
            opts.each do |opt, arg|
         | 
| 23 | 
            +
              case opt
         | 
| 24 | 
            +
              when '--module'
         | 
| 25 | 
            +
                domain_module = arg
         | 
| 26 | 
            +
              when '--command'
         | 
| 27 | 
            +
                command = arg
         | 
| 28 | 
            +
              when '--query'
         | 
| 29 | 
            +
                query = arg
         | 
| 30 | 
            +
              when '--data'
         | 
| 31 | 
            +
                data = arg
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            if command == 'read'
         | 
| 36 | 
            +
              puts HecksPackager::QueryRunner.new(args: [domain_module, command, data], application: HecksApp).call.to_json
         | 
| 37 | 
            +
            else
         | 
| 38 | 
            +
              puts HecksPackager::AppRunner.new(args: [domain_module, command, data], application: HecksApp).call.result.to_json
         | 
| 39 | 
            +
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            module HecksPackager
         | 
| 2 | 
            +
              # A Query runner
         | 
| 3 | 
            +
              class QueryRunner
         | 
| 4 | 
            +
                def initialize(args:, application:)
         | 
| 5 | 
            +
                  @args = Args.new(args)
         | 
| 6 | 
            +
                  @application = application
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def call
         | 
| 10 | 
            +
                  domain_module.send(args.method, args.data)
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                private
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                attr_reader :args, :application
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def domain_module
         | 
| 18 | 
            +
                  application[args.domain_module]
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            FROM ruby:2.2
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            COPY vendor /usr/src/app/vendor
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            COPY Gemfile /usr/src/app/Gemfile
         | 
| 6 | 
            +
            COPY Gemfile.lock /usr/src/app/Gemfile.lock
         | 
| 7 | 
            +
            run gem uninstall -i /usr/local/lib/ruby/gems/2.2.0 bundler --force -x
         | 
| 8 | 
            +
            run gem install bundler -v 1.9.9
         | 
| 9 | 
            +
            run gem list bundler
         | 
| 10 | 
            +
            RUN cd /usr/src/app/ && ls
         | 
| 11 | 
            +
            RUN cd /usr/src/app/ && bundle install --path vendor
         |