asker-tool 2.1.3 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -17
  3. data/lib/asker.rb +40 -83
  4. data/lib/asker/application.rb +1 -1
  5. data/lib/asker/checker.rb +42 -25
  6. data/lib/asker/cli.rb +1 -1
  7. data/lib/asker/data/world.rb +2 -0
  8. data/lib/asker/{exporter/code_screen_exporter.rb → displayer/code_displayer.rb} +6 -6
  9. data/lib/asker/{exporter/concept_ai_screen_exporter.rb → displayer/concept_ai_displayer.rb} +27 -29
  10. data/lib/asker/displayer/concept_displayer.rb +27 -0
  11. data/lib/asker/displayer/stats_displayer.rb +13 -0
  12. data/lib/asker/exporter/code_gift_exporter.rb +10 -11
  13. data/lib/asker/exporter/concept_ai_gift_exporter.rb +9 -9
  14. data/lib/asker/exporter/concept_ai_yaml_exporter.rb +2 -4
  15. data/lib/asker/exporter/concept_doc_exporter.rb +9 -15
  16. data/lib/asker/exporter/output_file_exporter.rb +18 -0
  17. data/lib/asker/files/example-concept.haml +25 -8
  18. data/lib/asker/formatter/concept_string_formatter.rb +9 -8
  19. data/lib/asker/lang/lang.rb +3 -4
  20. data/lib/asker/lang/locales/du/templates.yaml +50 -0
  21. data/lib/asker/lang/locales/en/connectors.yaml +44 -0
  22. data/lib/asker/lang/locales/en/mistakes.yaml +37 -0
  23. data/lib/asker/lang/locales/en/templates.yaml +29 -0
  24. data/lib/asker/lang/locales/es/connectors.yaml +92 -0
  25. data/lib/asker/lang/locales/es/mistakes.yaml +82 -0
  26. data/lib/asker/lang/locales/es/templates.yaml +29 -0
  27. data/lib/asker/lang/locales/fr/connectors.yaml +92 -0
  28. data/lib/asker/lang/locales/fr/mistakes.yaml +82 -0
  29. data/lib/asker/lang/locales/fr/templates.yaml +29 -0
  30. data/lib/asker/lang/locales/javascript/connectors.yaml +11 -0
  31. data/lib/asker/lang/locales/javascript/mistakes.yaml +30 -0
  32. data/lib/asker/lang/locales/javascript/templates.yaml +3 -0
  33. data/lib/asker/lang/locales/math/connectors.yaml +2 -0
  34. data/lib/asker/lang/locales/math/mistakes.yaml +2 -0
  35. data/lib/asker/lang/locales/math/templates.yaml +1 -0
  36. data/lib/asker/lang/locales/python/connectors.yaml +11 -0
  37. data/lib/asker/lang/locales/python/mistakes.yaml +26 -0
  38. data/lib/asker/lang/locales/python/templates.yaml +3 -0
  39. data/lib/asker/lang/locales/ruby/connectors.yaml +11 -0
  40. data/lib/asker/lang/locales/ruby/mistakes.yaml +33 -0
  41. data/lib/asker/lang/locales/ruby/templates.yaml +3 -0
  42. data/lib/asker/lang/locales/sql/connectors.yaml +6 -0
  43. data/lib/asker/lang/locales/sql/mistakes.yaml +11 -0
  44. data/lib/asker/lang/locales/sql/templates.yaml +2 -0
  45. data/lib/asker/loader/input_loader.rb +22 -5
  46. data/lib/asker/loader/project_loader.rb +25 -24
  47. data/lib/asker/logger.rb +1 -2
  48. data/lib/asker/project.rb +5 -3
  49. data/lib/asker/skeleton.rb +25 -24
  50. metadata +47 -63
  51. data/docs/changelog/v2.1.md +0 -99
  52. data/docs/commands.md +0 -12
  53. data/docs/contributions.md +0 -18
  54. data/docs/history.md +0 -40
  55. data/docs/idea.md +0 -44
  56. data/docs/inputs/README.md +0 -39
  57. data/docs/inputs/code.md +0 -69
  58. data/docs/inputs/concepts.md +0 -142
  59. data/docs/inputs/jedi.md +0 -68
  60. data/docs/inputs/tables.md +0 -112
  61. data/docs/inputs/templates.md +0 -87
  62. data/docs/install/README.md +0 -38
  63. data/docs/install/manual.md +0 -26
  64. data/docs/install/scripts.md +0 -38
  65. data/docs/revise/asker-file.md +0 -41
  66. data/docs/revise/buenas-practicas/01-convocatoria.md +0 -30
  67. data/docs/revise/buenas-practicas/02-formulario.md +0 -35
  68. data/docs/revise/buenas-practicas/03-descripcion.md +0 -63
  69. data/docs/revise/buenas-practicas/04-resultados.md +0 -17
  70. data/docs/revise/buenas-practicas/05-reproducir.md +0 -10
  71. data/docs/revise/ejemplos/01/README.md +0 -27
  72. data/docs/revise/ejemplos/02/README.md +0 -31
  73. data/docs/revise/ejemplos/03/README.md +0 -31
  74. data/docs/revise/ejemplos/04/README.md +0 -37
  75. data/docs/revise/ejemplos/05/README.md +0 -25
  76. data/docs/revise/ejemplos/06/README.md +0 -43
  77. data/docs/revise/ejemplos/README.md +0 -11
  78. data/docs/revise/projects.md +0 -74
  79. data/lib/asker/exporter/concept_screen_exporter.rb +0 -25
  80. 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,11 @@
