clone 1.0.0.alpha → 1.0.0.beta

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.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/Gemfile +1 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +22 -1
  6. data/VERSION +1 -1
  7. data/bin/clone +7 -0
  8. data/clone.gemspec +4 -0
  9. data/docs/readme +16 -0
  10. data/docs/readme.txt +5 -0
  11. data/lib/clone.rb +13 -2
  12. data/lib/clone/config/config.rb +19 -0
  13. data/lib/clone/config/config.yml +22 -0
  14. data/lib/clone/config/default_config.yml +20 -0
  15. data/lib/clone/config/require.rb +3 -0
  16. data/lib/clone/config/version.rb +10 -0
  17. data/lib/clone/config/yml.rb +22 -0
  18. data/lib/clone/config/z_defaults.rb +28 -0
  19. data/lib/clone/generator/engine.rb +581 -0
  20. data/lib/clone/generator/terminal.rb +104 -0
  21. data/lib/clone/helpers/helper_methods.rb +251 -0
  22. data/lib/clone/helpers/local_methods.rb +150 -0
  23. data/lib/clone/helpers/require.rb +37 -0
  24. data/module/Marshal.4.8 +0 -0
  25. data/module/Marshal.4.8.Z +0 -0
  26. data/module/gems/commander-4.1.3/.gitignore +6 -0
  27. data/module/gems/commander-4.1.3/.travis.yml +11 -0
  28. data/module/gems/commander-4.1.3/DEVELOPMENT +15 -0
  29. data/module/gems/commander-4.1.3/Gemfile +3 -0
  30. data/module/gems/commander-4.1.3/History.rdoc +345 -0
  31. data/module/gems/commander-4.1.3/Manifest +38 -0
  32. data/module/gems/commander-4.1.3/README.rdoc +375 -0
  33. data/module/gems/commander-4.1.3/Rakefile +10 -0
  34. data/module/gems/commander-4.1.3/bin/commander +55 -0
  35. data/module/gems/commander-4.1.3/commander.gemspec +26 -0
  36. data/module/gems/commander-4.1.3/lib/commander.rb +32 -0
  37. data/module/gems/commander-4.1.3/lib/commander/blank.rb +8 -0
  38. data/module/gems/commander-4.1.3/lib/commander/command.rb +213 -0
  39. data/module/gems/commander-4.1.3/lib/commander/core_ext.rb +3 -0
  40. data/module/gems/commander-4.1.3/lib/commander/core_ext/array.rb +26 -0
  41. data/module/gems/commander-4.1.3/lib/commander/core_ext/object.rb +11 -0
  42. data/module/gems/commander-4.1.3/lib/commander/delegates.rb +13 -0
  43. data/module/gems/commander-4.1.3/lib/commander/help_formatters.rb +8 -0
  44. data/module/gems/commander-4.1.3/lib/commander/help_formatters/base.rb +18 -0
  45. data/module/gems/commander-4.1.3/lib/commander/help_formatters/terminal.rb +20 -0
  46. data/module/gems/commander-4.1.3/lib/commander/help_formatters/terminal/command_help.erb +35 -0
  47. data/module/gems/commander-4.1.3/lib/commander/help_formatters/terminal/help.erb +36 -0
  48. data/module/gems/commander-4.1.3/lib/commander/help_formatters/terminal_compact.rb +12 -0
  49. data/module/gems/commander-4.1.3/lib/commander/help_formatters/terminal_compact/command_help.erb +27 -0
  50. data/module/gems/commander-4.1.3/lib/commander/help_formatters/terminal_compact/help.erb +29 -0
  51. data/module/gems/commander-4.1.3/lib/commander/import.rb +10 -0
  52. data/module/gems/commander-4.1.3/lib/commander/platform.rb +8 -0
  53. data/module/gems/commander-4.1.3/lib/commander/runner.rb +411 -0
  54. data/module/gems/commander-4.1.3/lib/commander/user_interaction.rb +521 -0
  55. data/module/gems/commander-4.1.3/lib/commander/version.rb +3 -0
  56. data/module/gems/commander-4.1.3/spec/command_spec.rb +157 -0
  57. data/module/gems/commander-4.1.3/spec/core_ext/array_spec.rb +20 -0
  58. data/module/gems/commander-4.1.3/spec/core_ext/object_spec.rb +21 -0
  59. data/module/gems/commander-4.1.3/spec/help_formatters/terminal_spec.rb +67 -0
  60. data/module/gems/commander-4.1.3/spec/runner_spec.rb +526 -0
  61. data/module/gems/commander-4.1.3/spec/spec_helper.rb +59 -0
  62. data/module/gems/commander-4.1.3/spec/ui_spec.rb +30 -0
  63. data/module/gems/hello.rb +1 -0
  64. data/module/gems/highline-1.6.19/.gitignore +2 -0
  65. data/module/gems/highline-1.6.19/AUTHORS +3 -0
  66. data/module/gems/highline-1.6.19/CHANGELOG +346 -0
  67. data/module/gems/highline-1.6.19/COPYING +340 -0
  68. data/module/gems/highline-1.6.19/INSTALL +55 -0
  69. data/module/gems/highline-1.6.19/LICENSE +7 -0
  70. data/module/gems/highline-1.6.19/README.rdoc +63 -0
  71. data/module/gems/highline-1.6.19/Rakefile +50 -0
  72. data/module/gems/highline-1.6.19/TODO +6 -0
  73. data/module/gems/highline-1.6.19/examples/ansi_colors.rb +38 -0
  74. data/module/gems/highline-1.6.19/examples/asking_for_arrays.rb +18 -0
  75. data/module/gems/highline-1.6.19/examples/basic_usage.rb +75 -0
  76. data/module/gems/highline-1.6.19/examples/color_scheme.rb +32 -0
  77. data/module/gems/highline-1.6.19/examples/get_character.rb +12 -0
  78. data/module/gems/highline-1.6.19/examples/limit.rb +12 -0
  79. data/module/gems/highline-1.6.19/examples/menus.rb +65 -0
  80. data/module/gems/highline-1.6.19/examples/overwrite.rb +19 -0
  81. data/module/gems/highline-1.6.19/examples/page_and_wrap.rb +322 -0
  82. data/module/gems/highline-1.6.19/examples/password.rb +7 -0
  83. data/module/gems/highline-1.6.19/examples/repeat_entry.rb +21 -0
  84. data/module/gems/highline-1.6.19/examples/trapping_eof.rb +22 -0
  85. data/module/gems/highline-1.6.19/examples/using_readline.rb +17 -0
  86. data/module/gems/highline-1.6.19/highline.gemspec +37 -0
  87. data/module/gems/highline-1.6.19/lib/highline.rb +1012 -0
  88. data/module/gems/highline-1.6.19/lib/highline/color_scheme.rb +134 -0
  89. data/module/gems/highline-1.6.19/lib/highline/compatibility.rb +16 -0
  90. data/module/gems/highline-1.6.19/lib/highline/import.rb +41 -0
  91. data/module/gems/highline-1.6.19/lib/highline/menu.rb +398 -0
  92. data/module/gems/highline-1.6.19/lib/highline/question.rb +475 -0
  93. data/module/gems/highline-1.6.19/lib/highline/simulate.rb +48 -0
  94. data/module/gems/highline-1.6.19/lib/highline/string_extensions.rb +131 -0
  95. data/module/gems/highline-1.6.19/lib/highline/style.rb +181 -0
  96. data/module/gems/highline-1.6.19/lib/highline/system_extensions.rb +222 -0
  97. data/module/gems/highline-1.6.19/setup.rb +1360 -0
  98. data/module/gems/highline-1.6.19/site/.cvsignore +1 -0
  99. data/module/gems/highline-1.6.19/site/highline.css +65 -0
  100. data/module/gems/highline-1.6.19/site/images/logo.png +0 -0
  101. data/module/gems/highline-1.6.19/site/index.html +58 -0
  102. data/module/gems/highline-1.6.19/test/string_methods.rb +32 -0
  103. data/module/gems/highline-1.6.19/test/tc_color_scheme.rb +96 -0
  104. data/module/gems/highline-1.6.19/test/tc_highline.rb +1128 -0
  105. data/module/gems/highline-1.6.19/test/tc_import.rb +52 -0
  106. data/module/gems/highline-1.6.19/test/tc_menu.rb +439 -0
  107. data/module/gems/highline-1.6.19/test/tc_string_extension.rb +20 -0
  108. data/module/gems/highline-1.6.19/test/tc_string_highline.rb +38 -0
  109. data/module/gems/highline-1.6.19/test/tc_style.rb +567 -0
  110. data/module/gems/highline-1.6.19/test/ts_all.rb +16 -0
  111. data/module/latest_specs.4.8 +0 -0
  112. data/module/latest_specs.4.8.gz +0 -0
  113. data/module/prerelease_specs.4.8 +0 -0
  114. data/module/prerelease_specs.4.8.gz +0 -0
  115. data/module/specs.4.8 +0 -0
  116. data/module/specs.4.8.gz +0 -0
  117. data/samples/blather/restlike/Gemfile +4 -0
  118. data/samples/blather/restlike/cmd.yml +1 -0
  119. data/samples/blather/restlike/lib/blather.rb +9 -0
  120. data/samples/blather/restlike/lib/blather/dsl/api.rb +78 -0
  121. data/samples/blather/restlike/lib/blather/dsl/call.rb +13 -0
  122. data/samples/blather/restlike/lib/blather/dsl/client.rb +58 -0
  123. data/samples/blather/restlike/lib/blather/dsl/config.rb +11 -0
  124. data/samples/blather/restlike/lib/blather/dsl/extraDSL.rb +163 -0
  125. data/samples/blather/restlike/lib/blather/meta/require.rb +8 -0
  126. data/samples/blather/restlike/lib/blather/meta/xmpp.yml +5 -0
  127. data/samples/blather/restlike/lib/blather/vendors/xmpp_default.rb +27 -0
  128. data/samples/blather/restlike/readme +2 -0
  129. data/samples/grape/init/Gemfile +2 -0
  130. data/samples/grape/init/cmd.yml +3 -0
  131. data/samples/grape/init/config.ru +2 -0
  132. data/samples/grape/init/docs/grape/documentation.txt +939 -0
  133. data/samples/grape/init/docs/grape/generate_rest_routes.rb +37 -0
  134. data/samples/grape/init/docs/grape/ls_routes.rb +31 -0
  135. data/samples/grape/init/lib/grape.rb +4 -0
  136. data/samples/grape/init/lib/grape/meta/subclasses.rb +20 -0
  137. data/samples/grape/init/lib/grape/xpath/app.rb +30 -0
  138. data/samples/grape/init/lib/grape/xpath/ruotes.rb +6 -0
  139. data/samples/grape/init/readme +1 -0
  140. data/samples/grape/readme +29 -0
  141. data/samples/grape/vendor/lib/grape/vendors/v1/rest.rb +57 -0
  142. data/samples/mongoid/cmd.yml +1 -0
  143. data/samples/mongoid/init/Gemfile +3 -0
  144. data/samples/mongoid/init/cmd.yml +2 -0
  145. data/samples/mongoid/init/docs/mongoid/ModelsRelations.rb +11 -0
  146. data/samples/mongoid/init/docs/mongoid/documents.xls +0 -0
  147. data/samples/mongoid/init/docs/mongoid/generate_modelsToDocs.rb +25 -0
  148. data/samples/mongoid/init/docs/mongoid/modelsToDocs.rb +25 -0
  149. data/samples/mongoid/init/docs/mongoid/relations.txt +1354 -0
  150. data/samples/mongoid/init/lib/mongoid.rb +44 -0
  151. data/samples/mongoid/init/lib/mongoid/dsl/extraDSL_CRUD.rb +446 -0
  152. data/samples/mongoid/init/lib/mongoid/dsl/extraDSL_MP.rb +517 -0
  153. data/samples/mongoid/init/lib/mongoid/dsl/init.rb +37 -0
  154. data/samples/mongoid/init/lib/mongoid/dsl/params.rb +67 -0
  155. data/samples/mongoid/init/lib/mongoid/meta/banned.rb +147 -0
  156. data/samples/mongoid/init/lib/mongoid/meta/control.yml +13 -0
  157. data/samples/mongoid/init/lib/mongoid/meta/mongoid.yml +6 -0
  158. data/samples/mongoid/init/lib/mongoid/meta/mpatch.rb +14 -0
  159. data/samples/mongoid/model/lib/mongoid/models/model.rb +28 -0
  160. data/samples/mongoid/readme +33 -0
  161. data/samples/rack/init/Gemfile +10 -0
  162. data/samples/rack/init/cmd.yml +2 -0
  163. data/samples/rack/init/config.ru +1 -0
  164. data/samples/rack/init/docs/rack/rake introducing.txt +60 -0
  165. data/samples/rack/init/docs/rack/webservers/Thin +43 -0
  166. data/samples/rack/init/docs/rack/webservers/ebb +72 -0
  167. data/samples/rack/init/docs/rack/webservers/fcgi +103 -0
  168. data/samples/rack/init/docs/rack/webservers/mongrel +74 -0
  169. data/samples/rack/init/docs/rack/webservers/passenger +37 -0
  170. data/samples/rack/init/docs/rack/webservers/scgi +188 -0
  171. data/samples/rack/init/lib/rack.rb +1 -0
  172. data/samples/rack/init/lib/rack/meta/webserver/thin.rb +45 -0
  173. data/samples/rack/init/lib/rack/meta/webserver/thin.yml +6 -0
  174. data/samples/rack/init/server.rb +0 -0
  175. data/samples/rack/readme +13 -0
  176. data/samples/rest_client/init/Gemfile +5 -0
  177. data/samples/rest_client/init/boot.rb +2 -0
  178. data/samples/rest_client/init/cmd.yml +1 -0
  179. data/samples/rest_client/init/config/rest_client/defaults.rb +16 -0
  180. data/samples/rest_client/init/docs/rest_client/simple overlook +251 -0
  181. data/samples/rest_client/init/test/rest_client/rest_dsl.rb +5 -0
  182. data/samples/rest_client/readme +7 -0
  183. data/samples/scripts/lines_counter/lines_number.rb +32 -0
  184. data/samples/scripts/lines_counter/readme +5 -0
  185. data/samples/scripts/readme +1 -0
  186. metadata +197 -7
  187. data/lib/clone/cms.rb +0 -56
  188. data/lib/clone/ext.rb +0 -77
  189. data/sample/test.rb +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 44123a077d549691f3b5b0a72609f1bcf70200a9
