mumuki-elixir-runner 1.0.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 +7 -0
- data/lib/elixir_runner.rb +12 -0
- data/lib/metadata_hook.rb +16 -0
- data/lib/query_hook.rb +41 -0
- data/lib/test_hook.rb +32 -0
- metadata +132 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5ee5628d4ef6c9b13876256ede1246e0897557be
|
4
|
+
data.tar.gz: 2008a4ec1b5c19a9bff51276971229b4832ffa73
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ad91b5a33f6b886de375e467842a61fc205562088cefc7a31fd44342ca3081eb0d5561d894e1ee3d4fe20d93a1910c199752d0054e38b7944b65432ecfbfbda4
|
7
|
+
data.tar.gz: 4571e27103ad06a674c2f9add6c3e8b0c71610f0cf2534a56f96343c0f6e1988d9edcab85a787248cfff1ce5b7500bc8a8260a4414fb1cd1fff836b588198912
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'mumukit'
|
2
|
+
|
3
|
+
Mumukit.runner_name = 'elixir'
|
4
|
+
Mumukit.configure do |config|
|
5
|
+
config.docker_image = 'mumuki/mumuki-elixir-worker'
|
6
|
+
config.comment_type = Mumukit::Directives::CommentType::Ruby
|
7
|
+
config.stateful = true
|
8
|
+
end
|
9
|
+
|
10
|
+
require_relative './test_hook'
|
11
|
+
require_relative './metadata_hook'
|
12
|
+
require_relative './query_hook'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class ElixirMetadataHook < Mumukit::Hook
|
2
|
+
def metadata
|
3
|
+
{language: {
|
4
|
+
name: 'elixir',
|
5
|
+
icon: {type: 'devicon', name: 'elixir'},
|
6
|
+
version: '1.3.0',
|
7
|
+
extension: 'exs',
|
8
|
+
ace_mode: 'elixir'
|
9
|
+
},
|
10
|
+
test_framework: {
|
11
|
+
name: 'exunit',
|
12
|
+
version: '1.3.0',
|
13
|
+
test_extension: '.exs'
|
14
|
+
}}
|
15
|
+
end
|
16
|
+
end
|
data/lib/query_hook.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
class ElixirQueryHook < Mumukit::Templates::FileHook
|
2
|
+
isolated true
|
3
|
+
|
4
|
+
def tempfile_extension
|
5
|
+
'.exs'
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
def compile_file_content(r)
|
10
|
+
<<elixir
|
11
|
+
defmodule ElixirServer do
|
12
|
+
|
13
|
+
try do
|
14
|
+
#{r.extra}
|
15
|
+
#{r.content}
|
16
|
+
#{compile_cookie(r.cookie)}
|
17
|
+
#{compile_query(r.query)}
|
18
|
+
catch
|
19
|
+
_ -> IO.puts ""
|
20
|
+
end
|
21
|
+
end
|
22
|
+
elixir
|
23
|
+
end
|
24
|
+
|
25
|
+
def compile_query(query)
|
26
|
+
if query.start_with? 'def '
|
27
|
+
"#{query}\nIO.puts \"<function>\""
|
28
|
+
else
|
29
|
+
"IO.inspect #{query}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def compile_cookie(cookie)
|
34
|
+
return if cookie.blank?
|
35
|
+
cookie.join("\n")
|
36
|
+
end
|
37
|
+
|
38
|
+
def command_line(filename)
|
39
|
+
"elixir #{filename}"
|
40
|
+
end
|
41
|
+
end
|
data/lib/test_hook.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
class ElixirTestHook < Mumukit::Templates::FileHook
|
2
|
+
isolated true
|
3
|
+
|
4
|
+
def compile_file_content(request)
|
5
|
+
<<elixir
|
6
|
+
ExUnit.start
|
7
|
+
defmodule ElixirServer do
|
8
|
+
#{request.extra}
|
9
|
+
#{request.content}
|
10
|
+
use ExUnit.Case, async: true
|
11
|
+
#{request.test}
|
12
|
+
end
|
13
|
+
elixir
|
14
|
+
end
|
15
|
+
|
16
|
+
def tempfile_extension
|
17
|
+
'.exs'
|
18
|
+
end
|
19
|
+
|
20
|
+
def command_line(filename)
|
21
|
+
"elixir #{filename}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def format_code(code)
|
25
|
+
"```\n#{code}\n```"
|
26
|
+
end
|
27
|
+
|
28
|
+
def post_process_file(file, result, status)
|
29
|
+
[format_code(result), status]
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mumuki-elixir-runner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Franco Leonardo Bulgarelli
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: mumukit
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.7'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.7'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.4'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.4'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: codeclimate-test-reporter
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: mumukit-bridge
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.3'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.3'
|
97
|
+
description:
|
98
|
+
email:
|
99
|
+
- franco@mumuki.org
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- lib/elixir_runner.rb
|
105
|
+
- lib/metadata_hook.rb
|
106
|
+
- lib/query_hook.rb
|
107
|
+
- lib/test_hook.rb
|
108
|
+
homepage: http://github.com/mumuki/mumuki-elixir-server
|
109
|
+
licenses:
|
110
|
+
- MIT
|
111
|
+
metadata: {}
|
112
|
+
post_install_message:
|
113
|
+
rdoc_options: []
|
114
|
+
require_paths:
|
115
|
+
- lib
|
116
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
requirements: []
|
127
|
+
rubyforge_project:
|
128
|
+
rubygems_version: 2.4.8
|
129
|
+
signing_key:
|
130
|
+
specification_version: 4
|
131
|
+
summary: Elixir Runner for Mumuki
|
132
|
+
test_files: []
|