asker-tool 2.1.3 → 2.1.5
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/README.md +17 -17
- data/lib/asker.rb +40 -83
- data/lib/asker/application.rb +1 -1
- data/lib/asker/checker.rb +42 -25
- data/lib/asker/cli.rb +1 -1
- data/lib/asker/data/world.rb +2 -0
- data/lib/asker/{exporter/code_screen_exporter.rb → displayer/code_displayer.rb} +6 -6
- data/lib/asker/{exporter/concept_ai_screen_exporter.rb → displayer/concept_ai_displayer.rb} +27 -29
- data/lib/asker/displayer/concept_displayer.rb +27 -0
- data/lib/asker/displayer/stats_displayer.rb +13 -0
- data/lib/asker/exporter/code_gift_exporter.rb +10 -11
- data/lib/asker/exporter/concept_ai_gift_exporter.rb +9 -9
- data/lib/asker/exporter/concept_ai_yaml_exporter.rb +2 -4
- data/lib/asker/exporter/concept_doc_exporter.rb +9 -15
- data/lib/asker/exporter/output_file_exporter.rb +18 -0
- data/lib/asker/files/example-concept.haml +25 -8
- data/lib/asker/formatter/concept_string_formatter.rb +9 -8
- data/lib/asker/lang/lang.rb +3 -4
- data/lib/asker/lang/locales/du/templates.yaml +50 -0
- data/lib/asker/lang/locales/en/connectors.yaml +44 -0
- data/lib/asker/lang/locales/en/mistakes.yaml +37 -0
- data/lib/asker/lang/locales/en/templates.yaml +29 -0
- data/lib/asker/lang/locales/es/connectors.yaml +92 -0
- data/lib/asker/lang/locales/es/mistakes.yaml +82 -0
- data/lib/asker/lang/locales/es/templates.yaml +29 -0
- data/lib/asker/lang/locales/fr/connectors.yaml +92 -0
- data/lib/asker/lang/locales/fr/mistakes.yaml +82 -0
- data/lib/asker/lang/locales/fr/templates.yaml +29 -0
- data/lib/asker/lang/locales/javascript/connectors.yaml +11 -0
- data/lib/asker/lang/locales/javascript/mistakes.yaml +30 -0
- data/lib/asker/lang/locales/javascript/templates.yaml +3 -0
- data/lib/asker/lang/locales/math/connectors.yaml +2 -0
- data/lib/asker/lang/locales/math/mistakes.yaml +2 -0
- data/lib/asker/lang/locales/math/templates.yaml +1 -0
- data/lib/asker/lang/locales/python/connectors.yaml +11 -0
- data/lib/asker/lang/locales/python/mistakes.yaml +26 -0
- data/lib/asker/lang/locales/python/templates.yaml +3 -0
- data/lib/asker/lang/locales/ruby/connectors.yaml +11 -0
- data/lib/asker/lang/locales/ruby/mistakes.yaml +33 -0
- data/lib/asker/lang/locales/ruby/templates.yaml +3 -0
- data/lib/asker/lang/locales/sql/connectors.yaml +6 -0
- data/lib/asker/lang/locales/sql/mistakes.yaml +11 -0
- data/lib/asker/lang/locales/sql/templates.yaml +2 -0
- data/lib/asker/loader/input_loader.rb +22 -5
- data/lib/asker/loader/project_loader.rb +25 -24
- data/lib/asker/logger.rb +1 -2
- data/lib/asker/project.rb +5 -3
- data/lib/asker/skeleton.rb +25 -24
- metadata +47 -63
- data/docs/changelog/v2.1.md +0 -99
- data/docs/commands.md +0 -12
- data/docs/contributions.md +0 -18
- data/docs/history.md +0 -40
- data/docs/idea.md +0 -44
- data/docs/inputs/README.md +0 -39
- data/docs/inputs/code.md +0 -69
- data/docs/inputs/concepts.md +0 -142
- data/docs/inputs/jedi.md +0 -68
- data/docs/inputs/tables.md +0 -112
- data/docs/inputs/templates.md +0 -87
- data/docs/install/README.md +0 -38
- data/docs/install/manual.md +0 -26
- data/docs/install/scripts.md +0 -38
- data/docs/revise/asker-file.md +0 -41
- data/docs/revise/buenas-practicas/01-convocatoria.md +0 -30
- data/docs/revise/buenas-practicas/02-formulario.md +0 -35
- data/docs/revise/buenas-practicas/03-descripcion.md +0 -63
- data/docs/revise/buenas-practicas/04-resultados.md +0 -17
- data/docs/revise/buenas-practicas/05-reproducir.md +0 -10
- data/docs/revise/ejemplos/01/README.md +0 -27
- data/docs/revise/ejemplos/02/README.md +0 -31
- data/docs/revise/ejemplos/03/README.md +0 -31
- data/docs/revise/ejemplos/04/README.md +0 -37
- data/docs/revise/ejemplos/05/README.md +0 -25
- data/docs/revise/ejemplos/06/README.md +0 -43
- data/docs/revise/ejemplos/README.md +0 -11
- data/docs/revise/projects.md +0 -74
- data/lib/asker/exporter/concept_screen_exporter.rb +0 -25
- data/lib/asker/exporter/main.rb +0 -9
@@ -0,0 +1,29 @@
|
|
1
|
+
---
|
2
|
+
:none: "Aucune réponse n'est correcte"
|
3
|
+
:error: 'Erreur'
|
4
|
+
:misspelling: 'Erreur ortographique'
|
5
|
+
:true: 'Vrai'
|
6
|
+
:false: 'Faux'
|
7
|
+
:d1: "Définition \\: <i><%=text1%></i><br/>Choisissez l'option qui correspond le mieux à la définition précédente.<br/>"
|
8
|
+
:d2: 'Définition de <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/>'
|
9
|
+
:d3: 'Définition de <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/></br><p>Note: Chaque symbole ? représente une lettre, et * un ou plusieurs mots.</p>'
|
10
|
+
:d4: 'Définition de <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/><br/>(Mettez chaque mot à la bonne position dans le texte)'
|
11
|
+
:b1: 'Par rapport au concept <b><%=text1%></b>, associez chaque "<%=text2%>" avec son,sa "<%=text3%>".<br/>'
|
12
|
+
:f1: 'Les éléments suivants sont "<%=text2%>" du concept <b><%=text1%></b>\:<ul><li><%=text3%></li></ul>'
|
13
|
+
:f2: "Les éléments suivants sont \"<%=text2%>\".<br/>Sélectionnez l' option qui n'appartient pas au concept <b><%=text1%></b>."
|
14
|
+
:f3: 'Les éléments suivants sont "<%=text2%>" du concept <b><%=text1%></b>\:<br><p><%=text3%></p>(Mettez chaque mot à la bonne position dans le texte)'
|
15
|
+
:i1: "<img src=\"<%=text1%>\" alt\\=\"image\" width=\"400\" height=\"300\"><br/>Choisissez l'option qui correspond le mieux à l'image précédente.<br/>"
|
16
|
+
:i2: "<img src=\"<%=text1%>\" alt\\=\"image\" width=\"400\" height=\"300\"><br/>L'image précédente correspond à <b><%=text2%></b>."
|
17
|
+
:i3: "<img src=\"<%=text1%>\" alt\\=\"image\" width=\"400\" height=\"300\"><br/>Écrivez l'option <%=text2%>, qui correspond le mieux à l'image précédente.<br/>"
|
18
|
+
:i4: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Définition\: <i><%=text2%></i><br/><br/>(Mettez chaque mot à la bonne position dans le texte)'
|
19
|
+
:s1: 'Par rapport au concept <b><%=text1%></b>, mettez dans l'ordre chaque "<%=text2%>" afin que le critère soit rempli "<%=text3%>".<br/>'
|
20
|
+
:t1table: 'Concept <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Choisissez l'option correcte.<br/>'
|
21
|
+
:t2table: 'Concept <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Choisissez l'option correcte.<br/>'
|
22
|
+
:t3table: 'Concept <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Choisissez l'option correcte.<br/>'
|
23
|
+
:t4table: 'Concept <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Choisissez l'option correcte.<br/>'
|
24
|
+
:t5table: 'Concept <b><%=text1%></b><br/>L'association suivante est correcte\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
|
25
|
+
:t6table: 'Concept <b><%=text1%></b><br/>L'association suivante est correcte\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
|
26
|
+
:t7table: 'Concept <b><%=text1%></b><br/>L'association suivante est correcte\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
|
27
|
+
:t8table: 'Concept <b><%=text1%></b><br/>Complétez l'association suivante\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: [*]</li></ul>Écrire un mot.<br/>'
|
28
|
+
:t9table: 'Concept <b><%=text1%></b><br/>Complétez l'association suivante\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: <%=text5%></li></ul>Écrire<%=text6%> mots.<br/>'
|
29
|
+
:code1: '<pre><%=text1%></pre><br/><p>Écrire le numéro de ligne où se trouve la première erreur. Écrire 0 s'il n'y a aucune erreur.</p>'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
---
|
2
|
+
:'else': 'else:'
|
3
|
+
:elif: 'elseif,else if,elsif'
|
4
|
+
:if: 'fi'
|
5
|
+
:'document.': 'documento.,document .'
|
6
|
+
:'write(': 'write.(,print(,(write '
|
7
|
+
:alert: 'alerta,aletr,alart'
|
8
|
+
:new: 'nev,naw'
|
9
|
+
:function: 'funtion,funtcion,def,defun'
|
10
|
+
:#!: '#'
|
11
|
+
:": "', "
|
12
|
+
:': '", '
|
13
|
+
:', ': '; ,. '
|
14
|
+
:.: ' ,:,;,. '
|
15
|
+
:,: ' ,.,;'
|
16
|
+
:;: ':, '
|
17
|
+
:(: '[,\{,),(('
|
18
|
+
:((: '('
|
19
|
+
:): '],\},(,))'
|
20
|
+
:)): ')'
|
21
|
+
:{: '[,(,\}'
|
22
|
+
:}: '],),\}'
|
23
|
+
:==: '\=,!='
|
24
|
+
:=>: '==,\=,<=,>>,->'
|
25
|
+
:' = ': ' == '
|
26
|
+
:'!=': '==,\='
|
27
|
+
:' + ': ' - '
|
28
|
+
:' - ': ' + '
|
29
|
+
:'-': '_'
|
30
|
+
:'_': '-'
|
@@ -0,0 +1 @@
|
|
1
|
+
---
|
@@ -0,0 +1,26 @@
|
|
1
|
+
---
|
2
|
+
:'else:': 'else '
|
3
|
+
:elif: 'elseif,else if,elsif'
|
4
|
+
:if: 'fi'
|
5
|
+
:' print ': ' puts , prints, echo '
|
6
|
+
:#!: '#'
|
7
|
+
:": "', "
|
8
|
+
:': '", '
|
9
|
+
:', ': '; ,. '
|
10
|
+
:.: ' ,:,;'
|
11
|
+
:,: ' ,.,;'
|
12
|
+
:;: ':'
|
13
|
+
:(: '[,\{,)'
|
14
|
+
:((: '('
|
15
|
+
:): '],\},('
|
16
|
+
:)): ')'
|
17
|
+
:{: '[,(,\}'
|
18
|
+
:}: '],),\}'
|
19
|
+
:==: '\=,!='
|
20
|
+
:=>: '==,\=,<=,>>,->'
|
21
|
+
:' = ': ' == '
|
22
|
+
:'!=': '==,\='
|
23
|
+
:' + ': ' - '
|
24
|
+
:' - ': ' + '
|
25
|
+
:'-': '_'
|
26
|
+
:'_': '-'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
---
|
2
|
+
:' do ': ' ( , [ '
|
3
|
+
:' elsif ': ' elif , else if , elseif '
|
4
|
+
:' else ': ' if , els , elseif '
|
5
|
+
:end: 'edn,begin,],), '
|
6
|
+
:' if ': ' unless , fi , else '
|
7
|
+
:' unless ': ' if , unles '
|
8
|
+
:' puts ': ' put , prints, echo '
|
9
|
+
:system(: 'sistem(,execute('
|
10
|
+
:'.each ': 'each ,.split '
|
11
|
+
:.split: '.each,.spilt,split'
|
12
|
+
:#!: '# '
|
13
|
+
:": "', "
|
14
|
+
:': '", '
|
15
|
+
:', ': '; ,. '
|
16
|
+
:|: ' ,('
|
17
|
+
:.: ' ,:,;'
|
18
|
+
:,: ' ,.,;'
|
19
|
+
:;: ':'
|
20
|
+
:(: '[,)'
|
21
|
+
:((: '('
|
22
|
+
:): '],('
|
23
|
+
:)): ')'
|
24
|
+
:{: 'do,[,('
|
25
|
+
:}: 'end,],)'
|
26
|
+
:==: '\=,!='
|
27
|
+
:=>: '==,\=,<=,>>,->'
|
28
|
+
:' = ': ' == '
|
29
|
+
:'!=': '==,\='
|
30
|
+
:' + ': ' - '
|
31
|
+
:' - ': ' + '
|
32
|
+
:'-': '_'
|
33
|
+
:'_': '-'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
---
|
2
|
+
:ALTER: 'MODIFICAR,ATLER,CREATE,DROP'
|
3
|
+
:CREATE: 'CREAR,CRETAE,DROP,ALTER'
|
4
|
+
:DROP: 'ELIMINAR,DORP,CREATE,ALTER'
|
5
|
+
:INTEGER: 'ENTERO,INTEGUER,VARCHAR'
|
6
|
+
:TABLE: 'TABLA,TALBE,INDEX,DATABASE'
|
7
|
+
:VARCHAR: 'TEXTO,VARHCAR'
|
8
|
+
:;: ':'
|
9
|
+
:);: ')'
|
10
|
+
:(: '[,{'
|
11
|
+
:): '],}'
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'directory_loader'
|
4
|
+
require_relative '../ai/concept_ai'
|
5
|
+
require_relative '../data/world'
|
4
6
|
require_relative '../logger'
|
5
7
|
|
6
8
|
# Load DATA defined into our Project
|
@@ -9,16 +11,31 @@ module InputLoader
|
|
9
11
|
# Load input data from every input directory
|
10
12
|
# @param inputdirs (Array)
|
11
13
|
def self.load(inputdirs)
|
12
|
-
|
14
|
+
data = { concepts: [], codes: [], world: nil, concepts_ai: [] }
|
13
15
|
Logger.verbose "\n[INFO] Loading input data"
|
14
16
|
|
15
17
|
# inputdirs = project.inputdirs.split(',')
|
16
18
|
inputdirs.each do |dirname|
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
temp = DirectoryLoader.load(dirname)
|
20
|
+
data[:concepts] += temp[:concepts]
|
21
|
+
data[:codes] += temp[:codes]
|
20
22
|
end
|
23
|
+
create_questions(data)
|
24
|
+
end
|
21
25
|
|
22
|
-
|
26
|
+
private_class_method def self.create_questions(data)
|
27
|
+
# Create World data
|
28
|
+
# * Calculate concept neighbours
|
29
|
+
# * TO-DO: Calculate code neighbours
|
30
|
+
data[:world] = World.new(data[:concepts])
|
31
|
+
# Create ConceptAI data and make concept questions
|
32
|
+
data[:concepts].each do |concept|
|
33
|
+
concept_ai = ConceptAI.new(concept, data[:world])
|
34
|
+
concept_ai.make_questions
|
35
|
+
data[:concepts_ai] << concept_ai
|
36
|
+
end
|
37
|
+
# Make code questions
|
38
|
+
data[:codes].each(&:make_questions)
|
39
|
+
data
|
23
40
|
end
|
24
41
|
end
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'yaml'
|
4
4
|
require_relative '../project'
|
5
|
+
require_relative '../logger'
|
5
6
|
|
6
7
|
# Load params into Project class using arg input
|
7
8
|
# * load
|
@@ -10,40 +11,48 @@ require_relative '../project'
|
|
10
11
|
# * load_from_directory
|
11
12
|
# * load_error
|
12
13
|
module ProjectLoader
|
13
|
-
|
14
|
+
##
|
15
|
+
# Load project from args
|
16
|
+
# @param args (String or Hash)
|
17
|
+
def self.load(args)
|
14
18
|
project = Project.instance
|
15
19
|
|
16
20
|
if args.class == Hash
|
17
21
|
project.param.merge!(args)
|
18
|
-
return
|
22
|
+
return project
|
19
23
|
elsif args.class == String
|
20
24
|
ProjectLoader.load_from_string(args)
|
21
|
-
return
|
25
|
+
return project
|
22
26
|
end
|
23
27
|
|
24
28
|
msg = '[ERROR] ProjectLoader:'
|
25
29
|
msg += "Configuration params format is <#{pArgs.class}>!"
|
26
|
-
|
30
|
+
Logger.verbose Rainbow(msg).red
|
27
31
|
raise msg
|
28
32
|
end
|
29
33
|
|
30
|
-
|
34
|
+
##
|
35
|
+
# Load project from filepath. Options:
|
36
|
+
# * HAML filepath
|
37
|
+
# * XML filepath
|
38
|
+
# * YAML filepath
|
39
|
+
# @param filepath (String)
|
40
|
+
def self.load_from_string(filepath)
|
31
41
|
project = Project.instance
|
32
|
-
unless File.exist?(
|
42
|
+
unless File.exist?(filepath)
|
33
43
|
msg = Rainbow("[WARN] ProjectLoader.load: #{arg} dosn't exists!").yellow.bright
|
34
44
|
project.verbose msg
|
35
45
|
raise msg
|
36
46
|
end
|
37
47
|
|
38
|
-
if File.extname(
|
39
|
-
project.set(:inputdirs, File.dirname(
|
40
|
-
project.set(:process_file, File.basename(
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
load_from_directory(arg)
|
48
|
+
if File.extname(filepath) == '.haml' || File.extname(filepath) == '.xml'
|
49
|
+
project.set(:inputdirs, File.dirname(filepath))
|
50
|
+
project.set(:process_file, File.basename(filepath))
|
51
|
+
return project
|
52
|
+
elsif File.extname(filepath) == '.yaml'
|
53
|
+
return load_from_yaml(filepath)
|
45
54
|
else
|
46
|
-
load_error(
|
55
|
+
load_error(filepath)
|
47
56
|
end
|
48
57
|
end
|
49
58
|
|
@@ -52,19 +61,11 @@ module ProjectLoader
|
|
52
61
|
project.param.merge!(YAML.load(File.open(arg)))
|
53
62
|
project.set(:configfilename, arg)
|
54
63
|
project.set(:projectdir, File.dirname(arg))
|
55
|
-
|
56
|
-
|
57
|
-
def self.load_from_directory(dirpath)
|
58
|
-
msg = Rainbow('[WARN] ProjectLoader.load: Directory input ').yellow
|
59
|
-
msg += Rainbow(dirpath).bright.yellow
|
60
|
-
msg += Rainbow(' not implemented!').yellow
|
61
|
-
Project.instance.verbose msg
|
62
|
-
exit 1
|
64
|
+
project
|
63
65
|
end
|
64
66
|
|
65
67
|
def self.load_error(arg)
|
66
|
-
msg = Rainbow(
|
67
|
-
msg += Rainbow(arg).red.bright + Rainbow(' unkown').red
|
68
|
+
msg = Rainbow("[ERROR] ProjectLoader.Input unkown: #{arg}").red.bright
|
68
69
|
Project.instance.verbose msg
|
69
70
|
raise msg
|
70
71
|
end
|
data/lib/asker/logger.rb
CHANGED
@@ -9,8 +9,7 @@ module Logger
|
|
9
9
|
def self.verbose(msg)
|
10
10
|
project = Project.instance
|
11
11
|
puts msg if project.get(:verbose)
|
12
|
-
project.get(:logfile)
|
13
|
-
# project.get(:logfile)&.project.get(:logfile).write("#{msg}\n")
|
12
|
+
project.get(:logfile)&.write("#{msg}\n")
|
14
13
|
end
|
15
14
|
|
16
15
|
##
|
data/lib/asker/project.rb
CHANGED
@@ -4,6 +4,7 @@ require 'singleton'
|
|
4
4
|
require 'rainbow'
|
5
5
|
require 'fileutils'
|
6
6
|
require_relative 'application'
|
7
|
+
require_relative 'logger'
|
7
8
|
|
8
9
|
# Contains Project data and methods
|
9
10
|
class Project
|
@@ -105,6 +106,7 @@ class Project
|
|
105
106
|
def verbose(msg)
|
106
107
|
puts msg if get(:verbose)
|
107
108
|
get(:logfile).write(msg.to_s + "\n") if get(:logfile)
|
109
|
+
raise "verbose"
|
108
110
|
end
|
109
111
|
|
110
112
|
##
|
@@ -131,9 +133,9 @@ class Project
|
|
131
133
|
f.write("Author : David Vargas Ruiz\n")
|
132
134
|
f.write('=' * 50 + "\n\n")
|
133
135
|
|
134
|
-
verbose '[INFO] Project open'
|
135
|
-
verbose ' ├── inputdirs = ' + Rainbow(get(:inputdirs)).bright
|
136
|
-
verbose ' └── process_file = ' + Rainbow(get(:process_file)).bright
|
136
|
+
Logger.verbose '[INFO] Project open'
|
137
|
+
Logger.verbose ' ├── inputdirs = ' + Rainbow(get(:inputdirs)).bright
|
138
|
+
Logger.verbose ' └── process_file = ' + Rainbow(get(:process_file)).bright
|
137
139
|
end
|
138
140
|
|
139
141
|
# Create or reset output file
|
data/lib/asker/skeleton.rb
CHANGED
@@ -10,26 +10,28 @@ require 'rainbow'
|
|
10
10
|
# * create_dirs
|
11
11
|
# * copyfile
|
12
12
|
module Skeleton
|
13
|
+
##
|
14
|
+
# Create skeleton for asker input files
|
15
|
+
# @param dirpath (String) Folder path to save example files
|
13
16
|
def self.create(dirpath)
|
14
17
|
puts "\n[INFO] Creating #{Rainbow(dirpath).bright} project skeleton"
|
15
18
|
create_dir dirpath
|
16
19
|
copy_files_into(dirpath)
|
17
20
|
end
|
18
21
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
#
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
source = File.join(source_basedir, item[:source])
|
28
|
-
target = File.join(project_dir, item[:target])
|
29
|
-
copyfile(source, target)
|
30
|
-
end
|
22
|
+
##
|
23
|
+
# Copy lib/asker/files into Folder
|
24
|
+
# @param dirpath (String)
|
25
|
+
def self.copy_files_into(dirpath)
|
26
|
+
# Directory and files: example-concept.haml
|
27
|
+
source = File.join(File.dirname(__FILE__), 'files/example-concept.haml')
|
28
|
+
target = File.join(dirpath, 'example-concept.haml')
|
29
|
+
copyfile(source, target)
|
31
30
|
end
|
32
31
|
|
32
|
+
##
|
33
|
+
# Create folder
|
34
|
+
# @param dirpath (String)
|
33
35
|
def self.create_dir(dirpath)
|
34
36
|
if Dir.exist? dirpath
|
35
37
|
puts "* Exists dir! => #{Rainbow(dirpath).yellow}"
|
@@ -43,21 +45,20 @@ module Skeleton
|
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
48
|
+
##
|
49
|
+
# Copy target file to dest
|
50
|
+
# @param target (String)
|
51
|
+
# @param dest (String)
|
50
52
|
def self.copyfile(target, dest)
|
51
53
|
if File.exist? dest
|
52
54
|
puts "* Exists file! => #{Rainbow(dest).yellow}"
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end
|
55
|
+
return true
|
56
|
+
end
|
57
|
+
begin
|
58
|
+
FileUtils.cp(target, dest)
|
59
|
+
puts "* Create file => #{Rainbow(dest).green}"
|
60
|
+
rescue StandardError
|
61
|
+
puts "* Create file ERROR => #{Rainbow(dest).red}"
|
61
62
|
end
|
62
63
|
end
|
63
64
|
end
|