4
- data.tar.gz: ef2edc76b044e8cb0425a598d75e8e8e6bddfa73
3
+ metadata.gz: 5f1bf7364749820489fcb871623e253dcf406190
4
+ data.tar.gz: dda9b9b6d4a9c09673bd47c4fca0db7e54c92ccc
5
5
  SHA512:
6
- metadata.gz: 8f9730bdca8b7925b429f52315c93ace57f6aa688c25a5739cd43c39041477a6478b2af8d9f163c2e58821baf0f353589f10884a9feab6ed489af224187f0d47
7
- data.tar.gz: 31575f5cde05f017b46fbecc54ea9c140c113778f4936495653d06af06192fcb48f6f4ec93fd62c2505824ad9665fafb309f7faf70de5f698c5d4b1dd021c24c
6
+ metadata.gz: cd087415c29cb49867504199a7303d762bbe6777d62372114f99db6294c19cbe0918910e3064322e778d0d46467baf15b48ea8a05f4474cceba0877838df1be2
7
+ data.tar.gz: 8146a894a19ee4b52c35b2c0c93dfcae80bb629f1d416d8c8c079ae6e952c206c0cf6c3d17cf5dae94a72efcd09126842247cc83ef7b06ec267fc0314763ed73
data/.gitignore CHANGED
@@ -34,4 +34,5 @@ build/
34
34
  .rvmrc
