fedux_org-stdlib 0.3.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +2 -0
- data/.simplecov +7 -6
- data/Gemfile +33 -28
- data/README.md +1 -1
- data/Rakefile +8 -1
- data/doc/colors.md +2 -2
- data/doc/commands.md +2 -2
- data/doc/logic_converters.md +5 -5
- data/doc/models.md +5 -5
- data/fedux_org-stdlib.gemspec +3 -7
- data/lib/fedux_org_stdlib.rb +13 -0
- data/lib/fedux_org_stdlib/app_config.rb +247 -0
- data/lib/fedux_org_stdlib/ci.rb +6 -0
- data/lib/fedux_org_stdlib/colors/html_color.rb +18 -0
- data/lib/fedux_org_stdlib/command.rb +10 -0
- data/lib/fedux_org_stdlib/command/command_result.rb +13 -0
- data/lib/fedux_org_stdlib/command/run_command.rb +55 -0
- data/lib/fedux_org_stdlib/command/which.rb +60 -0
- data/lib/fedux_org_stdlib/core_ext/array.rb +6 -0
- data/lib/fedux_org_stdlib/core_ext/string.rb +3 -0
- data/lib/fedux_org_stdlib/environment.rb +32 -0
- data/lib/fedux_org_stdlib/filesystem.rb +248 -0
- data/lib/fedux_org_stdlib/filesystem/exceptions.rb +12 -0
- data/lib/fedux_org_stdlib/logging.rb +12 -0
- data/lib/fedux_org_stdlib/logging/logger.rb +79 -0
- data/lib/{fedux_org/stdlib → fedux_org_stdlib}/logging/severity.rb +1 -0
- data/lib/fedux_org_stdlib/logic_converters.rb +11 -0
- data/lib/{fedux_org/stdlib → fedux_org_stdlib}/logic_converters/exceptions.rb +1 -0
- data/lib/fedux_org_stdlib/logic_converters/logic_converter.rb +39 -0
- data/lib/fedux_org_stdlib/logic_converters/on_off_converter.rb +35 -0
- data/lib/fedux_org_stdlib/logic_converters/true_false_converter.rb +34 -0
- data/lib/fedux_org_stdlib/logic_converters/y_n_converter.rb +34 -0
- data/lib/fedux_org_stdlib/logic_converters/yes_no_converter.rb +34 -0
- data/lib/fedux_org_stdlib/models.rb +5 -0
- data/lib/fedux_org_stdlib/models/base_model.rb +129 -0
- data/lib/fedux_org_stdlib/models/class_based_model.rb +67 -0
- data/lib/fedux_org_stdlib/models/exceptions.rb +40 -0
- data/lib/fedux_org_stdlib/models/filesystem_based_model.rb +98 -0
- data/lib/fedux_org_stdlib/project.rb +6 -0
- data/lib/fedux_org_stdlib/project/generators/taskjuggler.rb +35 -0
- data/lib/fedux_org_stdlib/project/logger.rb +12 -0
- data/lib/fedux_org_stdlib/project/plan.rb +26 -0
- data/lib/fedux_org_stdlib/project/report.rb +63 -0
- data/lib/fedux_org_stdlib/rake.rb +8 -0
- data/lib/fedux_org_stdlib/rake/exceptions.rb +9 -0
- data/lib/{fedux_org/stdlib → fedux_org_stdlib}/rake/project.rb +4 -4
- data/lib/fedux_org_stdlib/rake/project_task.rb +29 -0
- data/lib/fedux_org_stdlib/rake/shell_task.rb +45 -0
- data/lib/fedux_org_stdlib/rake/sub_task.rb +26 -0
- data/lib/fedux_org_stdlib/rake/task.rb +118 -0
- data/lib/fedux_org_stdlib/rake/version_bump_task.rb +56 -0
- data/lib/fedux_org_stdlib/rake_tasks.rb +8 -0
- data/lib/fedux_org_stdlib/rake_tasks/console.rb +11 -0
- data/lib/fedux_org_stdlib/rake_tasks/documentation.rb +2 -0
- data/lib/fedux_org_stdlib/rake_tasks/documentation/yard.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/gems.rb +3 -0
- data/lib/fedux_org_stdlib/rake_tasks/gems/bundler.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/gems/package.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/project.rb +1 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report.rb +3 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report/generate.rb +10 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open.rb +12 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open_shortcut.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/qa.rb +4 -0
- data/lib/fedux_org_stdlib/rake_tasks/qa/rubocop.rb +13 -0
- data/lib/fedux_org_stdlib/rake_tasks/qa/travis.rb +13 -0
- data/lib/fedux_org_stdlib/rake_tasks/terminal.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests.rb +4 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests/cucumber.rb +13 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests/rspec.rb +12 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests/travis.rb +11 -0
- data/lib/fedux_org_stdlib/rake_tasks/version.rb +6 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/bump.rb +8 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/restore.rb +11 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/show.rb +12 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/show_shortcut.rb +9 -0
- data/lib/fedux_org_stdlib/require_files.rb +27 -0
- data/lib/fedux_org_stdlib/version.rb +5 -0
- data/lib/fedux_org_stdlib/version_management/exceptions.rb +9 -0
- data/lib/fedux_org_stdlib/version_management/library_builder.rb +12 -0
- data/lib/fedux_org_stdlib/version_management/ruby_library.rb +13 -0
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file.rb +78 -0
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file_parser.rb +22 -0
- data/lib/fedux_org_stdlib/version_management/version.rb +25 -0
- data/lib/fedux_org_stdlib/version_management/version_builder.rb +12 -0
- data/lib/fedux_org_stdlib/versionable.rb +18 -0
- data/rakefiles/default.rake +8 -1
- data/rakefiles/travis.rake +1 -1
- data/script/console +1 -1
- data/script/terminal +3 -2
- data/spec/app_config_spec.rb +7 -0
- data/spec/colors/html_color_spec.rb +7 -14
- data/spec/command/run_command_spec.rb +9 -10
- data/spec/command/which_spec.rb +8 -9
- data/spec/environment_spec.rb +12 -11
- data/spec/logger/logger_spec.rb +17 -16
- data/spec/logic_converters/on_off_converter_spec.rb +8 -7
- data/spec/logic_converters/true_false_converter_spec.rb +8 -7
- data/spec/logic_converters/y_n_converter_spec.rb +8 -7
- data/spec/logic_converters/yes_no_converter_spec.rb +8 -7
- data/spec/models/base_model_spec.rb +7 -7
- data/spec/models/class_based_model_spec.rb +37 -39
- data/spec/models/filesystem_based_model_spec.rb +24 -24
- data/spec/project/plan_spec.rb +6 -5
- data/spec/project/report_spec.rb +35 -29
- data/spec/project/taskjuggler_spec.rb +13 -12
- data/spec/spec_helper.rb +15 -38
- data/spec/support/environment.rb +16 -0
- data/spec/support/filesystem.rb +19 -0
- data/spec/support/reporting.rb +2 -0
- data/spec/support/rspec.rb +5 -0
- data/spec/support/string.rb +2 -0
- data/spec/version_management/library_builder_spec.rb +5 -4
- data/spec/version_management/ruby_library_spec.rb +5 -4
- data/spec/version_management/rubygem_version_file_parser_spec.rb +27 -16
- data/spec/version_management/rubygem_version_file_spec.rb +56 -54
- data/spec/version_management/version_builder_spec.rb +5 -4
- data/spec/version_management/version_spec.rb +16 -16
- metadata +104 -110
- data/lib/fedux_org/stdlib.rb +0 -15
- data/lib/fedux_org/stdlib/colors/html_color.rb +0 -19
- data/lib/fedux_org/stdlib/command.rb +0 -11
- data/lib/fedux_org/stdlib/command/command_result.rb +0 -14
- data/lib/fedux_org/stdlib/command/run_command.rb +0 -55
- data/lib/fedux_org/stdlib/command/which.rb +0 -67
- data/lib/fedux_org/stdlib/environment.rb +0 -31
- data/lib/fedux_org/stdlib/filesystem.rb +0 -247
- data/lib/fedux_org/stdlib/filesystem/exceptions.rb +0 -13
- data/lib/fedux_org/stdlib/logging.rb +0 -13
- data/lib/fedux_org/stdlib/logging/logger.rb +0 -79
- data/lib/fedux_org/stdlib/logic_converters.rb +0 -12
- data/lib/fedux_org/stdlib/logic_converters/logic_converter.rb +0 -40
- data/lib/fedux_org/stdlib/logic_converters/on_off_converter.rb +0 -36
- data/lib/fedux_org/stdlib/logic_converters/true_false_converter.rb +0 -35
- data/lib/fedux_org/stdlib/logic_converters/y_n_converter.rb +0 -35
- data/lib/fedux_org/stdlib/logic_converters/yes_no_converter.rb +0 -35
- data/lib/fedux_org/stdlib/models.rb +0 -4
- data/lib/fedux_org/stdlib/models/base_model.rb +0 -129
- data/lib/fedux_org/stdlib/models/class_based_model.rb +0 -76
- data/lib/fedux_org/stdlib/models/exceptions.rb +0 -41
- data/lib/fedux_org/stdlib/models/filesystem_based_model.rb +0 -99
- data/lib/fedux_org/stdlib/project.rb +0 -5
- data/lib/fedux_org/stdlib/project/generators/taskjuggler.rb +0 -41
- data/lib/fedux_org/stdlib/project/logger.rb +0 -13
- data/lib/fedux_org/stdlib/project/plan.rb +0 -15
- data/lib/fedux_org/stdlib/project/report.rb +0 -67
- data/lib/fedux_org/stdlib/rake.rb +0 -7
- data/lib/fedux_org/stdlib/rake/console.rb +0 -3
- data/lib/fedux_org/stdlib/rake/documentation.rb +0 -1
- data/lib/fedux_org/stdlib/rake/documentation/yard.rb +0 -14
- data/lib/fedux_org/stdlib/rake/gems.rb +0 -2
- data/lib/fedux_org/stdlib/rake/gems/bundler.rb +0 -12
- data/lib/fedux_org/stdlib/rake/gems/package.rb +0 -7
- data/lib/fedux_org/stdlib/rake/library.rb +0 -8
- data/lib/fedux_org/stdlib/rake/terminal.rb +0 -9
- data/lib/fedux_org/stdlib/rake/tests.rb +0 -3
- data/lib/fedux_org/stdlib/rake/tests/cucumber.rb +0 -6
- data/lib/fedux_org/stdlib/rake/tests/rspec.rb +0 -6
- data/lib/fedux_org/stdlib/rake/tests/travis.rb +0 -15
- data/lib/fedux_org/stdlib/rake/travis.rb +0 -1
- data/lib/fedux_org/stdlib/rake/travis/lint.rb +0 -10
- data/lib/fedux_org/stdlib/rake/version.rb +0 -4
- data/lib/fedux_org/stdlib/rake/version/base.rb +0 -7
- data/lib/fedux_org/stdlib/rake/version/bump.rb +0 -78
- data/lib/fedux_org/stdlib/rake/version/restore.rb +0 -9
- data/lib/fedux_org/stdlib/rake/version/show.rb +0 -9
- data/lib/fedux_org/stdlib/rake/version/show_shortcut.rb +0 -6
- data/lib/fedux_org/stdlib/version.rb +0 -6
- data/lib/fedux_org/stdlib/version_management/library_builder.rb +0 -15
- data/lib/fedux_org/stdlib/version_management/ruby_library.rb +0 -14
- data/lib/fedux_org/stdlib/version_management/rubygem_version_file.rb +0 -90
- data/lib/fedux_org/stdlib/version_management/rubygem_version_file_parser.rb +0 -18
- data/lib/fedux_org/stdlib/version_management/version.rb +0 -33
- data/lib/fedux_org/stdlib/version_management/version_builder.rb +0 -15
@@ -0,0 +1,67 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/require_files'
|
3
|
+
require_library %w{ find active_support/core_ext/object/blank active_support/core_ext/string/inflections }
|
4
|
+
|
5
|
+
require 'fedux_org_stdlib/models/filesystem_based_model'
|
6
|
+
|
7
|
+
module FeduxOrgStdlib
|
8
|
+
module Models
|
9
|
+
# model for import action
|
10
|
+
module ClassBasedModel
|
11
|
+
def self.included(base)
|
12
|
+
base.extend ClassMethods
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassMethods
|
16
|
+
def require_path(name)
|
17
|
+
path = File.join( library_name.underscore , model_name.pluralize.underscore , name.to_s )
|
18
|
+
FeduxOrgStdlib.logger.debug(self) { "Path to instances of model \"#{name}\": #{path}" }
|
19
|
+
|
20
|
+
path
|
21
|
+
end
|
22
|
+
|
23
|
+
def exception_for_model
|
24
|
+
"#{library_name}::Exceptions::Invalid#{model_name}".constantize
|
25
|
+
rescue
|
26
|
+
raise FeduxOrgStdlib::Models::Exceptions::ExceptionNeedsToBeImplemented, "Exception \"#{library_name}::Exceptions::Invalid#{model_name}\" does not exist."
|
27
|
+
end
|
28
|
+
|
29
|
+
def check_klass( klass , *methods)
|
30
|
+
raise exception_for_model, "A valid \"#{model_name}\"-class needs to respond to \"#{ methods.flatten.join(", ") }\"." unless methods.flatten.all? { |m| klass.new.respond_to? m }
|
31
|
+
end
|
32
|
+
|
33
|
+
def build_class_constant(name)
|
34
|
+
"#{library_name}::#{model_name.pluralize}::#{name.to_s.camelcase}".constantize
|
35
|
+
rescue
|
36
|
+
raise exception_for_model , "Class \"#{library_name}::#{model_name.pluralize}::#{name.to_s.camelcase}\" cannot be found in file \"#{require_path(name)}\"."
|
37
|
+
end
|
38
|
+
|
39
|
+
def check_method
|
40
|
+
raise FeduxOrgStdlib::Models::Exceptions::MethodNeedsToBeImplemented, "Method \"check_method\" does not exist."
|
41
|
+
end
|
42
|
+
|
43
|
+
def suffix
|
44
|
+
'.rb'
|
45
|
+
end
|
46
|
+
|
47
|
+
def load_from_filesystem
|
48
|
+
files = find_files
|
49
|
+
|
50
|
+
FeduxOrgStdlib.logger.debug(self) { "Files found at path \"#{path_to_instances}\": #{ files.join(", ") }" }
|
51
|
+
|
52
|
+
raise FeduxOrgStdlib::Models::Exceptions::NoImplementationsForModelFound, "You might need to store files at \"#{File.dirname(path_to_instances)}\" to make the library work." if files.blank?
|
53
|
+
|
54
|
+
files.each do |f|
|
55
|
+
instance_name = name( f )
|
56
|
+
|
57
|
+
require require_path( instance_name )
|
58
|
+
|
59
|
+
instance_klass = build_class_constant( instance_name )
|
60
|
+
check_klass( instance_klass, check_method )
|
61
|
+
create( instance_name , instance_klass.new )
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module FeduxOrgStdlib
|
3
|
+
module Models
|
4
|
+
module Exceptions
|
5
|
+
#internal error
|
6
|
+
class InternalError < Exception; end
|
7
|
+
|
8
|
+
#raised if one tries to delete an instance which
|
9
|
+
#does not exist
|
10
|
+
class InstanceNotFound < InternalError; end
|
11
|
+
|
12
|
+
#raised if one tries to use a keyword whose use
|
13
|
+
#is restricted
|
14
|
+
class UnauthorizedUseOfKeyword < InternalError; end
|
15
|
+
|
16
|
+
#raised if one uses invalid search criteria
|
17
|
+
class InvalidSearchCriteria < InternalError; end
|
18
|
+
|
19
|
+
#raised if the code which defines an import filter
|
20
|
+
#is malformed
|
21
|
+
class MethodNeedsToBeImplemented < InternalError; end
|
22
|
+
|
23
|
+
#raised if one tries to use an unimplemented exception
|
24
|
+
class ExceptionNeedsToBeImplemented < InternalError; end
|
25
|
+
|
26
|
+
#raised if one forgot to store files at `path_to_instances`
|
27
|
+
class NoImplementationsForModelFound < InternalError; end
|
28
|
+
|
29
|
+
#raised if an file system error occured
|
30
|
+
class FilesystemError < Exception ; end
|
31
|
+
|
32
|
+
#raise if a directory does not exist in filesystem
|
33
|
+
class DirectoryDoesNotExist < FilesystemError; end
|
34
|
+
|
35
|
+
#raise if a file does not exist in filesystem
|
36
|
+
class FileDoesNotExist < FilesystemError; end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/models/base_model'
|
3
|
+
|
4
|
+
module FeduxOrgStdlib
|
5
|
+
module Models
|
6
|
+
# model for import action
|
7
|
+
module FilesystemBasedModel
|
8
|
+
|
9
|
+
def self.included(base)
|
10
|
+
base.extend ClassMethods
|
11
|
+
end
|
12
|
+
|
13
|
+
module ClassMethods
|
14
|
+
|
15
|
+
#initialize model
|
16
|
+
def init
|
17
|
+
load_from_filesystem
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def module_name
|
23
|
+
name = fqcn
|
24
|
+
name.pop
|
25
|
+
|
26
|
+
name.join('::')
|
27
|
+
end
|
28
|
+
|
29
|
+
def fqcn
|
30
|
+
self.to_s.split(/::/)
|
31
|
+
end
|
32
|
+
|
33
|
+
def model_name
|
34
|
+
fqcn.last
|
35
|
+
end
|
36
|
+
|
37
|
+
def library_name
|
38
|
+
fqcn.first
|
39
|
+
end
|
40
|
+
|
41
|
+
def suffix
|
42
|
+
raise FeduxOrgStdlib::Models::Exceptions::MethodNeedsToBeImplemented, "Please defined the method \"suffix\" to make the library work."
|
43
|
+
end
|
44
|
+
|
45
|
+
def model_path
|
46
|
+
raise FeduxOrgStdlib::Models::Exceptions::MethodNeedsToBeImplemented, "Please defined the method \"model_path\" to make the library work."
|
47
|
+
end
|
48
|
+
|
49
|
+
def ignore
|
50
|
+
'BORING_STRING_WHICH_SHOULD_NEVER_MATCH'
|
51
|
+
end
|
52
|
+
|
53
|
+
def find_files
|
54
|
+
files = []
|
55
|
+
Find.find(path_to_instances) do |path|
|
56
|
+
next unless File.file? path
|
57
|
+
next if suffix and path !~/#{suffix}$/
|
58
|
+
next if path =~ /^\.\.?/
|
59
|
+
next if path =~ %r{#{ignore}}
|
60
|
+
|
61
|
+
files << path
|
62
|
+
end
|
63
|
+
|
64
|
+
files
|
65
|
+
rescue
|
66
|
+
raise FeduxOrgStdlib::Models::Exceptions::NoImplementationsForModelFound, "You might need to create the directory\"#{File.dirname(path_to_instances)}\"."
|
67
|
+
end
|
68
|
+
|
69
|
+
def path_to_instances
|
70
|
+
return_path = ::File.expand_path("../../#{model_name.pluralize.underscore}", model_path )
|
71
|
+
|
72
|
+
FeduxOrgStdlib.logger.debug(self) { "Path to instances of model: #{return_path}" }
|
73
|
+
|
74
|
+
return_path
|
75
|
+
end
|
76
|
+
|
77
|
+
def name(path)
|
78
|
+
name = File.basename(path, suffix ).to_sym
|
79
|
+
raise FeduxOrgStdlib::Models::Exceptions::UnauthorizedUseOfKeyword if forbidden_keywords.include? name
|
80
|
+
|
81
|
+
FeduxOrgStdlib.logger.debug(self) { "Name of model: #{name}" }
|
82
|
+
|
83
|
+
name
|
84
|
+
end
|
85
|
+
|
86
|
+
def load_from_filesystem
|
87
|
+
raise FeduxOrgStdlib::Models::Exceptions::MethodNeedsToBeImplemented
|
88
|
+
end
|
89
|
+
|
90
|
+
def forbidden_keywords
|
91
|
+
[ ]
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/require_files'
|
3
|
+
require_library %w{ command_exec }
|
4
|
+
|
5
|
+
require 'fedux_org_stdlib/logging/logger'
|
6
|
+
|
7
|
+
module FeduxOrgStdlib
|
8
|
+
module Project
|
9
|
+
module Generators
|
10
|
+
class Taskjuggler
|
11
|
+
def generate_report(directory, plan)
|
12
|
+
FeduxOrgStdlib::Project.logger.debug "Start generating report."
|
13
|
+
|
14
|
+
begin
|
15
|
+
command = CommandExec::Command.new(:tj3 ,
|
16
|
+
:parameter => "-o #{directory} #{plan}",
|
17
|
+
:error_detection_on => [:return_code],
|
18
|
+
:error_indicators => {
|
19
|
+
:allowed_return_code => [0],
|
20
|
+
},
|
21
|
+
:on_error_do => :raise_error,
|
22
|
+
)
|
23
|
+
command.run
|
24
|
+
rescue CommandExec::Exceptions::CommandExecutionFailed
|
25
|
+
FeduxOrgStdlib::Project.logger.fatal "Failed to generate report:\n\n#{ command.result.stderr.join( "\n" ) }"
|
26
|
+
exit 1
|
27
|
+
end
|
28
|
+
|
29
|
+
FeduxOrgStdlib::Project.logger.info "Generating report succeeded."
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module FeduxOrgStdlib
|
3
|
+
module Project
|
4
|
+
class Plan
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
attr_reader :main_file, :additional_files
|
9
|
+
|
10
|
+
public
|
11
|
+
|
12
|
+
def initialize(main_file: File.join(Dir.getwd, 'plan.tjp'), additional_files: [])
|
13
|
+
@main_file = main_file
|
14
|
+
@additional_files = Array(additional_files)
|
15
|
+
end
|
16
|
+
|
17
|
+
def needs_to_be_compiled?(base_file)
|
18
|
+
(Array(main_file) + additional_files).any? { |f| File.mtime(f) > File.mtime(base_file) }
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
main_file
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/require_files'
|
3
|
+
require_library %w{ fileutils launchy }
|
4
|
+
|
5
|
+
require 'fedux_org_stdlib/logging/logger'
|
6
|
+
require 'fedux_org_stdlib/project/logger'
|
7
|
+
require 'fedux_org_stdlib/project/generators/taskjuggler'
|
8
|
+
|
9
|
+
|
10
|
+
module FeduxOrgStdlib
|
11
|
+
module Project
|
12
|
+
class Report
|
13
|
+
|
14
|
+
attr_reader :directory, :file
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
attr_reader :output_file, :plan, :output_directory, :generator
|
19
|
+
|
20
|
+
public
|
21
|
+
|
22
|
+
def initialize(
|
23
|
+
plan:,
|
24
|
+
output_file:,
|
25
|
+
generator: FeduxOrgStdlib::Project::Generators::Taskjuggler.new
|
26
|
+
)
|
27
|
+
@plan = plan
|
28
|
+
@output_directory = File.dirname(output_file)
|
29
|
+
@output_file = output_file
|
30
|
+
@generator = generator
|
31
|
+
end
|
32
|
+
|
33
|
+
def generate
|
34
|
+
prepare_environment
|
35
|
+
|
36
|
+
if output_file_does_not_exist? or plan_is_newer_than_output_file?
|
37
|
+
generator.generate_report(output_directory, plan)
|
38
|
+
else
|
39
|
+
FeduxOrgStdlib::Project.logger.warn "No need to re-generate report. The plan file \"#{plan.to_s}\" is NOT newer than output \"#{@output_file}\"."
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def open
|
44
|
+
Launchy.open(output_file)
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def prepare_environment
|
50
|
+
FileUtils.mkdir_p output_directory
|
51
|
+
end
|
52
|
+
|
53
|
+
def output_file_does_not_exist?
|
54
|
+
!File.exists? output_file
|
55
|
+
end
|
56
|
+
|
57
|
+
def plan_is_newer_than_output_file?
|
58
|
+
plan.needs_to_be_compiled? output_file
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/rake/terminal'
|
3
|
+
require 'fedux_org_stdlib/rake/version'
|
4
|
+
require 'fedux_org_stdlib/rake/travis'
|
5
|
+
require 'fedux_org_stdlib/rake/tests'
|
6
|
+
require 'fedux_org_stdlib/rake/console'
|
7
|
+
require 'fedux_org_stdlib/rake/documentation'
|
8
|
+
require 'fedux_org_stdlib/rake/gems'
|
@@ -1,9 +1,10 @@
|
|
1
|
-
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/project'
|
2
3
|
|
3
4
|
namespace :report do
|
4
5
|
|
5
|
-
plan =
|
6
|
-
report =
|
6
|
+
plan = FeduxOrgStdlib::Project::Plan.new
|
7
|
+
report = FeduxOrgStdlib::Project::Report.new( plan )
|
7
8
|
|
8
9
|
desc "Generate report"
|
9
10
|
task :generate do
|
@@ -14,5 +15,4 @@ namespace :report do
|
|
14
15
|
task :show => :generate do
|
15
16
|
report.open
|
16
17
|
end
|
17
|
-
|
18
18
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/rake/task'
|
3
|
+
require 'fedux_org_stdlib/project'
|
4
|
+
|
5
|
+
module FeduxOrgStdlib
|
6
|
+
module Rake
|
7
|
+
# Project Task
|
8
|
+
#
|
9
|
+
# @see Rakefile
|
10
|
+
class ProjectTask < Task
|
11
|
+
|
12
|
+
# @!attribute [r] report
|
13
|
+
# The report to be generated
|
14
|
+
attr_reader :report
|
15
|
+
|
16
|
+
def initialize(
|
17
|
+
report_file: File.join(Dir.getwd, 'reports', 'Overview.html'),
|
18
|
+
plan_file: File.join(Dir.getwd, 'plan.tjp'),
|
19
|
+
additional_files: [],
|
20
|
+
**args
|
21
|
+
)
|
22
|
+
super(**args)
|
23
|
+
|
24
|
+
plan = FeduxOrgStdlib::Project::Plan.new(main_file: plan_file, additional_files: additional_files)
|
25
|
+
@report = FeduxOrgStdlib::Project::Report.new(plan: plan, output_file: report_file)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/rake/task'
|
3
|
+
require 'fedux_org_stdlib/require_files'
|
4
|
+
require_library %w{ erubis }
|
5
|
+
|
6
|
+
module FeduxOrgStdlib
|
7
|
+
module Rake
|
8
|
+
# Shell Task
|
9
|
+
#
|
10
|
+
# @see Rakefile
|
11
|
+
class ShellTask < Task
|
12
|
+
# @!attribute [r] command
|
13
|
+
# The command to be executed
|
14
|
+
attr_reader :command
|
15
|
+
|
16
|
+
# @!attribute [r] use_bundler
|
17
|
+
# Use bundler to run command
|
18
|
+
attr_reader :use_bundler
|
19
|
+
|
20
|
+
def initialize(command:, use_bundler: false, **args)
|
21
|
+
super(**args)
|
22
|
+
|
23
|
+
@use_bundler = use_bundler
|
24
|
+
@command = command
|
25
|
+
end
|
26
|
+
|
27
|
+
# @private
|
28
|
+
def run_task(verbose)
|
29
|
+
logger.warn 'Gemfile does not exist. Running bundler will fail. I am going to run the command without `bundle exec`.' unless gemfile_exists?
|
30
|
+
|
31
|
+
cmd = []
|
32
|
+
cmd << 'bundle exec' if use_bundler and gemfile_exists?
|
33
|
+
cmd << command
|
34
|
+
|
35
|
+
sh Erubis::Eruby.new(cmd.join(' ')).result(get_binding)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def gemfile_exists?
|
41
|
+
!Dir.glob('Gemfile').blank?
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|