1
+ ---
2
+ - '[*]'
3
+ - '.'
4
+ - ','
5
+ - ';'
6
+ - '('
7
+ - ')'
8
+ - '{'
9
+ - '}'
10
+ - '['
11
+ - ']'
@@ -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,3 @@
1
+ ---
2
+ :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
3
+ :code2: '<pre><%=text1%></pre><br/><p>Elegir el número de línea donde está el primer error. Elegir 0 si no hay ningún error.</p>'
@@ -0,0 +1,2 @@
1
+ ---
2
+ - '[*]'
@@ -0,0 +1,2 @@
1
+ ---
2
+ :0: '1'
@@ -0,0 +1 @@
1
+ ---
@@ -0,0 +1,11 @@
1
+ ---
2
+ - '[*]'
3
+ - '.'
4
+ - ','
5
+ - ';'
6
+ - '('
7
+ - ')'
8
+ - '{'
9
+ - '}'
10
+ - '['
11
+ - ']'
@@ -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,3 @@
1
+ ---
2
+ :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
3
+ :code2: '<pre><%=text1%></pre><br/><p>Elegir el número de línea donde está el primer error. Elegir 0 si no hay ningún error.</p>'
@@ -0,0 +1,11 @@
1
+ ---
2
+ - '[*]'
3
+ - '.'
4
+ - ','
5
+ - ';'
6
+ - '('
7
+ - ')'
8
+ - '{'
9
+ - '}'
10
+ - '['
11
+ - ']'
@@ -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,3 @@
1
+ ---
2
+ :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
3
+ :code2: '<pre><%=text1%></pre><br/><p>Elegir el número de línea donde está el primer error. Elegir 0 si no hay ningún error.</p>'
@@ -0,0 +1,6 @@
1
+ ---
2
+ - '[*]'
3
+ - ','
4
+ - ';'
5
+ - '('
6
+ - ')'
@@ -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
+ :): '],}'
@@ -0,0 +1,2 @@
1
+ ---
2
+ :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
@@ -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
- output = { concepts: [], codes: [] }
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
- data = DirectoryLoader.load(dirname)
18
- output[:concepts] += data[:concepts]
19
- output[:codes] += data[:codes]
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
- output
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
- def self.load(args = {})
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 true
22
+ return project
19
23
  elsif args.class == String
20
24
  ProjectLoader.load_from_string(args)
21
- return true
25
+ return project
22
26
  end
23
27
 
24
28
  msg = '[ERROR] ProjectLoader:'
25
29
  msg += "Configuration params format is <#{pArgs.class}>!"
26
- project.verbose Rainbow(msg).red
30
+ Logger.verbose Rainbow(msg).red
27
31
  raise msg
28
32
  end
29
33
 
30
- def self.load_from_string(arg)
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?(arg)
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(arg) == '.haml' || File.extname(arg) == '.xml'
39
- project.set(:inputdirs, File.dirname(arg))
40
- project.set(:process_file, File.basename(arg))
41
- elsif File.extname(arg) == '.yaml'
42
- load_from_yaml(arg)
43
- elsif File.directory?(arg)
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(arg)
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
- end
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('[ERR ] ProjectLoader: Input ').red
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).write("#{msg}\n") if 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
@@ -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
- def self.copy_files_into(project_dir)
20
- # Directory and files: Ruby script, Configfile, gitignore
21
- items = [
22
- { source: 'files/example-concept.haml', target: 'example-concept.haml' }
23
- # { source: 'files/example-code.haml', target: 'example-code.haml' },
24
- ]
25
- source_basedir = File.join(File.dirname(__FILE__))
26
- items.each do |item|
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
- def self.create_dirs(*args)
47
- args.each { |arg| create_dir arg }
48
- end
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
- else
54
- puts "* File not found! => #{Rainbow(target).yellow}" unless File.exist? target
55
- begin
56
- FileUtils.cp(target, dest)
57
- puts "* Create file => #{Rainbow(dest).green}"
58
- rescue StandardError
59
- puts "* Create file ERROR => #{Rainbow(dest).red}"
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