falkorlib 0.6.19 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +88 -0
  4. data/.travis.yml +56 -4
  5. data/Gemfile +4 -4
  6. data/Gemfile.lock +55 -27
  7. data/Rakefile +12 -8
  8. data/Vagrantfile +68 -0
  9. data/completion/_falkor +55 -7
  10. data/falkorlib.gemspec +14 -12
  11. data/lib/falkorlib.rb +22 -21
  12. data/lib/falkorlib/bootstrap.rb +5 -1
  13. data/lib/falkorlib/bootstrap/base.rb +385 -693
  14. data/lib/falkorlib/bootstrap/git.rb +137 -0
  15. data/lib/falkorlib/bootstrap/latex.rb +186 -0
  16. data/lib/falkorlib/bootstrap/link.rb +108 -96
  17. data/lib/falkorlib/bootstrap/ruby.rb +102 -0
  18. data/lib/falkorlib/cli.rb +82 -26
  19. data/lib/falkorlib/cli/config.rb +8 -8
  20. data/lib/falkorlib/cli/link.rb +8 -9
  21. data/lib/falkorlib/cli/new.rb +25 -39
  22. data/lib/falkorlib/common.rb +425 -425
  23. data/lib/falkorlib/config.rb +114 -110
  24. data/lib/falkorlib/error.rb +27 -16
  25. data/lib/falkorlib/gem_tasks.rb +12 -11
  26. data/lib/falkorlib/git.rb +3 -4
  27. data/lib/falkorlib/git/base.rb +439 -396
  28. data/lib/falkorlib/git/flow.rb +163 -165
  29. data/lib/falkorlib/git_tasks.rb +31 -31
  30. data/lib/falkorlib/loader.rb +1 -1
  31. data/lib/falkorlib/puppet.rb +3 -5
  32. data/lib/falkorlib/puppet/base.rb +10 -15
  33. data/lib/falkorlib/puppet/modules.rb +367 -365
  34. data/lib/falkorlib/puppet_tasks.rb +11 -8
  35. data/lib/falkorlib/tasks.rb +51 -54
  36. data/lib/falkorlib/tasks/gem.rake +42 -43
  37. data/lib/falkorlib/tasks/gem.rb +12 -11
  38. data/lib/falkorlib/tasks/git.rake +101 -107
  39. data/lib/falkorlib/tasks/git.rb +31 -31
  40. data/lib/falkorlib/tasks/gitflow.rake +131 -141
  41. data/lib/falkorlib/tasks/puppet.rb +11 -8
  42. data/lib/falkorlib/tasks/puppet_modules.rake +143 -154
  43. data/lib/falkorlib/tasks/rspec.rake +94 -59
  44. data/lib/falkorlib/tasks/yard.rake +35 -39
  45. data/lib/falkorlib/version.rb +55 -55
  46. data/lib/falkorlib/versioning.rb +169 -167
  47. data/spec/falkorlib/bootstrap_helpers_spec.rb +106 -56
  48. data/spec/falkorlib/bootstrap_latex_spec.rb +145 -0
  49. data/spec/falkorlib/bootstrap_link_spec.rb +137 -0
  50. data/spec/falkorlib/bootstrap_ruby_spec.rb +118 -0
  51. data/spec/falkorlib/bootstrap_spec.rb +112 -129
  52. data/spec/falkorlib/git_spec.rb +94 -22
  53. data/spec/falkorlib/gitflow_spec.rb +54 -42
  54. data/spec/falkorlib/puppet_modules_spec.rb +35 -26
  55. data/spec/falkorlib/versioning_puppet_module_spec.rb +94 -90
  56. data/spec/falkorlib_spec.rb +5 -0
  57. data/spec/spec_helper.rb +88 -47
  58. data/templates/latex/article-ieee/main.tex.erb +509 -0
  59. data/templates/latex/article/_abstract.tex.erb +19 -0
  60. data/templates/latex/article/_acronyms.tex.erb +116 -0
  61. data/templates/latex/article/_conclusion.tex.erb +25 -0
  62. data/templates/latex/article/_context.tex.erb +17 -0
  63. data/templates/latex/article/_experiments.tex.erb +27 -0
  64. data/templates/latex/article/_implem.tex.erb +17 -0
  65. data/templates/latex/article/_introduction.tex.erb +39 -0
  66. data/templates/latex/article/_related_works.tex.erb +19 -0
  67. data/templates/latex/article/biblio.bib.erb +28 -0
  68. data/templates/latex/article/template.tex.erb +16 -0
  69. data/templates/latex/ieee/IEEEtran.bst +2409 -0
  70. data/templates/latex/ieee/IEEEtran.cls +6347 -0
  71. data/templates/motd/motd.erb +2 -1
  72. metadata +82 -2
