fedux_org-stdlib 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,4 +1,31 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in fedux_org-stdlib.gemspec
4
- gemspec
3
+ gemspec
4
+
5
+ group :test do
6
+ gem 'rake'
7
+ gem 'rspec'
8
+ gem 'simplecov'
9
+ gem 'aruba'
10
+ gem 'fuubar'
11
+ gem 'ffaker'
12
+ end
13
+
14
+ group :documentation do
15
+ gem 'yard'
16
+ gem 'redcarpet'
17
+ gem 'github-markup'
18
+ end
19
+
20
+ group :development do
21
+ gem 'tmrb'
22
+ gem 'debugger'
23
+ gem 'pry'
24
+ gem 'pry-doc'
25
+ gem 'pry-debugger'
26
+ gem 'debugger-completion'
27
+ gem 'awesome_print'
28
+ gem 'travis-lint'
29
+ gem 'fuubar'
30
+ gem 'churn'
31
+ end
data/Rakefile CHANGED
@@ -1 +1,94 @@
1
- require "bundler/gem_tasks"
1
+ #!/usr/bin/env rake
2
+
3
+ unless ENV['TRAVIS_CI'] == 'true'
4
+ namespace :gem do
5
+ require 'bundler/gem_tasks'
6
+ end
7
+
8
+ require 'yard'
9
+ require 'rubygems/package_task'
10
+ require 'active_support/core_ext/string/strip'
11
+ end
12
+
13
+ YARD::Rake::YardocTask.new() do |y|
14
+ # y.options << '--verbose'
15
+ end
16
+
17
+ desc 'start tmux'
18
+ task :terminal do
19
+ sh "script/terminal"
20
+ end
21
+
22
+ task :term => :terminal
23
+ task :t => :terminal
24
+
25
+ namespace :version do
26
+ version_file = Dir.glob('lib/**/version.rb').first
27
+
28
+ desc 'bump version of library to new version'
29
+ task :bump do
30
+
31
+ new_version = ENV['VERSION'] || ENV['version']
32
+
33
+ raw_module_name = File.open(version_file, "r").readlines.grep(/module/).first
34
+ module_name = raw_module_name.chomp.match(/module\s+(\S+)/) {$1}
35
+
36
+ version_string = %Q{#main #{module_name}
37
+ module #{module_name}
38
+ VERSION = '#{new_version}'
39
+ end}
40
+
41
+ File.open(version_file, "w") do |f|
42
+ f.write version_string.strip_heredoc
43
+ end
44
+
45
+ sh "git add #{version_file}"
46
+ sh "git commit -m 'version bump to #{new_version}'"
47
+ #project = 'the_array_comparator'
48
+ #sh "git tag #{project}-v#{new_version}"
49
+ end
50
+
51
+ desc 'show version of library'
52
+ task :show do
53
+ raw_version = File.open(version_file, "r").readlines.grep(/VERSION/).first
54
+
55
+ if raw_version
56
+ version = raw_version.chomp.match(/VERSION\s+=\s+["']([^'"]+)["']/) { $1 }
57
+ puts version
58
+ else
59
+ warn "Could not parse version file \"#{version_file}\""
60
+ end
61
+
62
+ end
63
+
64
+ desc 'Restore version file from git repository'
65
+ task :restore do
66
+ sh "git checkout #{version_file}"
67
+ end
68
+
69
+ end
70
+
71
+ namespace :travis do
72
+ desc 'Runs travis-lint to check .travis.yml'
73
+ task :check do
74
+ sh 'travis-lint'
75
+ end
76
+ end
77
+
78
+ namespace :test do
79
+ desc 'Run specs'
80
+ task :specs do
81
+ sh 'bundle exec rspec spec'
82
+ end
83
+
84
+ desc 'Run tests in "travis mode"'
85
+ task :travis_specs do
86
+ ENV['TRAVIS_CI'] = 'true'
87
+ sh 'rspec spec'
88
+ sh 'cucumber -p all'
89
+ end
90
+ end
91
+
92
+ task :console do
93
+ sh 'script/console'
94
+ end
@@ -0,0 +1,14 @@
1
+ module FeduxOrg
2
+ module Stdlib
3
+ module Command
4
+ class CommandResult
5
+ attr_accessor :stderr, :stdout, :status
6
+
7
+ def initialize
8
+ @stderr = ''
9
+ @stdout = ''
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,51 @@
1
+ require 'open3'
2
+
3
+ require 'fedux_org/stdlib/environment'
4
+ require 'fedux_org/stdlib/command/command_result'
5
+
6
+ module FeduxOrg
7
+ module Stdlib
8
+ module Command
9
+ include Environment
10
+
11
+ # Execute command
12
+ #
13
+ # @param [String] cmd
14
+ # the command
15
+ #
16
+ # @param [Hash] options
17
+ # the options for command execution
18
+ #
19
+ # @option options [Hash] env ({])
20
+ # the environment variables for the command ('VAR' => 'CONTENT')
21
+ #
22
+ # @option options [String] stdin (nil)
23
+ # the string for stdin of the command
24
+ #
25
+ # @option options [TrueClass,FalseClass] binmode (false)
26
+ # should the stdin be read a binary or not
27
+ #
28
+ # @return [CommandResult]
29
+ # the result of the command execution
30
+ #
31
+ # @return [CommandResult]
32
+ # the result of the command execution
33
+ def run_command(cmd,options={})
34
+ opts = {
35
+ env: nil,
36
+ stdin: nil,
37
+ binmode: false,
38
+ }.merge options
39
+
40
+ env = opts[:env] || ENV.to_hash
41
+ stdin = opts[:stdin]
42
+ binmode = opts[:binmode]
43
+
44
+ result = CommandResult.new
45
+ result.stdout, result.stderr, result.status = Open3.capture3(env, cmd, stdin_data: stdin, chdir: working_directory, binmode: binmode)
46
+
47
+ result
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,29 @@
1
+ module FeduxOrg
2
+ module Stdlib
3
+ module Environment
4
+
5
+ # Set environment variable for code block
6
+ #
7
+ # @param [Hash] variables
8
+ # the variables which should be set for that environment
9
+ #
10
+ # @yield
11
+ # the block which should be run which the change environment
12
+ def isolated_environment(variables, &block)
13
+ #backup
14
+ old_env = ENV.to_hash
15
+ #change env
16
+ ENV.update variables
17
+
18
+ block_result = block.call
19
+
20
+ #cleanup
21
+ ENV.clear
22
+ #install backuped information
23
+ ENV.update old_env
24
+
25
+ block_result
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,13 @@
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
@@ -0,0 +1,247 @@
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
+
48
+ # Create directory(ies)
49
+ #
50
+ # @param [String,Array] dir
51
+ # the directories to be created, multiple arguments are possible as well
52
+ #
53
+ # @return [String,Array]
54
+ # returns a string if there was only one file given, and an array with
55
+ # muliple files
56
+ def create_directory(*dirs)
57
+ raise_if_forbidden_path_for_create_operation(dirs)
58
+
59
+ directories = expand_path(dirs.flatten)
60
+ FileUtils.mkdir_p(directories)
61
+
62
+ if directories.size == 1
63
+ return directories.first
64
+ else
65
+ return directories
66
+ end
67
+ end
68
+
69
+ # Delete directory(ies)
70
+ #
71
+ # @param [String, Array] dir
72
+ # the directories to be deleted, multiple arguments are possible as well
73
+ #
74
+ # @return [String,Array]
75
+ # returns a string if there was only one file given, and an array with
76
+ # muliple files
77
+ def delete_directory(*dirs)
78
+ raise_if_forbidden_path_for_delete_operation(dirs)
79
+
80
+ directories = expand_path(dirs.flatten)
81
+ FileUtils.rm_r(directories)
82
+
83
+ if directories.size == 1
84
+ return directories.first
85
+ else
86
+ return directories
87
+ end
88
+ end
89
+
90
+ # Check existence of path(s)
91
+ #
92
+ # @param [String,Array] paths
93
+ # which path(s) should be checked, multiple arguments are possible as well
94
+ #
95
+ # @return [TrueClass,FalseClass]
96
+ # the result of all checks done
97
+ def path_exists?(*paths)
98
+ raise_if_forbidden_path_for_create_operation(paths)
99
+
100
+ paths_expanded = expand_path(paths.flatten)
101
+ paths_expanded.flatten.all? { |p| ::File.exists?(p) }
102
+ end
103
+
104
+ # Check absence of path(s)
105
+ #
106
+ # @param [String,Array] paths
107
+ # which path(s) should be checked, multiple arguments are possible as well
108
+ #
109
+ # @return [TrueClass,FalseClass]
110
+ # the result of all checks done
111
+ def path_does_not_exist?(*paths)
112
+ not path_exists?(paths)
113
+ end
114
+
115
+ # Create a single file
116
+ #
117
+ # @param [String] file_path
118
+ # the path for the new file (can include directories)
119
+ #
120
+ # @param [String] content
121
+ # the content written to the file
122
+ #
123
+ # @return [String]
124
+ # the path to the created file
125
+ def create_file(path, content='')
126
+ raise_if_forbidden_path_for_create_operation(path)
127
+
128
+ file = expand_path(path).first
129
+ directory = ::File.dirname(file)
130
+
131
+ FileUtils.mkdir_p(directory) unless directory == '.'
132
+ ::File.open(file, "wb") do |f|
133
+ f.write content
134
+ end
135
+
136
+ file
137
+ end
138
+
139
+ # Delete a single file
140
+ #
141
+ # @param [String] file_path
142
+ # the path for the new file (can include directories)
143
+ #
144
+ # @param [String] content
145
+ # the content written to the file
146
+ #
147
+ # @return [String]
148
+ # the path to the created 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] file_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.to_s}\" 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
+ # @result [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
@@ -0,0 +1,9 @@
1
+ require 'fedux_org/stdlib/logging/logger'
2
+
3
+ module FeduxOrg
4
+ module Stdlib
5
+ def self.logger
6
+ @logger ||= FeduxOrg::Stdlib::Logging::Logger.new
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,66 @@
1
+ module FeduxOrg
2
+ module Stdlib
3
+ module Logging
4
+ class Logger
5
+
6
+ extend ::Forwardable
7
+ def_delegators :@logger, :fatal, :warn, :debug, :info, :error, :unknown
8
+
9
+ attr_reader :mode
10
+
11
+ def initialize
12
+ @logger = ::Logger.new($stderr)
13
+ self.mode = :info
14
+ end
15
+
16
+ def mode=(m)
17
+ @mode = m
18
+
19
+ case m
20
+ when :debug
21
+ @logger.level = ::Logger::DEBUG
22
+ format_debug
23
+ when :silent
24
+ @logger.level = ::Logger::SILENT
25
+ when :info
26
+ @logger.level = ::Logger::INFO
27
+ format_standard
28
+ else
29
+ @logger.level = ::Logger::INFO
30
+ format_standard
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ def format_debug
37
+ @logger.formatter = proc { |severity, datetime, progname , msg|
38
+ debug_msg("%s %s %s: %s\n" % [ datetime, severity, progname, msg ])
39
+ }
40
+ end
41
+
42
+ def format_standard
43
+ @logger.formatter = proc { |severity, datetime, _, msg|
44
+ info_msg( "%s %s: %s\n" % [ datetime, severity, msg ] )
45
+ }
46
+ end
47
+
48
+ def error_msg(msg)
49
+ ANSI.red(msg)
50
+ end
51
+
52
+ def info_msg(msg)
53
+ msg
54
+ end
55
+
56
+ def debug_msg(msg)
57
+ msg
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ class ::Logger
65
+ SILENT = 9999
66
+ end
@@ -94,20 +94,20 @@ module FeduxOrg
94
94
 
95
95
  #finds all instances
96
96
  def find_all( criteria={} )
97
- PuppetGenerator::Models.logger.debug(self) { "Criteria for search: #{ criteria }" }
97
+ FeduxOrg::Stdlib.logger.debug(self) { "Criteria for search: #{ criteria }" }
98
98
  criteria = { name: criteria.to_sym } if criteria.kind_of? Symbol or criteria.kind_of? String
99
99
 
100
- PuppetGenerator::Models.logger.debug(self) { "Instances to be searched for: #{ @instances.map { |i| "#{i.name} (#{i.class})" }.join(", ") }" }
100
+ FeduxOrg::Stdlib.logger.debug(self) { "Instances to be searched for: #{ @instances.map { |i| "#{i.name} (#{i.class})" }.join(", ") }" }
101
101
  @instances.find_all do |i|
102
102
  criteria.all? do |c,v|
103
103
 
104
- PuppetGenerator::Models.logger.debug(self) { "Check method for search: #{ c }" }
104
+ FeduxOrg::Stdlib.logger.debug(self) { "Check method for search: #{ c }" }
105
105
  i.send( "#{c}?".to_sym , v )
106
106
  end
107
107
  end
108
108
 
109
109
  rescue NameError => e
110
- raise Exceptions::InvalidSearchCriteria, e.message
110
+ raise FeduxOrg::Stdlib::Models::Exceptions::InvalidSearchCriteria, e.message
111
111
  end
112
112
  end
113
113
 
@@ -11,13 +11,13 @@ module FeduxOrg
11
11
  module ClassMethods
12
12
 
13
13
  def require_path(name)
14
- File.join( PuppetGenerator.gem_load_path, model_name.pluralize.underscore , name.to_s )
14
+ File.join( module_name.underscore , model_name.pluralize.underscore , name.to_s )
15
15
  end
16
16
 
17
17
  def exception_for_model
18
- "PuppetGenerator::Exceptions::Invalid#{model_name.singularize}".constantize
18
+ "#{library_name}::Exceptions::Invalid#{model_name.singularize}".constantize
19
19
  rescue
20
- raise Exceptions::ExceptionNeedsToBeImplemented, "Exception \"Exceptions::Invalid#{model_name}\" does not exist."
20
+ raise FeduxOrg::Stdlib::Models::Exceptions::ExceptionNeedsToBeImplemented, "Exception \"#{library_name}::Exceptions::Invalid#{model_name}\" does not exist."
21
21
  end
22
22
 
23
23
  def check_klass( klass , method)
@@ -25,13 +25,13 @@ module FeduxOrg
25
25
  end
26
26
 
27
27
  def build_class_constant(name)
28
- "PuppetGenerator::#{model_name.pluralize}::#{name.to_s.camelcase}".constantize
28
+ "#{library_name}::#{model_name.pluralize}::#{name.to_s.camelcase}".constantize
29
29
  rescue
30
30
  raise exception_for_model , "The filename needs to be snakecase and needs to be convertible to the action class name: filename in camelcase."
31
31
  end
32
32
 
33
33
  def check_method
34
- raise Exceptions::MethodNeedsToBeImplemented, "Method \"check_method\" does not exist."
34
+ raise FeduxOrg::Stdlib::Models::Exceptions::MethodNeedsToBeImplemented, "Method \"check_method\" does not exist."
35
35
  end
36
36
 
37
37
  def suffix
@@ -0,0 +1,32 @@
1
+ module PuppetGenerator
2
+ module Exceptions
3
+
4
+ #raised if one tries to delete an instance which
5
+ #does not exist
6
+ class InstanceNotFound < InternalError; end
7
+
8
+ #raised if one tries to use a keyword whose use
9
+ #is restricted
10
+ class UnauthorizedUseOfKeyword < InternalError; end
11
+
12
+ #raised if one uses invalid search criteria
13
+ class InvalidSearchCriteria < InternalError; end
14
+
15
+ #raised if the code which defines an import filter
16
+ #is malformed
17
+ class MethodNeedsToBeImplemented < InternalError; end
18
+
19
+ #raised if one tries to use an unimplemented exception
20
+ class ExceptionNeedsToBeImplemented < InternalError; end
21
+
22
+ #raised if an file system error occured
23
+ class FilesystemError < Exception ; end
24
+
25
+ #raise if a directory does not exist in filesystem
26
+ class DirectoryDoesNotExist < FilesystemError; end
27
+
28
+ #raise if a file does not exist in filesystem
29
+ class FileDoesNotExist < FilesystemError; end
30
+
31
+ end
32
+ end
@@ -32,8 +32,12 @@ module FeduxOrg
32
32
  fqcn.last
33
33
  end
34
34
 
35
+ def library_name
36
+ fqcn.first
37
+ end
38
+
35
39
  def suffix
36
- raise Exceptions::MethodNeedsToBeImplemented
40
+ raise FeduxOrg::Stdlib::Models::Exceptions::MethodNeedsToBeImplemented
37
41
  end
38
42
 
39
43
  def path_to_instances
@@ -44,13 +48,13 @@ module FeduxOrg
44
48
 
45
49
  def name(path)
46
50
  name = File.basename(path, suffix ).to_sym
47
- raise Exceptions::UnauthorizedUseOfKeyword if forbidden_keywords.include? name
51
+ raise FeduxOrg::Stdlib::Models::Exceptions::UnauthorizedUseOfKeyword if forbidden_keywords.include? name
48
52
 
49
53
  name
50
54
  end
51
55
 
52
56
  def load_from_filesystem
53
- raise Exceptions::MethodNeedsToBeImplemented
57
+ raise FeduxOrg::Stdlib::Models::Exceptions::MethodNeedsToBeImplemented
54
58
  end
55
59
 
56
60
  def forbidden_keywords
@@ -0,0 +1,5 @@
1
+ require 'fedux_org/stdlib/models/exceptions'
2
+ require 'fedux_org/stdlib/models/base_model'
3
+ require 'fedux_org/stdlib/models/class_based_model'
4
+ require 'fedux_org/stdlib/models/filesystem_based_model'
5
+ require 'fedux_org/stdlib/logger'
@@ -1,5 +1,6 @@
1
+ #main FeduxOrg
1
2
  module FeduxOrg
2
3
  module Stdlib
3
- VERSION = "0.0.1"
4
+ VERSION = '0.0.2'
4
5
  end
5
6
  end
@@ -0,0 +1,28 @@
1
+ #encoding: utf-8
2
+ $LOAD_PATH << File.expand_path( '../../lib', __FILE__ )
3
+
4
+ unless ENV['TRAVIS_CI'] == 'true'
5
+ require 'pry'
6
+ require 'debugger'
7
+ require 'ap'
8
+ require 'benchmark'
9
+ end
10
+
11
+ unless ENV['TRAVIS_CI'] == 'true'
12
+ require 'simplecov'
13
+ SimpleCov.start
14
+ SimpleCov.command_name 'rspec'
15
+ end
16
+
17
+ require 'puppet_generator'
18
+ include PuppetGenerator
19
+
20
+ RSpec.configure do |c|
21
+ c.treat_symbols_as_metadata_keys_with_true_values = true
22
+ c.filter_run :focus => true
23
+ c.run_all_when_everything_filtered = true
24
+ end
25
+
26
+ def examples_dir
27
+ File.expand_path( '../examples', __FILE__ )
28
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fedux_org-stdlib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -57,10 +57,20 @@ files:
57
57
  - Rakefile
58
58
  - fedux_org-stdlib.gemspec
59
59
  - lib/fedux_org/stdlib.rb
60
- - lib/fedux_org/stdlib/models/base.rb
60
+ - lib/fedux_org/stdlib/command.rb
61
+ - lib/fedux_org/stdlib/command/command_result.rb
62
+ - lib/fedux_org/stdlib/environment.rb
63
+ - lib/fedux_org/stdlib/filesystem.rb
64
+ - lib/fedux_org/stdlib/filesystem/exceptions.rb
65
+ - lib/fedux_org/stdlib/logger.rb
66
+ - lib/fedux_org/stdlib/logging/logger.rb
67
+ - lib/fedux_org/stdlib/models.rb
68
+ - lib/fedux_org/stdlib/models/base_model.rb
61
69
  - lib/fedux_org/stdlib/models/class_based_model.rb
70
+ - lib/fedux_org/stdlib/models/exceptions.rb
62
71
  - lib/fedux_org/stdlib/models/filesystem_based_model.rb
63
72
  - lib/fedux_org/stdlib/version.rb
73
+ - spec/spec_helper.rb
64
74
  homepage: ''
65
75
  licenses:
66
76
  - MIT
@@ -86,5 +96,6 @@ rubygems_version: 1.8.23
86
96
  signing_key:
87
97
  specification_version: 3
88
98
  summary: collection of use full libraries
89
- test_files: []
99
+ test_files:
100
+ - spec/spec_helper.rb
90
101
  has_rdoc: