file_utils 1.0.0

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.
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .DS_Store
@@ -0,0 +1 @@
1
+ file_utils
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Remove rake task
5
+ 2. Add existing rake tasks
6
+ To add existing rake tasks automatically delete this file and reload the project.
7
+ --><RakeGroup description="" fullCmd="" taksId="rake" /></Settings>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="CssXFireSettings">
4
+ <general autoClear="false" autoExpand="false" />
5
+ <strategy useRoutes="false" mediaReduce="false" fileReduce="false" currentDocumentsReduce="false" resolveVariables="true" resolveMixins="true" />
6
+ <routes />
7
+ </component>
8
+ </project>
9
+
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
4
+ </project>
5
+
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$" />
5
+ <orderEntry type="inheritedJdk" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v1.1.3, RVM: ruby-1.9.3-p194 [file_utils]) [gem]" level="application" />
8
+ <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.1.3, RVM: ruby-1.9.3-p194 [file_utils]) [gem]" level="application" />
9
+ <orderEntry type="library" scope="PROVIDED" name="metaclass (v0.0.1, RVM: ruby-1.9.3-p194 [file_utils]) [gem]" level="application" />
10
+ <orderEntry type="library" scope="PROVIDED" name="mocha (v0.10.3, RVM: ruby-1.9.3-p194 [file_utils]) [gem]" level="application" />
11
+ <orderEntry type="library" scope="PROVIDED" name="rspec (v2.9.0, RVM: ruby-1.9.3-p194 [file_utils]) [gem]" level="application" />
12
+ <orderEntry type="library" scope="PROVIDED" name="rspec-core (v2.9.0, RVM: ruby-1.9.3-p194 [file_utils]) [gem]" level="application" />
13
+ <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v2.9.1, RVM: ruby-1.9.3-p194 [file_utils]) [gem]" level="application" />
14
+ <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v2.9.0, RVM: ruby-1.9.3-p194 [file_utils]) [gem]" level="application" />
15
+ </component>
16
+ </module>
17
+
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-1.9.3-p194 [file_utils]" project-jdk-type="RUBY_SDK" />
4
+ </project>
5
+
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/file_utils.iml" filepath="$PROJECT_DIR$/.idea/file_utils.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
9
+
@@ -0,0 +1,5 @@
1
+ <component name="DependencyValidationManager">
2
+ <state>
3
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
4
+ </state>
5
+ </component>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
7
+
@@ -0,0 +1,242 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="5aea4d68-4507-4177-a112-c280e0c8edfa" name="Default" comment="">
5
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
6
+ </list>
7
+ <ignored path="file_utils.iws" />
8
+ <ignored path=".idea/workspace.xml" />
9
+ <option name="TRACKING_ENABLED" value="true" />
10
+ <option name="SHOW_DIALOG" value="false" />
11
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
12
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
13
+ <option name="LAST_RESOLUTION" value="IGNORE" />
14
+ </component>
15
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
16
+ <component name="CreatePatchCommitExecutor">
17
+ <option name="PATCH_PATH" value="" />
18
+ </component>
19
+ <component name="DaemonCodeAnalyzer">
20
+ <disable_hints />
21
+ </component>
22
+ <component name="FavoritesManager">
23
+ <favorites_list name="file_utils" />
24
+ </component>
25
+ <component name="FileEditorManager">
26
+ <leaf>
27
+ <file leaf-file-name=".rvmrc" pinned="false" current="false" current-in-tab="false">
28
+ <entry file="file://$PROJECT_DIR$/.rvmrc">
29
+ <provider selected="true" editor-type-id="text-editor">
30
+ <state line="3" column="27" selection-start="81" selection-end="81" vertical-scroll-proportion="0.0">
31
+ <folding />
32
+ </state>
33
+ </provider>
34
+ </entry>
35
+ </file>
36
+ <file leaf-file-name="Rakefile" pinned="false" current="true" current-in-tab="true">
37
+ <entry file="file://$PROJECT_DIR$/Rakefile">
38
+ <provider selected="true" editor-type-id="text-editor">
39
+ <state line="29" column="6" selection-start="489" selection-end="489" vertical-scroll-proportion="0.5899358">
40
+ <folding />
41
+ </state>
42
+ </provider>
43
+ </entry>
44
+ </file>
45
+ </leaf>
46
+ </component>
47
+ <component name="Git.Settings">
48
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
49
+ </component>
50
+ <component name="IdeDocumentHistory">
51
+ <option name="changedFiles">
52
+ <list>
53
+ <option value="$PROJECT_DIR$/.rvmrc" />
54
+ <option value="$PROJECT_DIR$/Rakefile" />
55
+ </list>
56
+ </option>
57
+ </component>
58
+ <component name="ProjectFrameBounds">
59
+ <option name="x" value="516" />
60
+ <option name="y" value="37" />
61
+ <option name="width" value="1588" />
62
+ <option name="height" value="1058" />
63
+ </component>
64
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
65
+ <OptionsSetting value="true" id="Add" />
66
+ <OptionsSetting value="true" id="Remove" />
67
+ <OptionsSetting value="true" id="Checkout" />
68
+ <OptionsSetting value="true" id="Update" />
69
+ <OptionsSetting value="true" id="Status" />
70
+ <OptionsSetting value="true" id="Edit" />
71
+ <ConfirmationsSetting value="0" id="Add" />
72
+ <ConfirmationsSetting value="0" id="Remove" />
73
+ </component>
74
+ <component name="ProjectReloadState">
75
+ <option name="STATE" value="0" />
76
+ </component>
77
+ <component name="ProjectView">
78
+ <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
79
+ <flattenPackages />
80
+ <showMembers />
81
+ <showModules />
82
+ <showLibraryContents />
83
+ <hideEmptyPackages />
84
+ <abbreviatePackageNames />
85
+ <autoscrollToSource />
86
+ <autoscrollFromSource />
87
+ <sortByType />
88
+ </navigator>
89
+ <panes>
90
+ <pane id="ProjectPane">
91
+ <subPane>
92
+ <PATH>
93
+ <PATH_ELEMENT>
94
+ <option name="myItemId" value="file_utils" />
95
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
96
+ </PATH_ELEMENT>
97
+ </PATH>
98
+ <PATH>
99
+ <PATH_ELEMENT>
100
+ <option name="myItemId" value="file_utils" />
101
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
102
+ </PATH_ELEMENT>
103
+ <PATH_ELEMENT>
104
+ <option name="myItemId" value="file_utils" />
105
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
106
+ </PATH_ELEMENT>
107
+ </PATH>
108
+ <PATH>
109
+ <PATH_ELEMENT>
110
+ <option name="myItemId" value="file_utils" />
111
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
112
+ </PATH_ELEMENT>
113
+ <PATH_ELEMENT>
114
+ <option name="myItemId" value="file_utils" />
115
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
116
+ </PATH_ELEMENT>
117
+ <PATH_ELEMENT>
118
+ <option name="myItemId" value="lib" />
119
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
120
+ </PATH_ELEMENT>
121
+ <PATH_ELEMENT>
122
+ <option name="myItemId" value="file_utils" />
123
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
124
+ </PATH_ELEMENT>
125
+ </PATH>
126
+ </subPane>
127
+ </pane>
128
+ <pane id="Scope" />
129
+ </panes>
130
+ </component>
131
+ <component name="RunManager">
132
+ <list size="0" />
133
+ <recent_temporary>
134
+ <list size="0" />
135
+ </recent_temporary>
136
+ </component>
137
+ <component name="ShelveChangesManager" show_recycled="false" />
138
+ <component name="ToolWindowManager">
139
+ <frame x="516" y="37" width="1588" height="1058" extended-state="0" />
140
+ <editor active="true" />
141
+ <layout>
142
+ <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
143
+ <window_info id="CSS-X-Fire" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
144
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
145
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
146
+ <window_info id="jenkinsBrowser" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
147
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25" sideWeight="0.67013526" order="0" side_tool="false" content_ui="combo" />
148
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
149
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
150
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
151
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
152
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
153
+ <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
154
+ <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
155
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
156
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
157
+ <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3298647" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
158
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
159
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
160
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
161
+ </layout>
162
+ </component>
163
+ <component name="VcsContentAnnotationSettings">
164
+ <option name="myLimit" value="2678400000" />
165
+ </component>
166
+ <component name="VcsManagerConfiguration">
167
+ <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
168
+ <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
169
+ <option name="CHECK_NEW_TODO" value="true" />
170
+ <option name="myTodoPanelSettings">
171
+ <value>
172
+ <are-packages-shown value="false" />
173
+ <are-modules-shown value="false" />
174
+ <flatten-packages value="false" />
175
+ <is-autoscroll-to-source value="false" />
176
+ </value>
177
+ </option>
178
+ <option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
179
+ <option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
180
+ <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
181
+ <option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
182
+ <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
183
+ <option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
184
+ <option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" />
185
+ <option name="ENABLE_BACKGROUND_PROCESSES" value="false" />
186
+ <option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
187
+ <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
188
+ <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
189
+ <option name="DEFAULT_PATCH_EXTENSION" value="patch" />
190
+ <option name="SHORT_DIFF_HORISONTALLY" value="true" />
191
+ <option name="SHORT_DIFF_EXTRA_LINES" value="2" />
192
+ <option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
193
+ <option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
194
+ <option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
195
+ <option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
196
+ <option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
197
+ <option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" />
198
+ <option name="CHANGE_DETAILS_ON" value="false" />
199
+ <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
200
+ <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
201
+ <option name="LAST_COMMIT_MESSAGE" />
202
+ <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="false" />
203
+ <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
204
+ <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
205
+ <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
206
+ <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
207
+ <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
208
+ <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
209
+ <option name="ACTIVE_VCS_NAME" />
210
+ <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
211
+ <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
212
+ <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
213
+ <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
214
+ </component>
215
+ <component name="XDebuggerManager">
216
+ <breakpoint-manager />
217
+ </component>
218
+ <component name="editorHistoryManager">
219
+ <entry file="file://$PROJECT_DIR$/.rvmrc">
220
+ <provider selected="true" editor-type-id="text-editor">
221
+ <state line="3" column="27" selection-start="81" selection-end="81" vertical-scroll-proportion="0.0">
222
+ <folding />
223
+ </state>
224
+ </provider>
225
+ </entry>
226
+ <entry file="file://$PROJECT_DIR$/.rvmrc">
227
+ <provider selected="true" editor-type-id="text-editor">
228
+ <state line="3" column="27" selection-start="81" selection-end="81" vertical-scroll-proportion="0.0">
229
+ <folding />
230
+ </state>
231
+ </provider>
232
+ </entry>
233
+ <entry file="file://$PROJECT_DIR$/Rakefile">
234
+ <provider selected="true" editor-type-id="text-editor">
235
+ <state line="29" column="6" selection-start="489" selection-end="489" vertical-scroll-proportion="0.5899358">
236
+ <folding />
237
+ </state>
238
+ </provider>
239
+ </entry>
240
+ </component>
241
+ </project>
242
+
data/.rvmrc ADDED
@@ -0,0 +1,4 @@
1
+ rvm_gemset_create_on_use_flag=1
2
+ rvm_pretty_print_flag=1
3
+
4
+ rvm use 1.9.3@file_utils
data/CHANGES ADDED
@@ -0,0 +1,5 @@
1
+ = File Utils Changelog
2
+
3
+ == Version 1.0.0
4
+
5
+ * Initial release.
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source :rubygems
2
+
3
+ group :default do
4
+ end
5
+
6
+ group :test do
7
+ gem "rspec", "2.9.0"
8
+ gem "mocha", "0.10.3"
9
+ end
@@ -0,0 +1,4 @@
1
+ File Utils
2
+ ==========
3
+
4
+ Collection of methods to work with files and directories
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env rake
2
+
3
+ $LOAD_PATH.unshift File.expand_path("lib", File.dirname(__FILE__))
4
+
5
+ require "rspec/core/rake_task"
6
+ require "file_utils/version"
7
+
8
+ def version
9
+ FileUtils::VERSION
10
+ end
11
+
12
+ def project_name
13
+ File.basename(Dir.pwd)
14
+ end
15
+
16
+ task :build do
17
+ system "gem build #{project_name}.gemspec"
18
+ end
19
+
20
+ task :release => :build do
21
+ system "gem push #{project_name}-#{version}.gem"
22
+ end
23
+
24
+ RSpec::Core::RakeTask.new do |task|
25
+ task.pattern = 'spec/**/*_spec.rb'
26
+ task.verbose = false
27
+ end
28
+
29
+
@@ -0,0 +1,18 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + '/lib/file_utils/version')
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "file_utils"
7
+ spec.summary = %q{Collection of methods to work with files and directories}
8
+ spec.description = %q{Collection of methods to work with files and directories}
9
+ spec.email = "alexander.shvets@gmail.com"
10
+ spec.authors = ["Alexander Shvets"]
11
+ spec.homepage = "http://github.com/shvets/file_utils"
12
+
13
+ spec.files = `git ls-files`.split($\)
14
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
+ spec.require_paths = ["lib"]
16
+ spec.version = FileUtils::VERSION
17
+ end
18
+
@@ -0,0 +1,57 @@
1
+ class DirectoryScanner
2
+ def scan dir, includes, excludes
3
+ files = []
4
+
5
+ scan_with_files dir, Array(includes), Array(excludes), files
6
+
7
+ normalize(files, dir)
8
+ end
9
+
10
+ private
11
+
12
+ def scan_with_files dir, includes, excludes, files
13
+ Dir.new(dir).each do |file_name|
14
+ if file_name != '.' and file_name != '..'
15
+ full_name = dir + '/' + file_name
16
+
17
+ if File.directory? full_name
18
+ if check_name(full_name, includes, excludes)
19
+ files << full_name
20
+ scan_with_files(full_name, includes, excludes, files)
21
+ end
22
+ else # file
23
+ if check_name(full_name, includes, excludes)
24
+ files << full_name
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ def check_name name, includes, excludes
32
+ if includes.empty? and excludes.empty?
33
+ true
34
+ elsif includes.empty?
35
+ true unless match?(name, excludes)
36
+ elsif excludes.empty?
37
+ true if match?(name, includes)
38
+ else
39
+ true if match?(name, includes) and not match?(name, excludes)
40
+ end
41
+ end
42
+
43
+ def normalize list, dir
44
+ list.each_with_index do |name, index|
45
+ list[index] = name[dir.length+1..-1]
46
+ end
47
+ end
48
+
49
+ def match? name, list
50
+ list.each do |pattern|
51
+ return true if File.fnmatch(pattern, name) or name =~ /#{pattern}/
52
+ end
53
+
54
+ false
55
+ end
56
+
57
+ end
@@ -0,0 +1,53 @@
1
+ module FileUtils
2
+ def process_dir dir, &code
3
+ Dir.foreach(dir) do |entry_name|
4
+ next if entry_name == '.' or entry_name == '..'
5
+
6
+ code.call(entry_name)
7
+ end
8
+ end
9
+
10
+ def substitute_vars file_name
11
+ template = ERB.new read_file(file_name)
12
+
13
+ template.result(binding)
14
+ end
15
+
16
+ def write_to_file from, to
17
+ File.open(to, "w") do |file|
18
+ file.write(read_file(from))
19
+ end
20
+ end
21
+
22
+ def write_content_to_file content, to
23
+ File.open(to, "w") do |file|
24
+ file.write(content)
25
+ end
26
+ end
27
+
28
+ def read_file file_name
29
+ File.open(file_name).read
30
+ end
31
+
32
+ def create_directory dir
33
+ FileUtils.mkdir_p dir unless File.exist? dir
34
+ end
35
+
36
+ def delete_directory dir
37
+ FileUtils.rm_rf dir
38
+ end
39
+
40
+ def pattern_to_files dir, pattern
41
+ Dir.glob("#{dir}/#{pattern}")
42
+ end
43
+
44
+ def copy_files from_dir, to_dir, pattern
45
+ create_directory to_dir
46
+
47
+ files = pattern_to_files from_dir, pattern
48
+
49
+ FileUtils.cp_r files, to_dir
50
+ end
51
+
52
+ end
53
+
@@ -0,0 +1,3 @@
1
+ module FileUtils
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ require 'directory_scanner'
4
+
5
+ class FileUtilsTest
6
+ include FileUtils
7
+ end
8
+
9
+ describe DirectoryScanner do
10
+
11
+ it "should return files in particular dir" do
12
+ result = subject.scan "config"
13
+
14
+ result.should include "config/environments/development.rb"
15
+ end
16
+
17
+ it "should apply 'includes' filter" do
18
+ result = subject.scan "config", :includes => ".yml"
19
+
20
+ result.should include "config/database.yml"
21
+ end
22
+
23
+ it "should apply 'excludes' filter" do
24
+ result = subject.scan "config", :excludes => ".yml"
25
+
26
+ result.should_not include "config/database.yml"
27
+ end
28
+
29
+ end
@@ -0,0 +1 @@
1
+ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: file_utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Alexander Shvets
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-08 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Collection of methods to work with files and directories
15
+ email: alexander.shvets@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - .gitignore
21
+ - .idea/.name
22
+ - .idea/.rakeTasks
23
+ - .idea/cssxfire.xml
24
+ - .idea/encodings.xml
25
+ - .idea/file_utils.iml
26
+ - .idea/misc.xml
27
+ - .idea/modules.xml
28
+ - .idea/scopes/scope_settings.xml
29
+ - .idea/vcs.xml
30
+ - .idea/workspace.xml
31
+ - .rvmrc
32
+ - CHANGES
33
+ - Gemfile
34
+ - Gemfile.lock
35
+ - README.md
36
+ - Rakefile
37
+ - file_utils.gemspec
38
+ - lib/file_utils/directory_scanner.rb
39
+ - lib/file_utils/file_utils.rb
40
+ - lib/file_utils/version.rb
41
+ - spec/directory_scanner_spec.rb
42
+ - spec/spec_helper.rb
43
+ homepage: http://github.com/shvets/file_utils
44
+ licenses: []
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 1.8.23
64
+ signing_key:
65
+ specification_version: 3
66
+ summary: Collection of methods to work with files and directories
67
+ test_files:
68
+ - spec/directory_scanner_spec.rb
69
+ - spec/spec_helper.rb