@@ -26,71 +26,106 @@
26
26
  # http://relishapp.com/rspec
27
27
  #
28
28
  require 'rspec/core'
29
+ require 'rubocop/rake_task'
30
+
31
+ RuboCop::RakeTask.new
32
+
33
+ # RSpec.configure do |c|
34
+ # c.fail_fast = true
35
+ # c.color = true
36
+ # end
37
+
29
38
  begin
30
- require "rspec/core/rake_task"
31
- desc "Run RSpec code examples '*_spec.rb' from the spec/ directory"
32
- RSpec::Core::RakeTask.new(:rspec) do |t|
33
- # Glob pattern to match files.
34
- #t.pattern = "spec/**/common_*.rb"
35
- #t.pattern = "spec/**/versioning_*spec.rb"
36
- #t.pattern = "spec/**/puppet*spec.rb"
37
- #t.pattern = "spec/**/bootstrap_he*spec.rb"
38
- #t.pattern = "spec/**/git*spec.rb"
39
- #t.pattern = "spec/**/error*spec.rb"
40
- #t.pattern = "spec/**/config*spec.rb"
41
-
42
- # Whether or not to fail Rake when an error occurs (typically when
43
- # examples fail).
44
- t.fail_on_error = true
45
-
46
- # A message to print to stderr when there are failures.
47
- t.failure_message = nil
48
-
49
- # Use verbose output. If this is set to true, the task will print the
50
- # executed spec command to stdout.
51
- t.verbose = true
52
-
53
- # Use rcov for code coverage?
54
- #t.rcov = false
55
-
56
- # Path to rcov.
57
- #t.rcov_path = "rcov"
58
-
59
- # Command line options to pass to rcov. See 'rcov --help' about this
60
- #t.rcov_opts = []
61
-
62
- # Command line options to pass to ruby. See 'ruby --help' about this
63
- t.ruby_opts = []
64
-
65
- # Path to rspec
66
- #t.rspec_path = "rspec"
67
-
68
- # Command line options to pass to rspec. See 'rspec --help' about this
69
- #t.rspec_opts = ["--color", "--backtrace"]
70
- t.rspec_opts = ["--color", "--format d", "--backtrace"] # "--format d",
71
- end
72
- rescue LoadError => ex
73
- task :spec_test do
74
- abort 'rspec is not available. In order to run spec, you must: gem install rspec'
75
- end
39
+ require "rspec/core/rake_task"
40
+ #specfiles = Dir.glob['spec/**/*_spec.rb']
41
+ specsuite = {}
42
+ Dir.glob('spec/**/*_spec.rb').each do |f|
43
+ File.basename(f) =~ /^([^_]+)_*/
44
+ specsuite[Regexp.last_match(1)] = [] unless specsuite[Regexp.last_match(1)]
45
+ specsuite[Regexp.last_match(1)] << f
46
+ end
47
+ rspec_opts = [ "--color", "--format d", "--backtrace" ]
48
+ unless specsuite.empty?
49
+ #.....................
50
+ namespace :rspec do
51
+ #.....................
52
+ namespace :suite do
53
+ specsuite.each do |name, _files|
54
+ ########### #{name} ###########
55
+ desc "Run all specs in #{name} spec suite"
56
+ RSpec::Core::RakeTask.new(name.to_sym) do |t|
57
+ t.pattern = "spec/**/#{name}_*spec.rb"
58
+ t.verbose = false
59
+ t.rspec_opts = rspec_opts
60
+ end # task #{name}
61
+ end
62
+ end # namespace suite
63
+ end # namespace rspec
64
+ end
65
+
66
+
67
+ desc "Run RSpec code examples '*_spec.rb' from the spec/ directory"
68
+ RSpec::Core::RakeTask.new(:rspec) do |t|
69
+ # Glob pattern to match files.
70
+ #t.pattern = "spec/**/common_*.rb"
71
+ #t.pattern = "spec/**/versioning_*spec.rb"
72
+ #t.pattern = "spec/**/puppet*spec.rb"
73
+ #t.pattern = "spec/**/bootstrap_spec.rb"
74
+ #t.pattern = "spec/**/git*spec.rb"
75
+ #t.pattern = "spec/**/error*spec.rb"
76
+ #t.pattern = "spec/**/config*spec.rb"
77
+
78
+ # Whether or not to fail Rake when an error occurs (typically when
79
+ # examples fail).
80
+ t.fail_on_error = true
81
+
82
+ # A message to print to stderr when there are failures.
83
+ t.failure_message = nil
84
+
85
+ # Use verbose output. If this is set to true, the task will print the
86
+ # executed spec command to stdout.
87
+ t.verbose = true
88
+
89
+ # Use rcov for code coverage?
90
+ #t.rcov = false
91
+
92
+ # Path to rcov.
93
+ #t.rcov_path = "rcov"
94
+
95
+ # Command line options to pass to rcov. See 'rcov --help' about this
96
+ #t.rcov_opts = []
97
+
98
+ # Command line options to pass to ruby. See 'ruby --help' about this
99
+ t.ruby_opts = []
100
+
101
+ # Path to rspec
102
+ #t.rspec_path = "rspec"
103
+
104
+ # Command line options to pass to rspec. See 'rspec --help' about this
105
+ #t.rspec_opts = ["--color", "--backtrace"]
106
+ t.rspec_opts = rspec_opts #["--color", "--format d", "--backtrace"] # "--format d",
107
+ end
108
+ rescue LoadError
109
+ task :spec_test do
110
+ abort 'rspec is not available. In order to run spec, you must: gem install rspec'
111
+ end
76
112
  ensure