35
35
 
36
36
  Gemfile.lock
37
- /pkg/
37
+ /pkg/
38
+ Gemfile.lock
data/Gemfile CHANGED
@@ -1,2 +1,3 @@
1
1
  source :rubygems
2
2
  gemspec
3
+
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Adam Luzsi
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,4 +1,25 @@
1
- clone
1
+ Clone
2
2
  =====
3
3
 
4
4
  File system based sample cloner for projects
5
+ The main logic is to make the a simple to use,
6
+ terminal based sample generator.
7
+
8
+ It's in the early stage at this point, but the goals:
9
+
10
+ * generate samples from sample collection
11
+ * provide terminal helps for "navigating" between the samples
12
+ * provide functions for
13
+ * generate samples from folders
14
+ * helpers for modify samples
15
+ * clone function for random folders and helper to replace Module names
16
+
17
+ To install this app type
18
+
19
+ $ gem install clone
20
+
21
+ To get the functions type this to the terminal
22
+
23
+ $ clone --help
24
+
25
+ All help is welcomed
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0.alpha
1
+ 1.0.0.beta
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ #encoding: UTF-8
3
+ module Clone
4
+ GCMD ||= {state:true}
5
+ end
6
+
7
+ require 'clone'
@@ -9,6 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.description = %q{ File system based sample cloner. You can build new projects with it, or merge,reuse parts from one or other. }
10
10
  spec.summary = %q{ Tool making projects from samples and vice versa }
11
11
 
12
+ spec.homepage = "https://github.com/adamluzsi/clone"
13
+
12
14
  spec.files = `git ls-files`.split($/)
13
15
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
14
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
@@ -17,4 +19,6 @@ Gem::Specification.new do |spec|
17
19
  spec.add_development_dependency "bundler"
18
20
  spec.add_development_dependency "rake"
19
21
 
22
+ spec.add_dependency "commander"
23
+
20
24
  end
@@ -0,0 +1,16 @@
1
+ A programot ruby kornyezet elleneben csak siman (terminalbol)
2
+ "rake install"
3
+ paranccsal telepitjuk is az alkalmazast
4
+
5
+ innentol kezdve akar hol vagyunk (terminal) a
6
+ "gen --help" vagy "gen help" nevu parancscsal megtudhatjuk az osszes eddig implementalt mintat es dokumentaciot
7
+ egy modul inicializalasa seged dokumentaciokat is letrehoz a tanulasahoz
8
+
9
+ A "generate" nevu parancsot mindig a project konyvtaranak gyokerebol adjuk le!
10
+ pl.:
11
+
12
+ mkdir my_project
13
+ cd my_project
14
+ gen generate **** *** ***
15
+
16
+ s a generator elvegzi a dolgot
@@ -0,0 +1,5 @@
1
+ Sample folder Structure
2
+ ### Folder structure:
3
+ ## samples /main folder
4
+ # Category /grape,btm,ruote
5
+ # Command /btm-participant btm-participant_js
@@ -1,3 +1,14 @@
1
1
  module Clone;end
