arethusa-cli 0.1.1 → 0.1.2
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/lib/arethusa/cli/generator.rb +13 -71
- data/lib/arethusa/cli/helpers/directories_and_files.rb +101 -0
- data/lib/arethusa/cli/helpers/name_handler.rb +30 -0
- data/lib/arethusa/cli/templates/bower.tt +10 -0
- data/lib/arethusa/cli/templates/conf.tt +127 -0
- data/lib/arethusa/cli/templates/gitignore.tt +8 -0
- data/lib/arethusa/cli/templates/gruntfile.tt +179 -0
- data/lib/arethusa/cli/templates/index.tt +21 -0
- data/lib/arethusa/cli/templates/jshintrc.tt +33 -0
- data/lib/arethusa/cli/templates/module.tt +1 -1
- data/lib/arethusa/cli/templates/package.tt +30 -0
- data/lib/arethusa/cli/templates/plugin_spec.tt +11 -8
- data/lib/arethusa/cli/templates/retriever.tt +18 -0
- data/lib/arethusa/cli/templates/retriever_spec.tt +46 -0
- data/lib/arethusa/cli/templates/scss.tt +1 -0
- data/lib/arethusa/cli/templates/service.tt +4 -6
- data/lib/arethusa/cli/version.rb +1 -1
- data/lib/arethusa/cli.rb +77 -3
- metadata +14 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9eb723e4851d58b50e479cec50f01c0f71d039f9
|
4
|
+
data.tar.gz: 51265087589544548b7d211fbd18df685083af46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2cfe9c23328d69e48b8eca723754462e1239e9c3997250ea2887bfd4bc5178da148466fbe3025e6cd93407df5e240b1583d3fabff3feda846dc8fb5d5fc7b88e
|
7
|
+
data.tar.gz: b8ddfc16ffec9107f8865932f958ca78aa39dfeb63e559bcc54d61540cb071690321989d085cf6eae2fd66e39f8eb38a5992cd519abb9131951af9faebce2c51
|
@@ -9,7 +9,6 @@ class Arethusa::CLI
|
|
9
9
|
end
|
10
10
|
|
11
11
|
include Thor::Actions
|
12
|
-
attr_reader :namespace
|
13
12
|
|
14
13
|
desc 'plugin NAME', 'Creates a new Arethusa plugin skeleton'
|
15
14
|
method_option :namespace, aliases: '-n', default: 'arethusa',
|
@@ -23,7 +22,6 @@ class Arethusa::CLI
|
|
23
22
|
create_directories
|
24
23
|
create_files
|
25
24
|
|
26
|
-
try('insert module into arethusa', :add_module)
|
27
25
|
try('add to Gruntfile', :add_to_gruntfile)
|
28
26
|
try('add module to index.html', :add_to_index)
|
29
27
|
|
@@ -43,26 +41,25 @@ class Arethusa::CLI
|
|
43
41
|
@name = name
|
44
42
|
@namespace = options[:namespace]
|
45
43
|
|
46
|
-
|
44
|
+
empty_directory(spec_dir)
|
45
|
+
create_spec
|
47
46
|
|
48
47
|
commit_changes if options[:commit]
|
49
48
|
say_status(:success, "Created spec file for #{namespaced_name}")
|
50
49
|
end
|
51
50
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
else
|
57
|
-
@name
|
58
|
-
end
|
59
|
-
end
|
51
|
+
desc 'retriever MODULE NAME', 'Create a new Arethusa retriever skeleton'
|
52
|
+
def retriever(mod, name)
|
53
|
+
@module = mod
|
54
|
+
@name = name
|
60
55
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
56
|
+
create_retriever
|
57
|
+
create_retriever_spec
|
58
|
+
end
|
59
|
+
|
60
|
+
no_commands do
|
61
|
+
include Helpers::NameHandler
|
62
|
+
include Helpers::DirectoriesAndFiles
|
66
63
|
|
67
64
|
def try(message, method)
|
68
65
|
puts
|
@@ -70,10 +67,6 @@ class Arethusa::CLI
|
|
70
67
|
send(method)
|
71
68
|
end
|
72
69
|
|
73
|
-
def namespaced_name(js = false)
|
74
|
-
[namespace, name(js)].compact.join('.')
|
75
|
-
end
|
76
|
-
|
77
70
|
DIRECTORIES = %w{ plugin_dir template_dir }
|
78
71
|
def create_directories
|
79
72
|
DIRECTORIES.each { |dir| empty_directory(send(dir)) }
|
@@ -85,33 +78,6 @@ class Arethusa::CLI
|
|
85
78
|
create_html_template
|
86
79
|
end
|
87
80
|
|
88
|
-
def create_module
|
89
|
-
template('templates/module.tt', js_dir("#{namespaced_name}.js"))
|
90
|
-
end
|
91
|
-
|
92
|
-
def create_service
|
93
|
-
template('templates/service.tt', plugin_dir("#{name}.js"))
|
94
|
-
end
|
95
|
-
|
96
|
-
def create_html_template
|
97
|
-
template('templates/html_template.tt', html_template_file)
|
98
|
-
end
|
99
|
-
|
100
|
-
def create_spec_file
|
101
|
-
empty_directory(spec_dir)
|
102
|
-
template('templates/plugin_spec.tt', spec_dir("#{name}_spec.js"))
|
103
|
-
end
|
104
|
-
|
105
|
-
def add_module
|
106
|
-
insert_into_file(arethusa_main, after: /arethusa\.core',\n/, force: false) do
|
107
|
-
" '#{namespaced_name(true)}',\n"
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def arethusa_main
|
112
|
-
js_dir('arethusa.js')
|
113
|
-
end
|
114
|
-
|
115
81
|
def add_to_gruntfile
|
116
82
|
insert_into_file(gruntfile, after: /var arethusaModules.*?\n/, force: false) do
|
117
83
|
%[ "#{namespaced_name}",\n]
|
@@ -145,30 +111,6 @@ It could look like this:
|
|
145
111
|
puts text.lines.map { |line| "\t#{line}" }.join
|
146
112
|
end
|
147
113
|
|
148
|
-
def plugin_dir(file = '')
|
149
|
-
File.join(js_dir, namespaced_name, file)
|
150
|
-
end
|
151
|
-
|
152
|
-
def template_dir(file = '')
|
153
|
-
File.join(temp_dir, namespaced_name, file)
|
154
|
-
end
|
155
|
-
|
156
|
-
def html_template_file
|
157
|
-
template_dir("#{name}.html")
|
158
|
-
end
|
159
|
-
|
160
|
-
def js_dir(file = '')
|
161
|
-
File.join(destination_root, 'app/js', file)
|
162
|
-
end
|
163
|
-
|
164
|
-
def temp_dir
|
165
|
-
File.join(destination_root, 'app/templates')
|
166
|
-
end
|
167
|
-
|
168
|
-
def spec_dir(file = '')
|
169
|
-
File.join(destination_root, 'spec', namespaced_name, file)
|
170
|
-
end
|
171
|
-
|
172
114
|
def commit_changes(spec = false)
|
173
115
|
sp = spec ? "spec " : ""
|
174
116
|
|
@@ -0,0 +1,101 @@
|
|
1
|
+
class Arethusa::CLI
|
2
|
+
module Helpers
|
3
|
+
module DirectoriesAndFiles
|
4
|
+
def template_path(name)
|
5
|
+
File.join(File.expand_path('../../templates/', __FILE__), name)
|
6
|
+
end
|
7
|
+
|
8
|
+
def plugin_dir(file = '')
|
9
|
+
File.join(js_dir, namespaced_name, file)
|
10
|
+
end
|
11
|
+
|
12
|
+
def template_dir(file = '')
|
13
|
+
File.join(temp_dir, namespaced_name, file)
|
14
|
+
end
|
15
|
+
|
16
|
+
def html_template_file
|
17
|
+
template_dir("#{name}.html")
|
18
|
+
end
|
19
|
+
|
20
|
+
def js_dir(file = '')
|
21
|
+
File.join(destination_root, 'app/js', file)
|
22
|
+
end
|
23
|
+
|
24
|
+
def temp_dir
|
25
|
+
File.join(destination_root, 'app/templates')
|
26
|
+
end
|
27
|
+
|
28
|
+
def spec_dir(file = '')
|
29
|
+
File.join(destination_root, 'spec', mod || namespaced_name, file)
|
30
|
+
end
|
31
|
+
|
32
|
+
def css_dir(file = '')
|
33
|
+
File.join(destination_root, 'app/css', file)
|
34
|
+
end
|
35
|
+
|
36
|
+
def conf_dir(file = '')
|
37
|
+
File.join(destination_root, 'app/static', 'configs', file)
|
38
|
+
end
|
39
|
+
|
40
|
+
def dist_dir(file = '')
|
41
|
+
File.join(destination_root, 'dist', file)
|
42
|
+
end
|
43
|
+
|
44
|
+
def create_module
|
45
|
+
template(template_path('module'), js_dir("#{namespaced_name}.js"))
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_service
|
49
|
+
template(template_path('service'), plugin_dir("#{name}.js"))
|
50
|
+
end
|
51
|
+
|
52
|
+
def create_html_template
|
53
|
+
template(template_path('html_template'), html_template_file)
|
54
|
+
end
|
55
|
+
|
56
|
+
def create_spec
|
57
|
+
template(template_path('plugin_spec'), spec_dir("#{name}_spec.js"))
|
58
|
+
end
|
59
|
+
|
60
|
+
def create_gitignore
|
61
|
+
template(template_path('gitignore'), '.gitignore')
|
62
|
+
end
|
63
|
+
|
64
|
+
def create_jshintrc
|
65
|
+
template(template_path('jshintrc'), '.jshintrc')
|
66
|
+
end
|
67
|
+
|
68
|
+
def create_package
|
69
|
+
template(template_path('package'), 'package.json')
|
70
|
+
end
|
71
|
+
|
72
|
+
def create_bower
|
73
|
+
template(template_path('bower'), 'bower.json')
|
74
|
+
end
|
75
|
+
|
76
|
+
def create_gruntfile
|
77
|
+
template(template_path('gruntfile'), 'Gruntfile.js')
|
78
|
+
end
|
79
|
+
|
80
|
+
def create_scss
|
81
|
+
template(template_path('scss'), css_dir("#{namespaced_name}.scss"))
|
82
|
+
end
|
83
|
+
|
84
|
+
def create_index_file
|
85
|
+
template(template_path('index'), "app/index.html")
|
86
|
+
end
|
87
|
+
|
88
|
+
def create_conf_file
|
89
|
+
template(template_path('conf'), conf_dir('staging.json'))
|
90
|
+
end
|
91
|
+
|
92
|
+
def create_retriever
|
93
|
+
template(template_path('retriever'), js_dir(File.join(mod, "#{name}.js")))
|
94
|
+
end
|
95
|
+
|
96
|
+
def create_retriever_spec
|
97
|
+
template(template_path('retriever_spec'), spec_dir("#{name}_spec.js"))
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Arethusa::CLI
|
2
|
+
module Helpers
|
3
|
+
module NameHandler
|
4
|
+
def namespaced_name(js = false, no_default = false)
|
5
|
+
ns = namespace(js);
|
6
|
+
ns = nil if no_default && @namespace == 'arethusa'
|
7
|
+
[ns, name(js)].compact.join('.')
|
8
|
+
end
|
9
|
+
|
10
|
+
def namespace(js = false)
|
11
|
+
js ? to_camelcase(@namespace) : @namespace
|
12
|
+
end
|
13
|
+
|
14
|
+
def name(js = false, capitalize = false)
|
15
|
+
js ? to_camelcase(@name, capitalize) : @name
|
16
|
+
end
|
17
|
+
|
18
|
+
def mod(js = false)
|
19
|
+
js ? to_camelcase(@module) : @module
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_camelcase(str, capitalize = false)
|
23
|
+
parts = str.split('_')
|
24
|
+
first = parts.shift
|
25
|
+
first.capitalize! if capitalize
|
26
|
+
"#{first}#{parts.map(&:capitalize).join}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
{
|
2
|
+
"main" : {
|
3
|
+
"debug" : true,
|
4
|
+
"showKeys" : true,
|
5
|
+
"template" : "templates/main_grid.html",
|
6
|
+
"retrievers" : {
|
7
|
+
"TreebankRetriever" : {
|
8
|
+
"resource" : "fakePerseids",
|
9
|
+
"docIdentifier" : "treebank",
|
10
|
+
"preselector" : "w"
|
11
|
+
}
|
12
|
+
},
|
13
|
+
"persisters" : {
|
14
|
+
"TreebankPersister" : {
|
15
|
+
"resource" : "fakePerseids",
|
16
|
+
"docIdentifier" : "treebank"
|
17
|
+
}
|
18
|
+
},
|
19
|
+
"plugins" : [
|
20
|
+
"text",
|
21
|
+
"artificialToken",
|
22
|
+
"search",
|
23
|
+
"morph",
|
24
|
+
"relation",
|
25
|
+
"depTree",
|
26
|
+
"review",
|
27
|
+
"history",
|
28
|
+
"comments"
|
29
|
+
]
|
30
|
+
},
|
31
|
+
|
32
|
+
"navbar" : {
|
33
|
+
"template" : "templates/navbar1.html",
|
34
|
+
"search" : true,
|
35
|
+
"navigation" : true
|
36
|
+
},
|
37
|
+
|
38
|
+
"notifier" : {
|
39
|
+
"duration" : "5000",
|
40
|
+
"maxMessages" : 7
|
41
|
+
},
|
42
|
+
|
43
|
+
"resources" : {
|
44
|
+
"@include" : "../../../bower_components/arethusa/app/static/configs/resources/dev.json"
|
45
|
+
},
|
46
|
+
|
47
|
+
"plugins" : {
|
48
|
+
"text" : {
|
49
|
+
"main" : true,
|
50
|
+
"template" : "templates/text2.html"
|
51
|
+
},
|
52
|
+
|
53
|
+
"depTree" : {
|
54
|
+
"main" : true,
|
55
|
+
"contextMenu" : true,
|
56
|
+
"contextMenuTemplate": "templates/arethusa.dep_tree/context_menu.html",
|
57
|
+
"template" : "templates/dep_tree.html"
|
58
|
+
},
|
59
|
+
|
60
|
+
"search" : {
|
61
|
+
"template" : "templates/search.html"
|
62
|
+
},
|
63
|
+
|
64
|
+
"morph" : {
|
65
|
+
"retrievers" : {
|
66
|
+
"BspMorphRetriever" : {
|
67
|
+
"resource" : "morphologyServiceLat"
|
68
|
+
}
|
69
|
+
},
|
70
|
+
"template" : "templates/morph3.html",
|
71
|
+
"contextMenu" : true,
|
72
|
+
"contextMenuTemplate": "templates/arethusa.morph/context_menu.html",
|
73
|
+
"lexicalInventory" : {
|
74
|
+
"retriever" : {
|
75
|
+
"LexicalInventoryRetriever" : {
|
76
|
+
"resource" : "lexInvFusekiEndpoint"
|
77
|
+
}
|
78
|
+
}
|
79
|
+
},
|
80
|
+
"@include" : "../../../bower_components/arethusa/app/static/configs/morph/lat_attributes.json"
|
81
|
+
},
|
82
|
+
|
83
|
+
"relation" : {
|
84
|
+
"template" : "templates/relation.html",
|
85
|
+
"advancedMode" : true,
|
86
|
+
"contextMenu" : true,
|
87
|
+
"contextMenuTemplate": "templates/arethusa.relation/context_menu.html",
|
88
|
+
"@include" : "../../../bower_components/arethusa/app/static/configs/relation/relations.json"
|
89
|
+
},
|
90
|
+
|
91
|
+
"review" : {
|
92
|
+
"template" : "templates/arethusa.review/review.html",
|
93
|
+
"retrievers" : {
|
94
|
+
"TreebankRetriever" : {
|
95
|
+
"resource" : "fakeGold"
|
96
|
+
}
|
97
|
+
}
|
98
|
+
},
|
99
|
+
|
100
|
+
"history" : {
|
101
|
+
"maxSize" : 5,
|
102
|
+
"template" : "templates/history.html"
|
103
|
+
},
|
104
|
+
|
105
|
+
"artificialToken" : {
|
106
|
+
"template" : "templates/arethusa.artificial_token/artificial_token.html"
|
107
|
+
},
|
108
|
+
|
109
|
+
"comments" : {
|
110
|
+
"retriever" : {
|
111
|
+
"CommentsRetriever" : {
|
112
|
+
"resource" : "fakePerseidsComments"
|
113
|
+
}
|
114
|
+
}
|
115
|
+
}
|
116
|
+
},
|
117
|
+
|
118
|
+
"exitHandler" : {
|
119
|
+
"title" : "somewhere",
|
120
|
+
"route" : "http://www.:x.com",
|
121
|
+
"params" : ["x", "q"]
|
122
|
+
},
|
123
|
+
|
124
|
+
"keyCapture" : {
|
125
|
+
"@include" : "../../../bower_components/arethusa/app/static/configs/keyboard/key_map.json"
|
126
|
+
}
|
127
|
+
}
|
@@ -0,0 +1,179 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var srcFiles = 'app/**/*.js';
|
4
|
+
var htmlFiles = 'app/**/*.html';
|
5
|
+
var cssFiles = 'app/**/*.scss';
|
6
|
+
var specFiles = 'spec/**/*.js';
|
7
|
+
var devServerPort = 8081;
|
8
|
+
var reloadPort = 35279;
|
9
|
+
var confPath = 'app/static/configs';
|
10
|
+
var arethusaPackages = 'bower_components/arethusa/dist/arethusa_packages.min.js';
|
11
|
+
var arethusaFiles = 'bower_components/arethusa/dist/arethusa.min.js';
|
12
|
+
var specHelpers = 'bower_components/arethusa/spec/helpers/**/*';
|
13
|
+
|
14
|
+
module.exports = function(grunt) {
|
15
|
+
require('load-grunt-tasks')(grunt);
|
16
|
+
|
17
|
+
function confFiles() {
|
18
|
+
return grunt.file.expand(confPath + '/*.json');
|
19
|
+
}
|
20
|
+
|
21
|
+
function confMergeCommands() {
|
22
|
+
var file, target, cmd, cmds = [];
|
23
|
+
var files = confFiles();
|
24
|
+
for (var i = files.length - 1; i >= 0; i--){
|
25
|
+
file = files[i];
|
26
|
+
target = file.replace(confPath, 'dist/configs');
|
27
|
+
cmd = 'arethusa merge ' + file + ' -m > ' + target;
|
28
|
+
cmds.push(cmd);
|
29
|
+
}
|
30
|
+
return cmds;
|
31
|
+
}
|
32
|
+
|
33
|
+
grunt.initConfig({
|
34
|
+
pkg: grunt.file.readJSON('package.json'),
|
35
|
+
jasmine: {
|
36
|
+
src: srcFiles,
|
37
|
+
options: {
|
38
|
+
specs: specFiles
|
39
|
+
}
|
40
|
+
},
|
41
|
+
karma: {
|
42
|
+
spec: {
|
43
|
+
autoWatch: false,
|
44
|
+
singleRun: true,
|
45
|
+
options: {
|
46
|
+
files : [
|
47
|
+
arethusaPackages,
|
48
|
+
'bower_components/angular-mocks/angular-mocks.js',
|
49
|
+
specHelpers,
|
50
|
+
arethusaFiles,
|
51
|
+
srcFiles,
|
52
|
+
specFiles
|
53
|
+
],
|
54
|
+
frameworks: ['jasmine'],
|
55
|
+
browsers : ['PhantomJS'],
|
56
|
+
plugins : [
|
57
|
+
'karma-chrome-launcher',
|
58
|
+
'karma-phantomjs-launcher',
|
59
|
+
'karma-firefox-launcher',
|
60
|
+
'karma-jasmine',
|
61
|
+
'karma-coverage'
|
62
|
+
],
|
63
|
+
reporters: ['progress', 'coverage'],
|
64
|
+
preprocessors: {
|
65
|
+
'app/**/*.js': ['coverage']
|
66
|
+
},
|
67
|
+
coverageReporter: {
|
68
|
+
reporters: [
|
69
|
+
{type: 'html', dir:'coverage/'},
|
70
|
+
{type: 'lcov'},
|
71
|
+
]
|
72
|
+
}
|
73
|
+
}
|
74
|
+
},
|
75
|
+
},
|
76
|
+
coveralls: {
|
77
|
+
src: 'coverage/**/lcov.info'
|
78
|
+
},
|
79
|
+
uglify: {
|
80
|
+
options: {
|
81
|
+
sourceMap: true
|
82
|
+
},
|
83
|
+
'<%= namespaced_name %>' : {
|
84
|
+
files: {
|
85
|
+
'dist/<%= namespaced_name %>.min.js' : [
|
86
|
+
'app/js/<%= namespaced_name %>.js',
|
87
|
+
'app/js/<%= namespaced_name %>/**/*.js',
|
88
|
+
'app/templates/<%= namespaced_name %>/compiled/<%= namespaced_name %>.templates.js'
|
89
|
+
]
|
90
|
+
}
|
91
|
+
}
|
92
|
+
},
|
93
|
+
sass: {
|
94
|
+
dist: {
|
95
|
+
options: {
|
96
|
+
sourcemap: true
|
97
|
+
},
|
98
|
+
files: {
|
99
|
+
'app/css/<%= namespaced_name %>.css': 'app/css/<%= namespaced_name %>.scss'
|
100
|
+
}
|
101
|
+
}
|
102
|
+
},
|
103
|
+
cssmin: {
|
104
|
+
css: {
|
105
|
+
src: 'app/css/**/*.css',
|
106
|
+
dest: 'dist/<%= namespaced_name %>.min.css'
|
107
|
+
}
|
108
|
+
},
|
109
|
+
ngtemplates : {
|
110
|
+
'<%= namespaced_name %>' : {
|
111
|
+
cwd: 'app',
|
112
|
+
src: 'templates/**/*.html',
|
113
|
+
dest: 'app/templates/<%= namespaced_name %>/compiled/<%= namespaced_name %>.templates.js'
|
114
|
+
}
|
115
|
+
},
|
116
|
+
connect: {
|
117
|
+
devServer: {
|
118
|
+
options: {
|
119
|
+
port: devServerPort,
|
120
|
+
debug: true,
|
121
|
+
keepalive: true,
|
122
|
+
livereload: reloadPort,
|
123
|
+
middleware: function(connect) {
|
124
|
+
return [
|
125
|
+
require('connect-livereload')(),
|
126
|
+
connect.static(require('path').resolve('./'))
|
127
|
+
];
|
128
|
+
}
|
129
|
+
}
|
130
|
+
},
|
131
|
+
},
|
132
|
+
watch: {
|
133
|
+
spec: {
|
134
|
+
files: [srcFiles, htmlFiles, specFiles],
|
135
|
+
tasks: 'karma:spec'
|
136
|
+
},
|
137
|
+
server: {
|
138
|
+
files: [srcFiles, htmlFiles, cssFiles],
|
139
|
+
tasks: 'minify',
|
140
|
+
options: {
|
141
|
+
spawn: false,
|
142
|
+
livereload: reloadPort
|
143
|
+
}
|
144
|
+
},
|
145
|
+
},
|
146
|
+
jshint: {
|
147
|
+
options: {
|
148
|
+
jshintrc: true,
|
149
|
+
},
|
150
|
+
all: ['*.js', srcFiles, specFiles]
|
151
|
+
},
|
152
|
+
shell: {
|
153
|
+
minifyConfs: {
|
154
|
+
command: confMergeCommands().join('&')
|
155
|
+
}
|
156
|
+
},
|
157
|
+
concurrent: {
|
158
|
+
minify: {
|
159
|
+
tasks: [ 'minify:src', 'minify:css', 'minify:conf' ]
|
160
|
+
},
|
161
|
+
server: {
|
162
|
+
tasks: ['watch:server', 'server'],
|
163
|
+
options: {
|
164
|
+
logConcurrentOutput: true
|
165
|
+
}
|
166
|
+
}
|
167
|
+
}
|
168
|
+
});
|
169
|
+
|
170
|
+
grunt.registerTask('minify:src', ['ngtemplates', 'uglify']);
|
171
|
+
grunt.registerTask('minify:css', ['sass', 'cssmin']);
|
172
|
+
grunt.registerTask('minify:conf', 'shell:minifyConfs');
|
173
|
+
grunt.registerTask('minify', ['concurrent:minify']);
|
174
|
+
|
175
|
+
grunt.registerTask('spec', 'watch:spec');
|
176
|
+
grunt.registerTask('server', ['minify', 'connect:devServer']);
|
177
|
+
grunt.registerTask('reload-server', 'concurrent:server');
|
178
|
+
grunt.registerTask('default', ['karma:spec', 'jshint']);
|
179
|
+
};
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html ng-app="arethusa" ng-di-strict>
|
3
|
+
<head>
|
4
|
+
<link rel="stylesheet" href="../bower_components/arethusa/dist/arethusa.min.css">
|
5
|
+
<link rel="stylesheet" href="../bower_components/arethusa/vendor/foundation-icons/foundation-icons.css">
|
6
|
+
<link rel="stylesheet" href="../bower_components/arethusa/vendor/font-awesome-4.1.0/css/font-awesome.min.css">
|
7
|
+
|
8
|
+
<script src="../bower_components/arethusa/dist/arethusa_packages.min.js"></script>
|
9
|
+
<script src="../bower_components/arethusa/dist/arethusa.min.js"></script>
|
10
|
+
|
11
|
+
<script>
|
12
|
+
arethusa.setBasePath('../bower_components/arethusa')
|
13
|
+
</script>
|
14
|
+
|
15
|
+
<meta charset="UTF-8">
|
16
|
+
<title></title>
|
17
|
+
</head>
|
18
|
+
<body key-capture>
|
19
|
+
<div id="arethusa-main-view" class="fade very-slow" ng-view></div>
|
20
|
+
</body>
|
21
|
+
</html>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
{
|
2
|
+
"globalstrict" : true,
|
3
|
+
"browser" : true,
|
4
|
+
"jquery" : true,
|
5
|
+
"undef" : true,
|
6
|
+
"multistr" : true,
|
7
|
+
"globals" : {
|
8
|
+
"angular" : false,
|
9
|
+
"d3" : false,
|
10
|
+
"lunr" : true,
|
11
|
+
"arethusaUtil" : true,
|
12
|
+
"aU": true,
|
13
|
+
"arethusaMocks" : true,
|
14
|
+
"arethusaLogger" : true,
|
15
|
+
"UserVoice" : true,
|
16
|
+
"inject" : false,
|
17
|
+
"module" : false,
|
18
|
+
"require" : false,
|
19
|
+
"describe" : false,
|
20
|
+
"ddescribe" : false,
|
21
|
+
"xdescribe" : false,
|
22
|
+
"beforeEach" : false,
|
23
|
+
"afterEach" : false,
|
24
|
+
"it" : false,
|
25
|
+
"iit" : false,
|
26
|
+
"xit" : false,
|
27
|
+
"expect" : false,
|
28
|
+
"browser" : false,
|
29
|
+
"by" : false,
|
30
|
+
"element" : false,
|
31
|
+
"process" : false
|
32
|
+
}
|
33
|
+
}
|
@@ -1,2 +1,2 @@
|
|
1
1
|
"use strict";
|
2
|
-
angular.module('<%= namespaced_name(true) %>', [
|
2
|
+
angular.module('<%= namespaced_name(true) %>', []);
|
@@ -0,0 +1,30 @@
|
|
1
|
+
{
|
2
|
+
"name": "<%= namespaced_name %>",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"dependencies" : {},
|
5
|
+
"devDependencies": {
|
6
|
+
"grunt-cli": "0.1.13",
|
7
|
+
"grunt-angular-templates": "0.5.6",
|
8
|
+
"grunt-contrib-jasmine": "0.6.3",
|
9
|
+
"grunt-contrib-watch": "0.6.1",
|
10
|
+
"grunt-contrib-jshint": "0.10.0",
|
11
|
+
"grunt-contrib-connect": "~0.7.1",
|
12
|
+
"grunt-coveralls": "0.3.0",
|
13
|
+
"grunt-karma": "0.8.0",
|
14
|
+
"grunt-contrib-uglify": "0.4.0",
|
15
|
+
"grunt-contrib-cssmin": "0.10.0",
|
16
|
+
"grunt-concurrent": "0.5.0",
|
17
|
+
"karma-chrome-launcher": "0.1.3",
|
18
|
+
"karma-phantomjs-launcher": "0.1.4",
|
19
|
+
"karma-firefox-launcher": "0.1.3",
|
20
|
+
"karma-jasmine": "0.1.5",
|
21
|
+
"karma-coverage": "0.2.1",
|
22
|
+
"bower": "1.3.8",
|
23
|
+
"connect-livereload": "0.4.0",
|
24
|
+
"execSync": "latest",
|
25
|
+
"load-grunt-tasks": "^0.6.0",
|
26
|
+
"grunt-contrib-sass": "0.7.3",
|
27
|
+
"grunt-shell": "0.7.0",
|
28
|
+
"grunt-contrib-concat": "~0.5.0"
|
29
|
+
}
|
30
|
+
}
|
@@ -1,21 +1,24 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
describe('<%= name(true) %>', function() {
|
4
|
-
var <%= name(true)
|
4
|
+
var <%= name(true) %>;
|
5
|
+
|
6
|
+
var conf = {};
|
5
7
|
|
6
8
|
beforeEach(function() {
|
7
|
-
module("arethusa.core"
|
8
|
-
$provide.value('configurator', arethusaMocks.configurator());
|
9
|
-
});
|
9
|
+
module("arethusa.core");
|
10
10
|
|
11
|
-
module(
|
11
|
+
module('<%= namespaced_name(true) %>');
|
12
12
|
|
13
|
-
inject(function(_<%= name(true) %>_,
|
13
|
+
inject(function(_<%= name(true) %>_, configurator) {
|
14
14
|
<%= name(true) %> = _<%= name(true) %>_;
|
15
|
-
|
16
|
-
|
15
|
+
configurator.defineConfiguration(conf);
|
16
|
+
<%= name(true) %>.init();
|
17
17
|
});
|
18
18
|
});
|
19
19
|
|
20
20
|
// Write your specs here!
|
21
|
+
it('succeeds to load the plugin', function() {
|
22
|
+
expect(<%= name(true) %>).toBeDefined();
|
23
|
+
});
|
21
24
|
});
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
angular.module('<%= mod(true) %>').factory('<%= name(true, true) %>', [
|
4
|
+
'configurator',
|
5
|
+
function(configurator) {
|
6
|
+
return function(conf) {
|
7
|
+
var self = this;
|
8
|
+
var resource = configurator.provideResource(conf.resource);
|
9
|
+
|
10
|
+
this.get = function(callback) {
|
11
|
+
resource.get().then(function(res) {
|
12
|
+
var data = res.data;
|
13
|
+
callback(data);
|
14
|
+
});
|
15
|
+
};
|
16
|
+
};
|
17
|
+
}
|
18
|
+
]);
|
@@ -0,0 +1,46 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
describe('<%= name(true, true) %>', function() {
|
4
|
+
var retriever, backend;
|
5
|
+
|
6
|
+
var backendUrl = '';
|
7
|
+
|
8
|
+
var conf = {
|
9
|
+
resources: {
|
10
|
+
testResource: {
|
11
|
+
route: backendUrl
|
12
|
+
}
|
13
|
+
}
|
14
|
+
};
|
15
|
+
|
16
|
+
beforeEach(function() {
|
17
|
+
module('arethusa.core');
|
18
|
+
module('<%= mod(true) %>');
|
19
|
+
|
20
|
+
inject(function($httpBackend, configurator, locator) {
|
21
|
+
backend = $httpBackend;
|
22
|
+
configurator.defineConfiguration(conf);
|
23
|
+
retriever = configurator.getRetriever({
|
24
|
+
<%= name(true, true) %> : {
|
25
|
+
resource: 'testResource'
|
26
|
+
}
|
27
|
+
});
|
28
|
+
locator.watchUrl(false);
|
29
|
+
locator.set({});
|
30
|
+
});
|
31
|
+
});
|
32
|
+
|
33
|
+
describe('get', function() {
|
34
|
+
it('...', function() {
|
35
|
+
var response = {};
|
36
|
+
|
37
|
+
backend.when('GET', backendUrl).respond(response);
|
38
|
+
|
39
|
+
// Your GET code goes here!
|
40
|
+
|
41
|
+
backend.flush();
|
42
|
+
|
43
|
+
// Your first expectation goes here!
|
44
|
+
});
|
45
|
+
});
|
46
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
@import '../../bower_components/bourbon/dist/bourbon';
|
@@ -5,18 +5,16 @@ angular.module('<%= namespaced_name(true) %>').service('<%= name(true) %>', [
|
|
5
5
|
'configurator',
|
6
6
|
function(state, configurator) {
|
7
7
|
var self = this;
|
8
|
+
this.name = '<%= namespaced_name(true, true) %>';
|
8
9
|
|
9
10
|
this.defaultConf = {
|
10
|
-
|
11
|
-
|
12
|
-
}
|
11
|
+
template: 'templates/<%= namespaced_name(false, true) %>/<%= name %>.html'
|
12
|
+
};
|
13
13
|
|
14
14
|
function configure() {
|
15
|
-
configurator.getConfAndDelegate(
|
15
|
+
configurator.getConfAndDelegate(self);
|
16
16
|
}
|
17
17
|
|
18
|
-
configure();
|
19
|
-
|
20
18
|
this.init = function() {
|
21
19
|
configure();
|
22
20
|
};
|
data/lib/arethusa/cli/version.rb
CHANGED
data/lib/arethusa/cli.rb
CHANGED
@@ -4,6 +4,8 @@ require 'json'
|
|
4
4
|
module Arethusa
|
5
5
|
class CLI < Thor
|
6
6
|
require 'arethusa/cli/version'
|
7
|
+
require 'arethusa/cli/helpers/name_handler'
|
8
|
+
require 'arethusa/cli/helpers/directories_and_files'
|
7
9
|
require 'arethusa/cli/subcommand'
|
8
10
|
|
9
11
|
require 'arethusa/cli/generator'
|
@@ -11,6 +13,10 @@ module Arethusa
|
|
11
13
|
|
12
14
|
include Thor::Actions
|
13
15
|
|
16
|
+
def self.source_root
|
17
|
+
File.join(File.dirname(__FILE__), 'cli')
|
18
|
+
end
|
19
|
+
|
14
20
|
register(Generator, Generator.namespace, "#{Generator.namespace} [ACTION]", 'Generates Arethusa files. Call "arethusa generate" to learn more')
|
15
21
|
register(Transformer, Transformer.namespace, "#{Transformer.namespace} [ACTION]", 'Tranforms Alpheios conf files. Call "arethusa transform" to learn more')
|
16
22
|
|
@@ -77,7 +83,69 @@ EOF
|
|
77
83
|
end
|
78
84
|
end
|
79
85
|
|
86
|
+
desc 'init NAMESPACE NAME', 'Initializes a new git repo for plugin development'
|
87
|
+
def init(namespace, name)
|
88
|
+
@name = name
|
89
|
+
@namespace = namespace
|
90
|
+
|
91
|
+
inside namespaced_name do
|
92
|
+
init_git
|
93
|
+
create_folder_hierarchy
|
94
|
+
create_templates
|
95
|
+
initial_commit
|
96
|
+
install
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
80
100
|
no_commands do
|
101
|
+
include Helpers::NameHandler
|
102
|
+
include Helpers::DirectoriesAndFiles
|
103
|
+
|
104
|
+
def init_git
|
105
|
+
if `git init`
|
106
|
+
say_status(:success, "Initialized new repo in #{namespaced_name}")
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def initial_commit
|
111
|
+
`git add -A`
|
112
|
+
`git commit -m 'Initial commit'`
|
113
|
+
end
|
114
|
+
|
115
|
+
def create_folder_hierarchy
|
116
|
+
dirs = [
|
117
|
+
plugin_dir, template_dir, template_dir('compiled'),
|
118
|
+
css_dir, conf_dir, dist_dir, dist_dir('configs')
|
119
|
+
]
|
120
|
+
dirs.each { |dir| empty_directory(dir) }
|
121
|
+
end
|
122
|
+
|
123
|
+
def create_templates
|
124
|
+
create_module
|
125
|
+
create_service
|
126
|
+
create_html_template
|
127
|
+
create_spec
|
128
|
+
create_scss
|
129
|
+
create_gitignore
|
130
|
+
create_jshintrc
|
131
|
+
create_package
|
132
|
+
create_bower
|
133
|
+
create_gruntfile
|
134
|
+
create_index_file
|
135
|
+
create_conf_file
|
136
|
+
end
|
137
|
+
|
138
|
+
def install
|
139
|
+
`npm install && bower install && gem install sass -v 3.3.14`
|
140
|
+
|
141
|
+
# We have to minify Arethusa by hand for now - this won't be needed
|
142
|
+
# at a later stage.
|
143
|
+
inside 'bower_components/arethusa' do
|
144
|
+
`npm install && bower install`
|
145
|
+
`grunt minify:all`
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
81
149
|
def minify
|
82
150
|
if `grunt minify:all`
|
83
151
|
say_status(:success, 'minified Arethusa')
|
@@ -168,14 +236,20 @@ EOF
|
|
168
236
|
elsif key == '@include'
|
169
237
|
additional_conf = read_conf(value)
|
170
238
|
conf.delete(key)
|
171
|
-
|
172
|
-
|
239
|
+
if additional_conf
|
240
|
+
conf.merge!(additional_conf)
|
241
|
+
traverse(additional_conf)
|
242
|
+
end
|
173
243
|
end
|
174
244
|
end
|
175
245
|
end
|
176
246
|
|
177
247
|
def read_conf(path)
|
178
|
-
|
248
|
+
begin
|
249
|
+
JSON.parse(File.read(path))
|
250
|
+
rescue
|
251
|
+
nil
|
252
|
+
end
|
179
253
|
end
|
180
254
|
end
|
181
255
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arethusa-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LFDM
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,10 +114,22 @@ files:
|
|
114
114
|
- lib/arethusa.rb
|
115
115
|
- lib/arethusa/cli.rb
|
116
116
|
- lib/arethusa/cli/generator.rb
|
117
|
+
- lib/arethusa/cli/helpers/directories_and_files.rb
|
118
|
+
- lib/arethusa/cli/helpers/name_handler.rb
|
117
119
|
- lib/arethusa/cli/subcommand.rb
|
120
|
+
- lib/arethusa/cli/templates/bower.tt
|
121
|
+
- lib/arethusa/cli/templates/conf.tt
|
122
|
+
- lib/arethusa/cli/templates/gitignore.tt
|
123
|
+
- lib/arethusa/cli/templates/gruntfile.tt
|
118
124
|
- lib/arethusa/cli/templates/html_template.tt
|
125
|
+
- lib/arethusa/cli/templates/index.tt
|
126
|
+
- lib/arethusa/cli/templates/jshintrc.tt
|
119
127
|
- lib/arethusa/cli/templates/module.tt
|
128
|
+
- lib/arethusa/cli/templates/package.tt
|
120
129
|
- lib/arethusa/cli/templates/plugin_spec.tt
|
130
|
+
- lib/arethusa/cli/templates/retriever.tt
|
131
|
+
- lib/arethusa/cli/templates/retriever_spec.tt
|
132
|
+
- lib/arethusa/cli/templates/scss.tt
|
121
133
|
- lib/arethusa/cli/templates/service.tt
|
122
134
|
- lib/arethusa/cli/transformer.rb
|
123
135
|
- lib/arethusa/cli/version.rb
|