77
- task :spec => [:spec_test]
78
- task :test => [:spec_test]
113
+ task :spec => [:spec_test]
114
+ task :test => [:spec_test]
79
115
  end
80
116
 
81
117
  #.....................
82
118
  namespace :setenv do
83
- ########### code_climate ###########
84
- #desc "Set Code Climate token to report rspec results"
85
- task :code_climate do |t|
86
- unless FalkorLib.config[:tokens].nil? or
87
- FalkorLib.config[:tokens][:code_climate].nil? or
88
- FalkorLib.config[:tokens][:code_climate].empty?
89
- ans = ask(cyan("A Code Climate token is set - Do you want to report on Code Climate the result of the process? (y|N)"), 'No')
90
- ENV['CODECLIMATE_REPO_TOKEN'] = FalkorLib.config[:tokens][:code_climate] if ans =~ /y.*/i
91
- end
92
- end # task code_climate
93
-
119
+ ########### code_climate ###########
120
+ #desc "Set Code Climate token to report rspec results"
121
+ task :code_climate do |_t|
122
+ unless FalkorLib.config[:tokens].nil? ||
123
+ FalkorLib.config[:tokens][:code_climate].nil? ||
124
+ FalkorLib.config[:tokens][:code_climate].empty?
125
+ ans = ask(cyan("A Code Climate token is set - Do you want to report on Code Climate the result of the process? (y|N)"), 'No')
126
+ ENV['CODECLIMATE_REPO_TOKEN'] = FalkorLib.config[:tokens][:code_climate] if ans =~ /y.*/i
127
+ end
128
+ end # task code_climate
94
129
  end # namespace set
95
130
 
96
131
  task :rspec => 'setenv:code_climate'
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Ven 2014-06-06 15:54 svarrette>
3
+ # Time-stamp: <Fri 2016-11-11 15:25 svarrette>
4
4
  ################################################################################
5
5
  # Installs a rake task to generate API documentation using yard.
6
6
  #
@@ -31,48 +31,44 @@ require "falkorlib"
31
31
 
32
32
  #.....................
33
33
  namespace :yard do
34
- begin
35
- require "yard"
34
+ begin
35
+ require "yard"
36
36
 
37
- ########### yard:doc ###########
38
- desc "Generate yard documentation"
39
- YARD::Rake::YardocTask.new(:doc) do |t|
40
- # Array of options passed to yardoc commandline. See 'yardoc --help' about this
41
- t.options = ["--output-dir", "doc/api", "-", "README.md", "CHANGELOG.md", "LICENCE.md"]
37
+ ########### yard:doc ###########
38
+ desc "Generate yard documentation"
39
+ YARD::Rake::YardocTask.new(:doc) do |t|
40
+ # Array of options passed to yardoc commandline. See 'yardoc --help' about this
41
+ t.options = ["--output-dir", "doc/api", "-", "README.md", "CHANGELOG.md", "LICENCE.md"]
42
42
 