2
- # require 'clone/ext'
3
- # require 'clone/cms'
2
+
3
+ require 'loader'
4
+
5
+ ### Apply monkey patch
6
+ require_relative_directory_r File.join "clone","helpers"
7
+
8
+ ### Directory loader
9
+ require_relative_directory_r File.join "clone","config"
10
+
11
+ if defined? Clone::GCMD && Clone::GCMD[:state] == true
12
+ require File.join "clone","generator","engine"
13
+ require File.join "clone","generator","terminal"
14
+ end
@@ -0,0 +1,19 @@
1
+ module Clone
2
+
3
+ ### Create Singleton for config params
4
+ class SampleConfig
5
+ class << self
6
+ attr_accessor :module_name,
7
+ :class_name,
8
+ :samples_path,
9
+ :structured,
10
+ :yml_file_path,
11
+ :yml_data,
12
+ :cmd_file_name,
13
+ :readme_file_names,
14
+ :special_file_names
15
+ end
16
+ end
17
+
18
+ end
19
+
@@ -0,0 +1,22 @@
1
+ structured: true
2
+ module_name: MODULE
3
+ class_name: CLASS
4
+ resource_name: RESOURCE
5
+ cmd_file_name: cmd.yml
6
+ readme_file_names:
7
+ - readme
8
+ - readme.txt
9
+ - ReadMe
10
+ - ReadMe.txt
11
+ - read_me
12
+ - read_me.txt
13
+ special_file_names:
14
+ - server.rb
15
+ - server
16
+ - boot.rb
17
+ - boot
18
+ - rakefile
19
+ - Rakefile
20
+ - gemfile
21
+ - Gemfile
22
+ - config.ru
@@ -0,0 +1,20 @@
1
+ structured: true
2
+ module_name: MODULE
3
+ class_name: CLASS
4
+ resource_name: RESOURCE
5
+ cmd_file_name: cmd.yml
6
+ readme_file_names:
7
+ - readme
8
+ - readme.txt
9
+ - ReadMe
10
+ - ReadMe.txt
11
+ - read_me
12
+ - read_me.txt
13
+ special_file_names:
14
+ - boot.rb
15
+ - boot
16
+ - rakefile
17
+ - Rakefile
18
+ - gemfile
19
+ - Gemfile
20
+ - config.ru
@@ -0,0 +1,3 @@
1
+ #### JS execute
2
+ #require "execjs"
3
+ #require "ruote"
@@ -0,0 +1,10 @@
1
+ module Clone
2
+ class VERSION
3
+ class << self
4
+ attr_accessor :show
5
+
6
+ end
7
+ VERSION.show= "0.0.3"
8
+ end
9
+ #VERSION= "0.0.1"
10
+ end
@@ -0,0 +1,22 @@
1
+ module Clone
2
+ require 'yaml'
3
+
4
+ ### YML control
5
+ begin
6
+ class Yaml
7
+ class << self
8
+
9
+ def set(config_hash)
10
+ SampleConfig.yml_data = config_hash
11
+ File.open(SampleConfig.yml_file_path, 'w+') {|f| f.write(SampleConfig.yml_data.to_yaml) }
12
+ end
13
+
14
+ def load(file_path=SampleConfig.yml_file_path)
15
+ SampleConfig.yml_data = YAML.load(File.open(file_path))
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+
22
+ end
@@ -0,0 +1,28 @@
1
+ module Clone
2
+
3
+ ### Set Defaults
4
+ begin
5
+
6
+ ### Set basic paths
7
+ begin
8
+ SampleConfig.samples_path = File.expand_path(File.join(File.dirname(__FILE__),"..","..","..","samples"))
9
+ SampleConfig.yml_file_path = File.expand_path(File.join(File.dirname(__FILE__),"config.yml"))
10
+ end
11
+
12
+ ### Yml data
13
+ begin
14
+ Yaml.load
15
+ end
16
+
17
+ ### Config params
18
+ begin
19
+ SampleConfig.class_name = SampleConfig.yml_data['class_name']
20
+ SampleConfig.module_name = SampleConfig.yml_data['module_name']
21
+ SampleConfig.cmd_file_name = SampleConfig.yml_data['cmd_file_name']
22
+ SampleConfig.readme_file_names = SampleConfig.yml_data['readme_file_names']
23
+ SampleConfig.special_file_names = SampleConfig.yml_data['special_file_names']
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,581 @@
1
+ module Clone
2
+ class << self
3
+ ### Generator method parts
4
+ begin
5
+
6
+ ### Get exception files list #Return Array
7
+ def get_exceptions
8
+
9
+ return_array= Array.new
10
+ return_array= SampleConfig.readme_file_names
11
+ return_array.push SampleConfig.cmd_file_name
12
+
13
+ return return_array
14
+ end
15
+
16
+ ### Get Directory list #Return Hash name:path
17
+ def get_directories(path)
18
+ #### Get Directories list
19
+ begin
20
+
21
+ ### Check that does the path is absolute or not
22
+ if path != File.expand_path(path)
23
+ path = File.expand_path(path)
24
+ end
25
+
26
+ ### Generate directory lists with absolute paths
27
+ directories = Hash.new
28
+ Dir[File.join( path, '**')].uniq.each do |file_path|
29
+ if File.directory? file_path
30
+ directories[file_path.split(File::SEPARATOR).last.to_sym]= file_path
31
+ end
32
+ end
33
+
34
+ return directories
35
+ end
36
+ end
37
+
38
+ ### Get files from path #Return Hash name:path
39
+ def get_files(path)
40
+
41
+ ### Pre def. variables
42
+ begin
43
+ files = Hash.new
44
+ end
45
+
46
+ ### Validation
47
+ begin
48
+ ### Check that does the path is absolute or not
49
+ if path != File.expand_path(path)
50
+ path = File.expand_path(path)
51
+ end
52
+ end
53
+
54
+ ### Get Files list
55
+ begin
56
+ Dir[File.join(path,'**','*')].uniq.each do |file_path|
57
+ if !File.directory? file_path
58
+ files[file_path.split(File::SEPARATOR).last.to_sym]= file_path
59
+ end
60
+ end
61
+ end
62
+
63
+ return files
64
+ end
65
+
66
+ ### Show Category list #Return: Hash
67
+ def get_categories_hash(root=SampleConfig.samples_path)
68
+ begin
69
+ get_directories root
70
+ rescue Errno::ENOENT
71
+ ### nothing to do! YAY...
72
+ return nil
73
+ end
74
+ end
75
+
76
+ ### Show Category participants name in a array
77
+ def show_categories(is_array=false,root=SampleConfig.samples_path)
78
+ begin
79
+
80
+ return_array = Array.new
81
+ get_categories_hash(root).each do |one_file_name,one_file_path|
82
+ return_array.push one_file_name
83
+ end
84
+
85
+ if is_array
86
+ return return_array
87
+ else
88
+ return return_array.join(', ')
89
+ end
90
+
91
+
92
+ rescue Errno::ENOENT
93
+ ### nothing to do! YAY...
94
+ return nil
95
+ end
96
+ end
97
+
98
+ ### Show Category commands
99
+ def get_commands_hash(category_name,root=SampleConfig.samples_path)
100
+
101
+ get_categories_hash(root).each do |file_name,file_path|
102
+ if file_name.to_s.downcase == category_name.to_s.downcase
103
+ return get_directories file_path
104
+ end
105
+ end
106
+
107
+ end
108
+
109
+ ### Get command structure by file_data_array:file_path
110
+ def get_command_structure(category_name,command_name)
111
+
112
+ files_hash = Hash.new
113
+ get_commands_hash(category_name).each do |directory_name,directory_path|
114
+ if directory_name.to_s.downcase == command_name.to_s.downcase
115
+
116
+ get_files(directory_path).each do |file_name,file_path|
117
+ tmp_string_array = Array.new
118
+
119
+ ## Read data out from the file
120
+ File.open(file_path).each do |one_line|
121
+ tmp_string_array.push one_line
122
+ end
123
+
124
+ ### Make hash with the data String:Path
125
+ ## generate dynamic path cutter length
126
+ begin
127
+
128
+ cut_from = SampleConfig.samples_path.to_s.length+1+\
129
+ category_name.to_s.length+1+\
130
+ command_name.to_s.length+1
131
+
132
+ cut_to = file_path.to_s.length-1
133
+
134
+ end
135
+
136
+ ## Do the hash populate
137
+ files_hash[tmp_string_array]=file_path[cut_from..cut_to]
138
+
139
+ end
140
+
141
+ end
142
+ end
143
+
144
+ return files_hash
145
+
146
+ end
147
+
148
+ ### Show Category commands
149
+ def show_commands(category_name=nil,is_array=false,root=SampleConfig.samples_path)
150
+
151
+ sum_array = Array.new
152
+ merge_hash = Hash.new
153
+ get_categories_hash(root).each do |category,path_to_category|
154
+
155
+ tmp_array=Array.new
156
+ if category_name.nil?
157
+ get_directories(path_to_category).each do |file_name,file_path|
158
+ tmp_array.push file_name
159
+ end
160
+ else
161
+ if file_name.to_s.downcase == category_name.to_s.downcase
162
+ get_directories(path_to_category).each do |file_name,file_path|
163
+ tmp_array.push file_name
164
+ end
165
+ end
166
+ end
167
+ merge_hash[category]=tmp_array
168
+
169
+ tmp_array.each do |one_element_of_tmp_array|
170
+ sum_array.push one_element_of_tmp_array
171
+ end
172
+
173
+ end
174
+
175
+ ### Return the value
176
+ if is_array
177
+ return sum_array
178
+ else
179
+ return_string = String.new
180
+ merge_hash.each do |category,elements|
181
+ return_string+= "In "+category.to_s+ ": " + elements.inspect + ", "
182
+ end
183
+ return_string[return_string.length-2]=String.new
184
+
185
+ return return_string
186
+ end
187
+ end
188
+
189
+ ### Show readmes from categories
190
+ def show_readmes(*args)
191
+ arg=Hash[*args]
192
+
193
+ ### Set default variables
194
+ begin
195
+
196
+ arg[:root] ||= SampleConfig.samples_path
197
+ arg[:readme] ||= SampleConfig.readme_file_names
198
+ ready_paths = Array.new
199
+ tmp_array = Array.new
200
+
201
+ ## Make readme-s united
202
+ if arg[:readme].class != Array
203
+ arg[:readme] = [arg[:readme]]
204
+ end
205
+
206
+ end
207
+
208
+ ### Start searching for readme
209
+ begin
210
+ get_categories_hash(arg[:root]).each do |category_name,category_path|
211
+
212
+ ### Get category readme list
213
+ begin
214
+ tmp_array.push "\n"
215
+ Dir[File.join(category_path,'*')].uniq.each do |category_file_path|
216
+ #if !File.directory? category_file_path
217
+ if arg[:readme].include? category_file_path.split(File::SEPARATOR).last
218
+ tmp_array.push "\t\t#{category_name.upcase}:\n"
219
+ File.open(category_file_path).each do |one_line|
220
+ tmp_array.push "\t\t\t#{one_line}"
221
+ end
222
+ tmp_array.push "\n"
223
+ ready_paths.push category_file_path
224
+ end
225
+ #end
226
+ end
227
+ end
228
+
229
+ ### Get category commands readme list
230
+ begin
231
+ Dir[File.join(category_path,'**','*')].uniq.each do |category_file_path|
232
+ if !File.directory? category_file_path
233
+ if !ready_paths.include? category_file_path
234
+ if arg[:readme].include? category_file_path.split(File::SEPARATOR).last
235
+ tmp_array.push "\n"
236
+ recursive_path= category_file_path[(category_path.length+1)..(category_file_path.length-1)]
237
+ tmp_array.push "\t\t#{category_name.upcase}/#{recursive_path.split(File::SEPARATOR)[0]}:\n"
238
+ File.open(category_file_path).each do |one_line|
239
+ tmp_array.push "\t\t\t#{one_line}"
240
+ end
241
+ tmp_array.push "\n"
242
+ ready_paths.push category_file_path
243
+ end
244
+ end
245
+ end
246
+ end
247
+ end
248
+
249
+ end
250
+ end
251
+
252
+ return tmp_array.join()
253
+ end
254
+
255
+ ### this will only update bootfile isntead deleting the data
256
+ def update_special_file(create_path,input_string_array)
257
+
258
+ ### default variables
259
+ begin
260
+ data_string = String.new
261
+ file_mod = "w"
262
+ end
263
+
264
+ ### Update!
265
+ begin
266
+
267
+ ### File write prepare
268
+ begin
269
+
270
+ if !File.exist?(create_path)
271
+ File.create :path => create_path,
272
+ :data => String.new,
273
+ :file_mod => file_mod
274
+ end
275
+
276
+ begin
277
+
278
+ merge_code = Array.new
279
+ source_code = String.new
280
+
281
+ ### Create the old code block!
282
+ File.open(create_path).each do |one_line_of_source_code|
283
+ if one_line_of_source_code.gsub(' ','') != "\n"
284
+ merge_code.push one_line_of_source_code
285
+ source_code += one_line_of_source_code
286
+ end
287
+ end
288
+
289
+ ### add a seperator line to the code
290
+ begin
291
+ merge_code.push "\n"
292
+ end
293
+
294
+ ### Adding new lines
295
+ input_string_array.each do |target_line|
296
+ if !source_code.include? target_line
297
+ #puts target_line
298
+ merge_code.push target_line
299
+ end
300
+ end
301
+
302
+ ### sub complete file data
303
+ data_string = merge_code.join
304
+ end
305
+
306
+ end
307
+
308
+ ### File Write
309
+ begin
310
+
311
+ ### prepeare data
312
+ begin
313
+ new_data= "\n"
314
+ new_data+= data_string
315
+ end
316
+
317
+ File.open(create_path,file_mod) do |file|
318
+ file.write new_data
319
+ end
320
+
321
+
322
+
323
+ #File.create :path => create_path,
324
+ # :data => data_string,
325
+ # :file_mod => file_mod
326
+ end
327
+
328
+ end
329
+
330
+ end
331
+
332
+ ### Clone a command from the sample collection
333
+ def clone_sample(*args)
334
+ arg=Hash[*args]
335
+ begin
336
+
337
+ ### 'Exception' throw
338
+ begin
339
+
340
+ ### Check the two important argument
341
+ if arg[:category].nil? || arg[:command].nil?
342
+ if arg[:command].nil?
343
+ puts "missing chosen command"
344
+ end
345
+ if arg[:category].nil?
346
+ puts "missing chosen category"
347
+ end
348
+
349
+ return nil
350
+ end
351
+
352
+ end
353
+
354
+ ### Generate Defaults
355
+ begin
356
+
357
+ ### method variables
358
+ begin
359
+
360
+ ##structured
361
+ begin
362
+ if arg[:structured] == "true"
363
+ arg[:structured]= true
364
+ elsif arg[:structured] == "false"
365
+ arg[:structured]= false
366
+ else
367
+ arg[:structured]= nil
368
+ end
369
+ end
370
+
371
+ arg[:file_name] ||= String.new
372
+ arg[:structured] ||= SampleConfig.yml_data['structured']
373
+ arg[:root] ||= SampleConfig.samples_path
374
+ #arg[:command] ||= "participant"
375
+ #arg[:category] ||= "general"
376
+ #arg[:module] ||= nil
377
+ #arg[:class] ||= nil
378
+ #arg[:file_name] ||= nil
379
+
380
+ end
381
+
382
+ ### local variables
383
+ begin
384
+
385
+ samples = Hash.new
386
+
387
+ end
388
+
389
+ end
390
+
391
+ ### Create samples
392
+ begin
393
+
394
+ ### Generate sample from structure #=> String:short_path
395
+ begin
396
+
397
+ ### Generate Structure
398
+ get_command_structure(arg[:category],arg[:command]).each do |data_array,short_path|
399
+
400
+ ### Some dynamical value set
401
+ begin
402
+
403
+ ### Generate Auto Module name
404
+ if arg[:module].nil? || arg[:file_name]==String.new
405
+ module_name = short_path.split(File::SEPARATOR).pinch.last.split('.')[0].downcase.capitalize
406
+ else
407
+ module_name = arg[:module]
408
+ end
409
+
410
+ ### Generate Auto Class name
411
+ if arg[:file_name].nil? || arg[:file_name]==String.new
412
+ class_name = short_path.split(File::SEPARATOR).last.split('.')[0].downcase.capitalize
413
+ else
414
+ class_name = arg[:file_name].downcase.capitalize
415
+ end
416
+
417
+
418
+ ### Generate Auto Resource name
419
+ if arg[:file_name].nil? || arg[:file_name]==String.new
420
+ resource_name = short_path.split(File::SEPARATOR).last.split('.')[0].downcase
421
+ else
422
+ resource_name = arg[:file_name].downcase
423
+ end
424
+
425
+ end
426
+
427
+ ### do the data_array formation/replace
428
+ begin
429
+ begin
430
+ linenmb=0
431
+ data_array.each do |one_line|
432
+ data_array[linenmb]= data_array[linenmb].gsub(
433
+ SampleConfig.yml_data['module_name'],module_name
434
+ ).gsub(
435
+ SampleConfig.yml_data['class_name'],class_name
436
+ ).gsub(
437
+ SampleConfig.yml_data['resource_name'],resource_name
438
+ )
439
+ linenmb+=1
440
+ end
441
+ rescue ArgumentError
442
+ end
443
+
444
+ end
445
+
446
+ ### Populate_hash
447
+ begin
448
+
449
+ samples[data_array]= File.expand_path short_path
450
+
451
+ end
452
+
453
+ end
454
+
455
+ end
456
+
457
+ ### Create files on filesystem
458
+ begin
459
+
460
+ file_created = 0
461
+ samples.each do |final_string_array,short_path|
462
+
463
+ extension = String.new
464
+ if short_path.include? '.'
465
+ extension= '.'+short_path.split('.').last
466
+ end
467
+
468
+ begin
469
+ begin
470
+ if arg[:file_name] != String.new && !arg[:file_name].nil?
471
+ arg[:file_name]= "_"+arg[:file_name]
472
+ end
473
+ end
474
+ file_path= short_path.split(File::SEPARATOR).pinch.join(File::SEPARATOR)
475
+ file_name= (short_path.split(File::SEPARATOR).last.split('.')[0]+arg[:file_name])+extension
476
+ end
477
+
478
+ if arg[:structured]
479
+ create_path = File.join(
480
+ file_path,file_name
481
+ )
482
+ else
483
+ create_path = File.join(
484
+ short_path.split(File::SEPARATOR).last.split('.')[0]+
485
+ arg[:file_name]+file_created.to_s+extension
486
+ )
487
+ end
488
+
489
+ ### Create the File!
490
+ if SampleConfig.special_file_names.include?(create_path.split(File::SEPARATOR).last)
491
+ update_special_file(create_path,final_string_array)
492
+ else
493
+ if !get_exceptions.include? short_path.split(File::SEPARATOR).last
494
+ if File.exist?(create_path)
495
+ puts "File already exist at #{create_path}" if $DEBUG
496
+ else
497
+ File.create :path => create_path,
498
+ :data => final_string_array.join
499
+ end
500
+ end
501
+ end
502
+ file_created+=1
503
+ end
504
+
505
+ end
506
+
507
+ end
508
+
509
+ end
510
+ end
511
+
512
+ ### after part for command launch
513
+ def extension_command(*args)
514
+ arg=Hash[*args]
515
+ begin
516
+ get_command_structure(arg[:category],arg[:command]).each do |file_string,short_path|
517
+
518
+ file_path = File.join(SampleConfig.samples_path,arg[:category],arg[:command],short_path)
519
+ file_name = file_path.split(File::SEPARATOR).last
520
+ if file_name == SampleConfig.cmd_file_name
521
+ (YAML.load(File.open(file_path))).each do |category,command|
522
+
523
+ clone_sample :category => category.to_s,
524
+ :command => command.to_s,
525
+ :file_name => arg[:file_name],
526
+ :structured => arg[:structured]
527
+
528
+ end
529
+ end
530
+ end
531
+ end
532
+ end
533
+
534
+ ### Prev part for command launch
535
+ def command_for_sample_generate(*args)
536
+ arg=Hash[*args]
537
+
538
+ ### variables
539
+ begin
540
+ #:category
541
+ #:command
542
+ #:structured
543
+ #:file_name
544
+ end
545
+
546
+ ## validation and job
547
+ begin
548
+
549
+ extension_command :category => arg[:category],
550
+ :command => arg[:command],
551
+ :file_name => arg[:file_name],
552
+ :structured => arg[:structured]
553
+
554
+ clone_sample :category => arg[:category],
555
+ :command => arg[:command],
556
+ :file_name => arg[:file_name],
557
+ :structured => arg[:structured]
558
+
559
+ end
560
+
561
+ end
562
+
563
+ end
564
+ end
565
+ end
566
+
567
+
568
+
569
+ =begin
570
+ implementations:
571
+
572
+ #rescue Exception
573
+
574
+ #require 'fileutils'
575
+ #
576
+ ##def copy_with_path(src, dst)
577
+ # FileUtils.mkdir_p(File.dirname())
578
+ # FileUtils.cp(src, dst)
579
+ ##end
580
+
581
+ =end