fedux_org-stdlib 0.3.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
require 'pathname'
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'active_support/core_ext/object/blank'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
$stderr.puts 'You need to install the "activesupport"-gem to make that rake task work.'
|
|
7
|
-
exit 1
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
module FeduxOrg
|
|
11
|
-
module Stdlib
|
|
12
|
-
module Command
|
|
13
|
-
module Which
|
|
14
|
-
|
|
15
|
-
# Search for command
|
|
16
|
-
# @param [String] cmd
|
|
17
|
-
# name of command or path to command (will be reduced to basename and then searched in PATH)
|
|
18
|
-
#
|
|
19
|
-
# @param [Array,String] paths
|
|
20
|
-
# a string containing paths separated by "File::PATH_SEPARATOR" or an array of paths
|
|
21
|
-
#
|
|
22
|
-
# @param [Array,String] pathexts
|
|
23
|
-
# a string containing pathexts separated by ";" or an array of pathexts
|
|
24
|
-
#
|
|
25
|
-
# @return [String]
|
|
26
|
-
# path to command
|
|
27
|
-
def which(cmd, options={})
|
|
28
|
-
options = {
|
|
29
|
-
paths: ENV['PATH'].split(File::PATH_SEPARATOR),
|
|
30
|
-
pathexts: ENV['PATHEXT'].to_s.split( /;/ ),
|
|
31
|
-
raise_error_on_not_executable: false,
|
|
32
|
-
raise_error_on_not_found: false,
|
|
33
|
-
}.merge options
|
|
34
|
-
|
|
35
|
-
cmd = Pathname.new(cmd)
|
|
36
|
-
|
|
37
|
-
paths = options[:paths]
|
|
38
|
-
pathexts = options[:pathexts]
|
|
39
|
-
raise_error_on_not_executable = options[:raise_error_on_not_executable]
|
|
40
|
-
raise_error_on_not_found = options[:raise_error_on_not_found]
|
|
41
|
-
|
|
42
|
-
raise Exceptions::CommandNotFound if cmd.to_s.empty?
|
|
43
|
-
return nil if cmd.to_s.empty?
|
|
44
|
-
|
|
45
|
-
if cmd.absolute?
|
|
46
|
-
return cmd.to_s if cmd.executable?
|
|
47
|
-
raise Exceptions::CommandNotFound if raise_error_on_not_found and not cmd.exist?
|
|
48
|
-
raise Exceptions::CommandNotExecutable if raise_error_on_not_executable and not cmd.executable?
|
|
49
|
-
return nil
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
pathexts = [''] if pathexts.blank?
|
|
53
|
-
|
|
54
|
-
Array( paths ).each do |path|
|
|
55
|
-
Array( pathexts ).each do |ext|
|
|
56
|
-
file = Pathname.new( File.join(path, "#{cmd.to_s}#{ext.to_s}") )
|
|
57
|
-
return file.to_s if file.executable?
|
|
58
|
-
raise Exceptions::CommandNotExecutable if raise_error_on_not_executable and not cmd.executable?
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
raise Exceptions::CommandNotFound if raise_error_on_not_found
|
|
62
|
-
nil
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module FeduxOrg
|
|
2
|
-
module Stdlib
|
|
3
|
-
module Environment
|
|
4
|
-
|
|
5
|
-
# Set environment variable for code block
|
|
6
|
-
#
|
|
7
|
-
# @param [Hash] new_environment_variables
|
|
8
|
-
# the variables which should be set for that environment
|
|
9
|
-
#
|
|
10
|
-
# @param [Hash] options
|
|
11
|
-
# options for environment manipulation
|
|
12
|
-
#
|
|
13
|
-
# @option options [True,False] :clear
|
|
14
|
-
# Should the environment clear before merge?
|
|
15
|
-
#
|
|
16
|
-
# @yield
|
|
17
|
-
# the block which should be run which the change environment
|
|
18
|
-
def isolated_environment(new_environment_variables, options={}, &block)
|
|
19
|
-
old_environment = ENV.to_hash
|
|
20
|
-
|
|
21
|
-
ENV.clear if options[:clear] == true
|
|
22
|
-
ENV.update new_environment_variables
|
|
23
|
-
|
|
24
|
-
block.call
|
|
25
|
-
ensure
|
|
26
|
-
ENV.clear
|
|
27
|
-
ENV.update old_environment
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
require 'fileutils'
|
|
2
|
-
require 'fedux_org/stdlib/filesystem/exceptions'
|
|
3
|
-
|
|
4
|
-
# helper for file system
|
|
5
|
-
module FeduxOrg
|
|
6
|
-
module Stdlib
|
|
7
|
-
module Filesystem
|
|
8
|
-
|
|
9
|
-
# The root directory of the project
|
|
10
|
-
#
|
|
11
|
-
# @return [String]
|
|
12
|
-
# the root directory
|
|
13
|
-
def root_directory
|
|
14
|
-
#::File.expand_path('../../../', __FILE__)
|
|
15
|
-
raise Exceptions::InvalidUsageOfLibrary , "Sorry, but you need to define the root directory yourself"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# The temporary directory for the project
|
|
19
|
-
#
|
|
20
|
-
# @return [String]
|
|
21
|
-
# the directory created for the tests
|
|
22
|
-
def working_directory
|
|
23
|
-
::File.join(root_directory, 'tmp', 'test')
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Create temporary directory
|
|
27
|
-
def create_working_directory
|
|
28
|
-
FileUtils.mkdir_p(working_directory) unless ::File.exists? working_directory
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Delete temporary directory
|
|
32
|
-
def delete_working_directory
|
|
33
|
-
FileUtils.rm_rf(working_directory) if ::File.exists? working_directory
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Clean up test directory
|
|
37
|
-
def cleanup_working_directory
|
|
38
|
-
delete_working_directory
|
|
39
|
-
create_working_directory
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Switch the current working directory to
|
|
43
|
-
# the temporary one and execute code block
|
|
44
|
-
def switch_to_working_directory(&block)
|
|
45
|
-
Dir.chdir(working_directory, &block)
|
|
46
|
-
end
|
|
47
|
-
alias_method :in_working_directory, :switch_to_working_directory
|
|
48
|
-
|
|
49
|
-
# Create directory(ies)
|
|
50
|
-
#
|
|
51
|
-
# @param [String,Array] dirs
|
|
52
|
-
# the directories to be created, multiple arguments are possible as well
|
|
53
|
-
#
|
|
54
|
-
# @return [String,Array]
|
|
55
|
-
# returns a string if there was only one file given, and an array with
|
|
56
|
-
# muliple files
|
|
57
|
-
def create_directory(*dirs)
|
|
58
|
-
raise_if_forbidden_path_for_create_operation(dirs)
|
|
59
|
-
|
|
60
|
-
directories = expand_path(dirs.flatten)
|
|
61
|
-
FileUtils.mkdir_p(directories)
|
|
62
|
-
|
|
63
|
-
if directories.size == 1
|
|
64
|
-
return directories.first
|
|
65
|
-
else
|
|
66
|
-
return directories
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# Delete directory(ies)
|
|
71
|
-
#
|
|
72
|
-
# @param [String, Array] dirs
|
|
73
|
-
# the directories to be deleted, multiple arguments are possible as well
|
|
74
|
-
#
|
|
75
|
-
# @return [String,Array]
|
|
76
|
-
# returns a string if there was only one file given, and an array with
|
|
77
|
-
# muliple files
|
|
78
|
-
def delete_directory(*dirs)
|
|
79
|
-
raise_if_forbidden_path_for_delete_operation(dirs)
|
|
80
|
-
|
|
81
|
-
directories = expand_path(dirs.flatten)
|
|
82
|
-
FileUtils.rm_r(directories)
|
|
83
|
-
|
|
84
|
-
if directories.size == 1
|
|
85
|
-
return directories.first
|
|
86
|
-
else
|
|
87
|
-
return directories
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# Check existence of path(s)
|
|
92
|
-
#
|
|
93
|
-
# @param [String,Array] paths
|
|
94
|
-
# which path(s) should be checked, multiple arguments are possible as well
|
|
95
|
-
#
|
|
96
|
-
# @return [TrueClass,FalseClass]
|
|
97
|
-
# the result of all checks done
|
|
98
|
-
def path_exists?(*paths)
|
|
99
|
-
raise_if_forbidden_path_for_create_operation(paths)
|
|
100
|
-
|
|
101
|
-
paths_expanded = expand_path(paths.flatten)
|
|
102
|
-
paths_expanded.flatten.all? { |p| ::File.exists?(p) }
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
# Check absence of path(s)
|
|
106
|
-
#
|
|
107
|
-
# @param [String,Array] paths
|
|
108
|
-
# which path(s) should be checked, multiple arguments are possible as well
|
|
109
|
-
#
|
|
110
|
-
# @return [TrueClass,FalseClass]
|
|
111
|
-
# the result of all checks done
|
|
112
|
-
def path_does_not_exist?(*paths)
|
|
113
|
-
not path_exists?(paths)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# Create a single file
|
|
117
|
-
#
|
|
118
|
-
# @param [String] path
|
|
119
|
-
# the path for the new file (can include directories)
|
|
120
|
-
#
|
|
121
|
-
# @param [String] content
|
|
122
|
-
# the content written to the file
|
|
123
|
-
#
|
|
124
|
-
# @return [String]
|
|
125
|
-
# the path to the created file
|
|
126
|
-
def create_file(path, content='', mode=0644)
|
|
127
|
-
raise_if_forbidden_path_for_create_operation(path)
|
|
128
|
-
|
|
129
|
-
file = expand_path(path).first
|
|
130
|
-
directory = ::File.dirname(file)
|
|
131
|
-
|
|
132
|
-
FileUtils.mkdir_p(directory) unless directory == '.'
|
|
133
|
-
::File.open(file, "wb") do |f|
|
|
134
|
-
f.write content
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
FileUtils.chmod(mode, file)
|
|
138
|
-
|
|
139
|
-
file
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
# Delete a single file
|
|
143
|
-
#
|
|
144
|
-
# @param [String] files
|
|
145
|
-
# the path for the new file (can include directories)
|
|
146
|
-
#
|
|
147
|
-
# @return [String]
|
|
148
|
-
# the path to the deleted file
|
|
149
|
-
def delete_file(*files)
|
|
150
|
-
raise_if_forbidden_path_for_delete_operation(files)
|
|
151
|
-
|
|
152
|
-
files_to_be_deleted = expand_path(files.flatten)
|
|
153
|
-
FileUtils.rm(files_to_be_deleted)
|
|
154
|
-
|
|
155
|
-
if files_to_be_deleted.size == 1
|
|
156
|
-
return files_to_be_deleted.first
|
|
157
|
-
else
|
|
158
|
-
return files_to_be_deleted
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
# Read the content of a file
|
|
163
|
-
#
|
|
164
|
-
# @param [String] path
|
|
165
|
-
# the path to the file
|
|
166
|
-
#
|
|
167
|
-
# @return [String,Binary]
|
|
168
|
-
# the content of the file
|
|
169
|
-
def read_file(path)
|
|
170
|
-
raise_if_forbidden_path_for_create_operation(path)
|
|
171
|
-
|
|
172
|
-
file_path = expand_path(path).first
|
|
173
|
-
return ::File.read(file_path)
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
# Expand path based on temporary directory
|
|
177
|
-
#
|
|
178
|
-
# @param [String, Array, Multiple Values] paths
|
|
179
|
-
# the paths to be expanded
|
|
180
|
-
#
|
|
181
|
-
# @return [Array, String]
|
|
182
|
-
# the expanded arrays
|
|
183
|
-
def expand_path(*paths)
|
|
184
|
-
raise_if_forbidden_path_for_create_operation(paths)
|
|
185
|
-
|
|
186
|
-
paths.flatten.map do |p|
|
|
187
|
-
case p
|
|
188
|
-
when /^~/
|
|
189
|
-
::File.expand_path(p)
|
|
190
|
-
else
|
|
191
|
-
::File.join(working_directory, p )
|
|
192
|
-
end
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
# Check if path is forbidden for delete operation
|
|
197
|
-
#
|
|
198
|
-
# @param [String, Array] paths
|
|
199
|
-
# paths which should be checked
|
|
200
|
-
#
|
|
201
|
-
# @return [TrueClass, FalseClass]
|
|
202
|
-
# true if path is forbidden, false if path is not forbidden
|
|
203
|
-
def raise_if_forbidden_path_for_create_operation(*paths)
|
|
204
|
-
flattend_paths = paths.flatten
|
|
205
|
-
strings = []
|
|
206
|
-
regex = %r[\.\.]
|
|
207
|
-
|
|
208
|
-
raise FileSystem::Exceptions::InvalidPath , "Sorry, but you cannot use paths matching \"#{strings.join(', ')}\" or \"#{regex.inspect}\" here!" if path_matches?(strings, regex, flattend_paths)
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
# Check if path is forbidden for delete operation
|
|
212
|
-
#
|
|
213
|
-
# @param [String, Array] paths
|
|
214
|
-
# paths which should be checked
|
|
215
|
-
#
|
|
216
|
-
# @return [TrueClass, FalseClass]
|
|
217
|
-
# true if path is forbidden, false if path is not forbidden
|
|
218
|
-
def raise_if_forbidden_path_for_delete_operation(*paths)
|
|
219
|
-
flattend_paths = paths.flatten
|
|
220
|
-
strings = %w[ / ]
|
|
221
|
-
regex = %r[\.\.]
|
|
222
|
-
|
|
223
|
-
raise FileSystem::Exceptions::InvalidPath , "Sorry, but you cannot use paths matching \"#{strings.join(', ')}\" or \"#{regex.to_s}\" here!" if path_matches?(strings, regex, flattend_paths)
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
# Check if path matches
|
|
227
|
-
#
|
|
228
|
-
# @param [Array, String] strings
|
|
229
|
-
# strings which are checked against paths
|
|
230
|
-
#
|
|
231
|
-
# @param [Array, String] regex
|
|
232
|
-
# regex which is checked against path
|
|
233
|
-
#
|
|
234
|
-
# @param [Array, String] paths
|
|
235
|
-
# the paths to be checked
|
|
236
|
-
#
|
|
237
|
-
# @return [TrueClass, FalseClass]
|
|
238
|
-
# true if path is valid, false if invalid
|
|
239
|
-
def path_matches?(strings, regex, *paths)
|
|
240
|
-
flattend_paths = paths.flatten
|
|
241
|
-
flattend_strings = strings.flatten
|
|
242
|
-
|
|
243
|
-
flattend_paths.any? { |f| f =~ regex or flattend_strings.include?(f) }
|
|
244
|
-
end
|
|
245
|
-
end
|
|
246
|
-
end
|
|
247
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
module FeduxOrg
|
|
2
|
-
module Stdlib
|
|
3
|
-
module FileSystem
|
|
4
|
-
module Exceptions
|
|
5
|
-
# Raise if path with '..' given
|
|
6
|
-
class InvalidPath < Exception; end
|
|
7
|
-
|
|
8
|
-
#Raised if library is not used correctly
|
|
9
|
-
class InvalidUsageOfLibrary < Exception; end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
require 'logger'
|
|
2
|
-
require 'forwardable'
|
|
3
|
-
require 'fedux_org/stdlib/logging/severity'
|
|
4
|
-
|
|
5
|
-
module FeduxOrg
|
|
6
|
-
module Stdlib
|
|
7
|
-
module Logging
|
|
8
|
-
class Logger
|
|
9
|
-
|
|
10
|
-
extend ::Forwardable
|
|
11
|
-
def_delegators :@logger, :fatal, :warn, :debug, :info, :error, :unknown
|
|
12
|
-
|
|
13
|
-
attr_reader :mode
|
|
14
|
-
|
|
15
|
-
# Create logger
|
|
16
|
-
#
|
|
17
|
-
# @param [Logger] logger (::Logger.new( $stderr ))
|
|
18
|
-
# The logger with should be used to output data
|
|
19
|
-
def initialize(logger = ::Logger.new( $stderr ) )
|
|
20
|
-
@logger = logger
|
|
21
|
-
self.mode = :info
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# Reset logger to ruby logger
|
|
25
|
-
def reset
|
|
26
|
-
@logger = ::Logger.new( $stderr )
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# Change mode of logger: DEBUG, ... + Change the output format
|
|
30
|
-
#
|
|
31
|
-
# @param [Symbol] m
|
|
32
|
-
# the mode: DEBUG, ...
|
|
33
|
-
def mode=(m)
|
|
34
|
-
@mode = m
|
|
35
|
-
|
|
36
|
-
case m
|
|
37
|
-
when :debug
|
|
38
|
-
@logger.level = ::Logger::DEBUG
|
|
39
|
-
format_debug
|
|
40
|
-
when :silent
|
|
41
|
-
@logger.level = ::Logger::SILENT
|
|
42
|
-
when :info
|
|
43
|
-
@logger.level = ::Logger::INFO
|
|
44
|
-
format_standard
|
|
45
|
-
else
|
|
46
|
-
@logger.level = ::Logger::INFO
|
|
47
|
-
format_standard
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
def format_debug
|
|
54
|
-
@logger.formatter = proc { |severity, datetime, progname , msg|
|
|
55
|
-
debug_msg("%s %s %s: %s\n" % [ datetime, severity, progname, msg ])
|
|
56
|
-
}
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def format_standard
|
|
60
|
-
@logger.formatter = proc { |severity, datetime, _, msg|
|
|
61
|
-
info_msg( "%s %s: %s\n" % [ datetime, severity, msg ] )
|
|
62
|
-
}
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def error_msg(msg)
|
|
66
|
-
ANSI.red(msg)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def info_msg(msg)
|
|
70
|
-
msg
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def debug_msg(msg)
|
|
74
|
-
msg
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|