43
- # Array of ruby source files (and any extra documentation files
44
- # separated by '-')
45
- t.files = ["lib/**/*.rb"]
43
+ # Array of ruby source files (and any extra documentation files
44
+ # separated by '-')
45
+ t.files = ["lib/**/*.rb"]
46
46
 
47
- # A proc to call before running the task
48
- # t.before = proc{ }
47
+ # A proc to call before running the task
48
+ # t.before = proc{ }
49
49
 
50
- # A proc to call after running the task
51
- t.after = proc{
52
- puts "\nFull documentation is now generated -- you probably want now to\n\t open doc/api/index.html"
53
- }
50
+ # A proc to call after running the task
51
+ t.after = proc {
52
+ puts "\nFull documentation is now generated -- you probably want now to\n\t open doc/api/index.html"
53
+ }
54
54
 
55
- # An optional lambda to run against all objects being generated.
56
- # Any object that the lambda returns false for will be excluded
57
- # from documentation.
58
- # t.verifier = lambda{|obj| true}
59
-
60
- end
61
-
62
- rescue LoadError
63
- task :yard do
64
- abort 'yard is not available. In order to run yard, you must: gem install yard'
65
- end
66
- end
67
-
68
- ########### yard:stats ###########
69
- desc "Collect statistics as regards yard documentation"
70
- task :stats do |t|
71
- Dir.chdir(FalkorLib.config.root) do
72
- FalkorLib::Common.run %{yard stats --list-undoc}
73
- end
74
- end
75
-
76
- end
55
+ # An optional lambda to run against all objects being generated.
56
+ # Any object that the lambda returns false for will be excluded
57
+ # from documentation.
58
+ # t.verifier = lambda{|obj| true}
59
+ end
77
60
 
61
+ rescue LoadError
62
+ task :yard do
63
+ abort 'yard is not available. In order to run yard, you must: gem install yard'
64
+ end
65
+ end
78
66
 
67
+ ########### yard:stats ###########
68
+ desc "Collect statistics as regards yard documentation"
69
+ task :stats do |_t|
70
+ Dir.chdir(FalkorLib.config.root) do
71
+ FalkorLib::Common.run %(yard stats --list-undoc)
72
+ end
73
+ end
74
+ end
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Mer 2014-06-18 17:45 svarrette>
3
+ # Time-stamp: <Sat 2016-11-12 02:37 svarrette>
4
4
  ################################################################################
5
5
  # @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
6
6
  #
@@ -9,68 +9,68 @@
9
9
 
10
10
  module FalkorLib #:nodoc:
11
11
 
12
- # Management of the current version of the library
13
- # @see falkorlib/tasks/versioning.rake
14
- module Version
12
+ # Management of the current version of the library
13
+ # @see falkorlib/tasks/versioning.rake
14
+ module Version
15
15
 
16
- # Change the MAJOR, MINOR and PATCH constants below
17
- # to adjust the version of the FalkorLib gem
18
- #
19
- # MAJOR: Defines the major version
20
- # MINOR: Defines the minor version
21
- # PATCH: Defines the patch version
22
- MAJOR, MINOR, PATCH = 0, 6, 19
16
+ # Change the MAJOR, MINOR and PATCH constants below
17
+ # to adjust the version of the FalkorLib gem
18
+ #
19
+ # MAJOR: Defines the major version
20
+ # MINOR: Defines the minor version
21
+ # PATCH: Defines the patch version
22
+ MAJOR, MINOR, PATCH = 0, 7, 0
23
23
 
24
- module_function
24
+ module_function
25
25
 
26
- ## Returns the major version ( big release based off of multiple minor releases )
27
- def major
28
- MAJOR
29
- end
30
-
31
- ## Returns the minor version ( small release based off of multiple patches )
32
- def minor
33
- MINOR
34
- end
26
+ ## Returns the major version ( big release based off of multiple minor releases )
27
+ def major
28
+ MAJOR
29
+ end
35
30
 
36
- ## Returns the patch version ( updates, features and (crucial) bug fixes )
37
- def patch
38
- PATCH
39
- end
31
+ ## Returns the minor version ( small release based off of multiple patches )
32
+ def minor
33
+ MINOR
34
+ end
40
35
 
41
- ## @return the full version string
42
- def to_s
43
- [ MAJOR, MINOR, PATCH ].join('.')
44
- end
36
+ ## Returns the patch version ( updates, features and (crucial) bug fixes )
37
+ def patch
38
+ PATCH
39
+ end
45
40
 
46
- # ## Return a new version number based on
47
- # # @param oldversion the old version (format: x.y.z)
48
- # # @param level the level of bumping (either :major, :minor, :patch)
49
- # def bump_version(oldversion, level)
50
- # major = minor = patch = 0
51
- # if oldversion =~ /^(\d+)\.(\d+)\.(\d+)$/
52
- # major = $1.to_i
53
- # minor = $2.to_i
54
- # patch = $3.to_i
55
- # end
56
- # case level
57
- # when ':major'
58
- # major += 1
59
- # minor = 0
60
- # patch = 0
61
- # when ':minor'
62
- # minor += 1
63
- # patch = 0
64
- # when ':patch'
65
- # patch += 1
66
- # end
67
- # version = [major, minor, patch].compact.join('.')
68
- # end
41
+ ## @return the full version string
42
+ def to_s
43
+ [MAJOR, MINOR, PATCH].join('.')
69
44
  end
70
45
 
71
- # Shorter version of the Gem's VERSION
72
- VERSION = Version.to_s
73
- end
46
+ # ## Return a new version number based on
47
+ # # @param oldversion the old version (format: x.y.z)
48
+ # # @param level the level of bumping (either :major, :minor, :patch)
49
+ # def bump_version(oldversion, level)
50
+ # major = minor = patch = 0
51
+ # if oldversion =~ /^(\d+)\.(\d+)\.(\d+)$/
52
+ # major = $1.to_i
53
+ # minor = $2.to_i
54
+ # patch = $3.to_i
55
+ # end
56
+ # case level
57
+ # when ':major'
58
+ # major += 1
59
+ # minor = 0
60
+ # patch = 0
61
+ # when ':minor'
62
+ # minor += 1
63
+ # patch = 0
64
+ # when ':patch'
65
+ # patch += 1
66
+ # end
67
+ # version = [major, minor, patch].compact.join('.')
68
+ # end
69
+
70
+ end
74
71
 
72
+ # Shorter version of the Gem's VERSION
73
+ VERSION = Version.to_s
75
74
 
75
+ end
76
76
 
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Dim 2015-01-25 16:04 svarrette>
3
+ # Time-stamp: <Wed 2016-11-09 00:28 svarrette>
4
4
  ################################################################################
5
5
  # @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
6
6
  #
@@ -10,184 +10,186 @@ require 'json'
10
10
 
11
11
  module FalkorLib #:nodoc:
12
12
 
13
- module Config
13
+ module Config
14
+ # Default configuration for Versioning Management
15
+ module Versioning
16
+
17
+ # Versioning Management defaults
18
+ DEFAULTS = {
19
+ :default => '0.0.1',
20
+ :levels => %w(major minor patch),
21
+ :type => 'file',
22
+ :source => {
23
+ 'file' => {
24
+ :filename => 'VERSION'
25
+ },
26
+ 'gem' => {
27
+ :filename => 'lib/falkorlib/version.rb',
28
+ :getmethod => 'FalkorLib::Version.to_s',
29
+ #:setmethod => 'FalkorLib::Version.set',
30
+ #:pattern => '^(\s*)MAJOR\s*,\s*MINOR,\s*PATCH\s*=\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)'
31
+ },
32
+ 'puppet_module' => {
33
+ :filename => 'metadata.json'
34
+ },
35
+ 'tag' => {
36
+ :suffix => 'v'
37
+ }
38
+ }
39
+ }
14
40
 
15
- # Default configuration for Versioning Management
16
- module Versioning
17
- # Versioning Management defaults
18
- DEFAULTS = {
19
- :default => '0.0.1',
20
- :levels => [ 'major', 'minor', 'patch' ],
21
- :type => 'file',
22
- :source => {
23
- 'file' => {
24
- :filename => 'VERSION'
25
- },
26
- 'gem' => {
27
- :filename => 'lib/falkorlib/version.rb',
28
- :getmethod => 'FalkorLib::Version.to_s',
29
- #:setmethod => 'FalkorLib::Version.set',
30
- #:pattern => '^(\s*)MAJOR\s*,\s*MINOR,\s*PATCH\s*=\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)'
31
- },
32
- 'puppet_module' => {
33
- :filename => 'metadata.json'
34
- },
35
- 'tag' => {
36
- :suffix => 'v'
37
- },
38
- }
39
- }
40
- end
41
41
  end
42
+ end
42
43
 
43
- # Semantic Versioning Management
44
- # @see falkorlib/tasks/versioning.rake
45
- module Versioning
46
- module_function
44
+ # Semantic Versioning Management
45
+ # @see falkorlib/tasks/versioning.rake
46
+ module Versioning
47
47
 
48
- ## extract the major part of the version
49
- def major(version)
50
- res = 0
51
- res = $1 if version =~ /^\s*(\d+)\.\d+\.\d+/
52
- res
53
- end
48
+ module_function
54
49
 
55
- ## extract the minor part of the version
56
- def minor(version)
57
- res = 0
58
- res = $1 if version =~ /^\s*\d+\.(\d+)\.\d+/
59
- res
60
- end
50
+ ## extract the major part of the version
51
+ def major(version)
52
+ res = 0
53
+ res = Regexp.last_match(1) if version =~ /^\s*(\d+)\.\d+\.\d+/
54
+ res
55
+ end
61
56
 
62
- ## extract the patch part of the version
63
- def patch(version)
64
- res = 0
65
- res = $1 if version =~ /^\s*\d+\.\d+\.(\d+)/
66
- res
67
- end
57
+ ## extract the minor part of the version
58
+ def minor(version)
59
+ res = 0
60
+ res = Regexp.last_match(1) if version =~ /^\s*\d+\.(\d+)\.\d+/
61
+ res
62
+ end
68
63
 
69
- ######
70
- # Get the current version
71
- # Supported options:
72
- # * :default [string] default version
73
- # * :type in ['file','gem','puppet_module'] type of versionning mechanism
74
- # * :source [Hash] information on the way to retrieve the information
75
- def get_version(rootdir = Dir.pwd, options = {})
76
- version = options[:default] ? options[:default] : FalkorLib.config[:versioning][:default]
77
- type = options[:type] ? options[:type] : FalkorLib.config[:versioning][:type]
78
- source = options[:source] ? options[:source] : FalkorLib.config[:versioning][:source][ type ]
79
- case type
80
- when 'file'
81
- versionfile = File.join( rootdir, source[:filename] )
82
- version = File.read( versionfile ).chomp if File.exist? ( versionfile )
83
- when 'gem'
84
- getmethod = source[:getmethod ]
85
- version = eval( getmethod ) unless (getmethod.nil? || getmethod.empty?)
86
- when 'puppet_module'
87
- jsonfile = File.join( rootdir, source[:filename] )
88
- metadata = JSON.parse( IO.read( jsonfile ) )
89
- version = metadata["version"]
90
- end
91
- version
92
- end
64
+ ## extract the patch part of the version
65
+ def patch(version)
66
+ res = 0
67
+ res = Regexp.last_match(1) if version =~ /^\s*\d+\.\d+\.(\d+)/
68
+ res
69
+ end
93
70
 
94
- ######
95
- # Set the version
96
- # Supported options:
97
- # * :type in ['file','gem','puppet_module'] type of versionning mechanism
98
- # * :source [Hash] information on the way to retrieve the information
99
- def set_version(version, rootdir = Dir.pwd, options = {})
100
- exit_status = 0
101
- type = options[:type] ? options[:type] : FalkorLib.config[:versioning][:type]
102
- source = options[:source] ? options[:source] : FalkorLib.config[:versioning][:source][ type ]
103
- versionfile = File.join( rootdir, source[:filename] ) unless source[:filename].nil?
104
- major, minor, patch = major(version), minor(version), patch(version)
105
- #tocommit = ""
106
- case type
107
- when 'file'
108
- info "writing version changes in #{source[:filename]}"
109
- File.open(versionfile, 'w') {|f| f.puts version } #if File.exist? ( versionfile )
110
- when 'gem'
111
- info "=> writing version changes in #{source[:filename]}"
112
- File.open(versionfile, 'r+') do |f|
113
- text = f.read
114
- text.gsub!(/^(\s*)MAJOR\s*,\s*MINOR,\s*PATCH\s*=\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(.*)$/,
115
- '\1' + "MAJOR, MINOR, PATCH = #{major}, #{minor}, #{patch}" + '\5')
116
- f.rewind
117
- f.write(text)
118
- end
119
- when 'puppet_module'
120
- info "=> writing version changes in #{source[:filename]}"
121
- metadata = JSON.parse( IO.read( versionfile ) )
122
- metadata["version"] = version
123
- File.open(versionfile,"w") do |f|
124
- f.write JSON.pretty_generate( metadata )
125
- end
126
- #exit 1
127
- end
128
- if FalkorLib::Git.init?(rootdir)
129
- filelist = FalkorLib::Git.list_files( rootdir )
130
- Dir.chdir( rootdir ) do
131
- next if source[:filename].nil?
132
- unless filelist.include?( source[:filename] )
133
- warning "The version file #{source[:filename]} is not part of the Git repository"
134
- answer = ask("Adding the file to the repository? (Y|n)", 'Yes')
135
- next if answer =~ /n.*/i
136
- exit_status = FalkorLib::Git.add(versionfile, "Adding the version file '#{source[:filename]}', inialized to the '#{version}' version" )
137
- next
138
- end
139
- run %{
140
- git diff #{source[:filename]}
141
- }
142
- answer = ask(cyan("=> Commit the changes of the version file to the repository? (Y|n)"), 'Yes')
143
- next if answer =~ /n.*/i
144
- run %{
145
- git commit -s -m "bump to version '#{version}'" #{source[:filename]}
146
- }
147
- exit_status = $?.to_i
148
- # if (type == 'gem' && File.exists?(File.join(rootdir, 'Gemfile')) )
149
- # run %{
150
- # sleep 2
151
- # bundle update falkorlib
152
- # git commit -s -m "Update Gemfile.lock accordingly" Gemfile.lock
153
- # } if command?( 'bundle' )
154
- # end
155
- end
156
- end
157
- exit_status
158
- end
71
+ ######
72
+ # Get the current version
73
+ # Supported options:
74
+ # * :default [string] default version
75
+ # * :type in ['file','gem','puppet_module'] type of versionning mechanism
76
+ # * :source [Hash] information on the way to retrieve the information
77
+ def get_version(path = Dir.pwd, options = {})
78
+ rootdir = normalized_path(path)
79
+ version = (options[:default]) ? options[:default] : FalkorLib.config[:versioning][:default]
80
+ type = (options[:type]) ? options[:type] : FalkorLib.config[:versioning][:type]
81
+ source = (options[:source]) ? options[:source] : FalkorLib.config[:versioning][:source][ type ]
82
+ puts "type = '#{type}'"
83
+ case type
84
+ when 'file'
85
+ versionfile = File.join( rootdir, source[:filename] )
86
+ puts "versionfile = '#{versionfile}'"
87
+ version = File.read( versionfile ).chomp if File.exist?( versionfile )
88
+ when 'gem'
89
+ getmethod = source[:getmethod ]
90
+ version = eval( getmethod ) unless (getmethod.nil? || getmethod.empty?)
91
+ when 'puppet_module'
92
+ jsonfile = File.join( rootdir, source[:filename] )
93
+ metadata = JSON.parse( IO.read( jsonfile ) )
94
+ version = metadata["version"]
95
+ end
96
+ version
97
+ end
159
98
 
160
- ## Return a new version number based on
161
- # @param oldversion the old version (format: x.y.z)
162
- # @param level the level of bumping (either :major, :minor, :patch)
163
- def bump(oldversion, level)
164
- major = minor = patch = 0
165
- if oldversion =~ /^(\d+)\.(\d+)\.(\d+)$/
166
- major = $1.to_i
167
- minor = $2.to_i
168
- patch = $3.to_i
169
- end
170
- case level.to_sym
171
- when :major
172
- major += 1
173
- minor = 0
174
- patch = 0
175
- when :minor
176
- minor += 1
177
- patch = 0
178
- when :patch
179
- patch += 1
180
- end
181
- version = [major, minor, patch].compact.join('.')
99
+ ######
100
+ # Set the version
101
+ # Supported options:
102
+ # * :type in ['file','gem','puppet_module'] type of versionning mechanism
103
+ # * :source [Hash] information on the way to retrieve the information
104
+ def set_version(version, rootdir = Dir.pwd, options = {})
105
+ exit_status = 0
106
+ type = (options[:type]) ? options[:type] : FalkorLib.config[:versioning][:type]
107
+ source = (options[:source]) ? options[:source] : FalkorLib.config[:versioning][:source][ type ]
108
+ versionfile = File.join( rootdir, source[:filename] ) unless source[:filename].nil?
109
+ major, minor, patch = major(version), minor(version), patch(version)
110
+ #tocommit = ""
111
+ case type
112
+ when 'file'
113
+ info "writing version changes in #{source[:filename]}"
114
+ File.open(versionfile, 'w') { |f| f.puts version } #if File.exist? ( versionfile )
115
+ when 'gem'
116
+ info "=> writing version changes in #{source[:filename]}"
117
+ File.open(versionfile, 'r+') do |f|
118
+ text = f.read
119
+ text.gsub!(/^(\s*)MAJOR\s*,\s*MINOR,\s*PATCH\s*=\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(.*)$/,
120
+ '\1' + "MAJOR, MINOR, PATCH = #{major}, #{minor}, #{patch}" + '\5')
121
+ f.rewind
122
+ f.write(text)
182
123
  end
183
-
184
- # for rspec
185
- module Gem
124
+ when 'puppet_module'
125
+ info "=> writing version changes in #{source[:filename]}"
126
+ metadata = JSON.parse( IO.read( versionfile ) )
127
+ metadata["version"] = version
128
+ File.open(versionfile, "w") do |f|
129
+ f.write JSON.pretty_generate( metadata )
186
130
  end
187
- # for rspec
188
- module Puppet
131
+ #exit 1
132
+ end
133
+ if FalkorLib::Git.init?(rootdir)
134
+ filelist = FalkorLib::Git.list_files( rootdir )
135
+ Dir.chdir( rootdir ) do
136
+ next if source[:filename].nil?
137
+ unless filelist.include?( source[:filename] )
138
+ warning "The version file #{source[:filename]} is not part of the Git repository"
139
+ answer = ask("Adding the file to the repository? (Y|n)", 'Yes')
140
+ next if answer =~ /n.*/i
141
+ exit_status = FalkorLib::Git.add(versionfile, "Adding the version file '#{source[:filename]}', inialized to the '#{version}' version" )
142
+ next
143
+ end
144
+ run %( git diff #{source[:filename]} )
145
+ answer = ask(cyan("=> Commit the changes of the version file to the repository? (Y|n)"), 'Yes')
146
+ next if answer =~ /n.*/i
147
+ run %( git commit -s -m "bump to version '#{version}'" #{source[:filename]} )
148
+ exit_status = $?.to_i
149
+ # if (type == 'gem' && File.exists?(File.join(rootdir, 'Gemfile')) )
150
+ # run %{
151
+ # sleep 2
152
+ # bundle update falkorlib
153
+ # git commit -s -m "Update Gemfile.lock accordingly" Gemfile.lock
154
+ # } if command?( 'bundle' )
155
+ # end
189
156
  end
157
+ end
158
+ exit_status
159
+ end
160
+
161
+ ## Return a new version number based on
162
+ # @param oldversion the old version (format: x.y.z)
163
+ # @param level the level of bumping (either :major, :minor, :patch)
164
+ def bump(oldversion, level)
165
+ major = minor = patch = 0
166
+ if oldversion =~ /^(\d+)\.(\d+)\.(\d+)$/
167
+ major = Regexp.last_match(1).to_i
168
+ minor = Regexp.last_match(2).to_i
169
+ patch = Regexp.last_match(3).to_i
170
+ end
171
+ case level.to_sym
172
+ when :major
173
+ major += 1
174
+ minor = 0
175
+ patch = 0
176
+ when :minor
177
+ minor += 1
178
+ patch = 0
179
+ when :patch
180
+ patch += 1
181
+ end
182
+ version = [major, minor, patch].compact.join('.')
183
+ version
184
+ end
185
+
186
+ # for rspec
187
+ module Gem
188
+ end
189
+ # for rspec
190
+ module Puppet
191
+ end
190
192
 
191
- end # module
193
+ end # module
192
194
 
193
195
  end