folders_renamer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 94c89764399019805661dbecb62dcb58d68a6e69
4
+ data.tar.gz: e72d85dcdac29879d7c7a4246bbf47f02a74dba7
5
+ SHA512:
6
+ metadata.gz: 5ad522da0a7d5b95fa86fcaba9c1b768cd88f0041e4b056847b8a332ab23dbc08a62624b295565f4be329833a1dfca6ddd2b4105f42ede11b9f18a771cc3a586
7
+ data.tar.gz: 4e03ad14a7e33f457cb7322f3b39d226df093c0d5b8051b36f613d3c4d23953404ac7f125f5eb534ca0ef3070eb4a7f5760f62659f17bf1ebca0c15eae48cb2e
data/.gitignore ADDED
@@ -0,0 +1,20 @@
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
+ # Custom generated files
19
+ testbed
20
+ TESTBED
data/.rubocop.yml ADDED
@@ -0,0 +1,96 @@
1
+ AllCops:
2
+ Include:
3
+ - Gemfile
4
+ - Rakefile
5
+ - bin/*
6
+ - folders_renamer.gemspec
7
+ - lib/**/*.rb
8
+ - test/**/*.rb
9
+
10
+ # Avoid long parameter lists
11
+ ParameterLists:
12
+ Max: 5
13
+ CountKeywordArgs: true
14
+
15
+ MethodLength:
16
+ CountComments: false
17
+ Max: 15
18
+
19
+ # Avoid more than `Max` levels of nesting.
20
+ BlockNesting:
21
+ Max: 4
22
+
23
+ # Align with the style guide.
24
+ CollectionMethods:
25
+ PreferredMethods:
26
+ collect: 'map'
27
+ inject: 'reduce'
28
+ find: 'detect'
29
+ find_all: 'select'
30
+
31
+ # Do not force public/protected/private keyword to be indented at the same
32
+ # level as the def keyword. My personal preference is to outdent these keywords
33
+ # because I think when scanning code it makes it easier to identify the
34
+ # sections of code and visually separate them. When the keyword is at the same
35
+ # level I think it sort of blends in with the def keywords and makes it harder
36
+ # to scan the code and see where the sections are.
37
+ AccessModifierIndentation:
38
+ Enabled: false
39
+
40
+ # Limit line length
41
+ LineLength:
42
+ Enabled: false
43
+
44
+ # Disable documentation checking until a class needs to be documented once
45
+ Documentation:
46
+ Enabled: false
47
+
48
+ # Enforce Ruby 1.8-compatible hash syntax
49
+ HashSyntax:
50
+ Enabled: true
51
+
52
+ # No spaces inside hash literals
53
+ SpaceInsideHashLiteralBraces:
54
+ EnforcedStyle: no_space
55
+
56
+ # Allow dots at the end of lines
57
+ DotPosition:
58
+ Enabled: false
59
+
60
+ # Don't require magic comment at the top of every file
61
+ Encoding:
62
+ Enabled: false
63
+
64
+ # Enforce outdenting of access modifiers (i.e. public, private, protected)
65
+ AccessModifierIndentation:
66
+ EnforcedStyle: outdent
67
+
68
+ EmptyLinesAroundAccessModifier:
69
+ Enabled: true
70
+
71
+ # Align ends correctly
72
+ EndAlignment:
73
+ AlignWith: variable
74
+
75
+ # Indentation of when/else
76
+ CaseIndentation:
77
+ IndentWhenRelativeTo: end
78
+ IndentOneStep: false
79
+
80
+ DoubleNegation:
81
+ Enabled: false
82
+
83
+ PercentLiteralDelimiters:
84
+ PreferredDelimiters:
85
+ '%': ()
86
+ '%i': ()
87
+ '%q': ()
88
+ '%Q': ()
89
+ '%r': '{}'
90
+ '%s': ()
91
+ '%w': '[]'
92
+ '%W': '[]'
93
+ '%x': ()
94
+
95
+ StringLiterals:
96
+ EnforcedStyle: double_quotes
data/CHANGELOG.md ADDED
@@ -0,0 +1,4 @@
1
+ ## Changelogs
2
+
3
+ ### 0.1.0
4
+ * Initial release
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in valid_filename.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Burin Choomnuan
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,79 @@
1
+ ## folders_renamer
2
+
3
+ [![Dependency Status](https://gemnasium.com/agilecreativity/folders_renamer.png)][gemnasium]
4
+ [![Code Climate](https://codeclimate.com/github/agilecreativity/folders_renamer.png)][codeclimate]
5
+ [![Build Status](https://secure.travis-ci.org/agilecreativity/folders_renamer.png)][travis-ci]
6
+ [![Coverage Status](https://secure.travis-ci.org/agilecreativity/folders_renamer.png)][coveralls]
7
+
8
+ [gem]: http://badge.fury.io/rb/folders_renamer
9
+ [gemnasium]: https://gemnasium.com/agilecreativity/folders_renamer
10
+ [codeclimate]: https://codeclimate.com/github/agilecreativity/folders_renamer
11
+ [travis-ci]: http://travis-ci.org/agilecreativity/folders_renamer
12
+ [coveralls]: https://coveralls.io/r/agilecreativity/folders_renamer
13
+
14
+ Rename/cleanup folder names using the simple rules. For optimal result you may like
15
+ also like to try my [filename_cleaner][] gem which clean/rename the bad file names.
16
+
17
+ Features
18
+ ========
19
+
20
+ - Rename directory recursively from any starting location
21
+ - Replace unwanted characters with value of your choice using `--sep-string` option (default to . (dot))
22
+ - Following the [Semantic Versioning][] for release schedule
23
+ - Quickly rename bad folder names to good folder names with one command.
24
+
25
+ e.g. turn these directories (if your OS allow you to have these names)
26
+
27
+ ```
28
+ some_folder/
29
+ ├── aa!@#$!01
30
+ │   └── bb#@#$@#$@01
31
+ ├── aa**#$@#$#@$aa
32
+    └── bb$@#$#@$@#bb
33
+     └── cc#$!#$@#cc!!!
34
+ ```
35
+
36
+ into these directories
37
+
38
+ ```
39
+ some_folder/
40
+ ├── aa_01
41
+ │   └── bb_01
42
+ ├── aa_aa
43
+    └── bb_bb
44
+     └── cc_cc
45
+ ```
46
+
47
+ ### Installation
48
+
49
+ ```sh
50
+ gem install folders_renamer
51
+ ```
52
+
53
+ ### Usage/Synopsis
54
+
55
+ Type the `folders_rename` without any options to get the help which should be something like:
56
+
57
+ ```
58
+ Usage:
59
+ folders_renamer rename -b, --base-dir=BASE_DIR -s, --sep-string=SEP_STRING
60
+
61
+ Options:
62
+ -b, --base-dir=BASE_DIR # Starting directory
63
+ # Default: . (current directory)
64
+ -s, --sep-string=SEP_STRING # Separtor string to use
65
+ # Default: .
66
+ -v, [--version=VERSION] # Display version number
67
+
68
+ Cleanup and rename folders
69
+ ```
70
+ ### Contributing
71
+
72
+ 1. Fork it
73
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
74
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
75
+ 4. Push to the branch (`git push origin my-new-feature`)
76
+ 5. Create new Pull Request
77
+
78
+ [Semantic Versioning]: http://semver.org
79
+ [filename_cleaner]: http://rubygems.org/gems/filename_cleaner
data/Rakefile ADDED
@@ -0,0 +1,29 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+ project_name = "folders_renamer"
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.libs << "lib/#{project_name}"
7
+ t.test_files = FileList["test/lib/#{project_name}/test_*.rb"]
8
+ t.verbose = true
9
+ end
10
+
11
+ task default: [:test, :rubocop]
12
+ task :pry do
13
+ require "pry"
14
+ require "awesome_print"
15
+ require_relative "lib/folders_renamer"
16
+ include FoldersRenamer
17
+ ARGV.clear
18
+ Pry.start
19
+ end
20
+
21
+ require "rubocop/rake_task"
22
+ desc "Run RuboCop on the lib directory"
23
+ Rubocop::RakeTask.new(:rubocop) do |task|
24
+ task.patterns = ["lib/**/*.rb"]
25
+ # only show the files with failures
26
+ task.formatters = ["files"]
27
+ # don't abort rake on failure
28
+ task.fail_on_error = false
29
+ end
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative "../lib/folders_renamer"
3
+ include FoldersRenamer
4
+ FoldersRenamer::CLI.start(ARGV)
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "folders_renamer/version"
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "folders_renamer"
7
+ spec.version = FoldersRenamer::VERSION
8
+ spec.authors = ["Burin Choomnuan"]
9
+ spec.email = ["agilecreativity@gmail.com"]
10
+ spec.summary = %q{Bulk cleanup/rename folders using with your choice of string (dash, dot, underscore, etc).
11
+ Make the folder consistence and simple to use, work recursively from any directory}
12
+ spec.description = %q{Bulk cleanup/rename folders name that contain special characters with valid string (dash, dot, underscore, etc)}
13
+ spec.homepage = "https://github.com/agilecreativity/folders_renamer"
14
+ spec.license = "MIT"
15
+ spec.files = Dir.glob("{bin,lib}/**/*") + %w[Gemfile
16
+ Rakefile
17
+ folders_renamer.gemspec
18
+ README.md
19
+ CHANGELOG.md
20
+ LICENSE
21
+ .rubocop.yml
22
+ .gitignore]
23
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
24
+ spec.test_files = Dir.glob("{test}/**/*")
25
+ spec.require_paths = ["lib"]
26
+ spec.add_runtime_dependency "thor", "~> 0.19"
27
+ spec.add_runtime_dependency "filename_cleaner", "~> 0.2"
28
+ spec.add_development_dependency "awesome_print", "~> 1.2"
29
+ spec.add_development_dependency "bundler", "~> 1.5"
30
+ spec.add_development_dependency "gem-ctags", "~> 1.0"
31
+ spec.add_development_dependency "guard", "~> 2.6"
32
+ spec.add_development_dependency "guard-minitest", "~> 2.2"
33
+ spec.add_development_dependency "minitest", "~> 5.3"
34
+ spec.add_development_dependency "minitest-spec-context", "~> 0.0.3"
35
+ spec.add_development_dependency "minitest-filesystem"
36
+ spec.add_development_dependency "pry", "~> 0.9"
37
+ spec.add_development_dependency "rake", "~> 10.1"
38
+ spec.add_development_dependency "rubocop", "~> 0.20"
39
+ spec.add_development_dependency "yard", "~> 0.8"
40
+ end
@@ -0,0 +1,54 @@
1
+ require "thor"
2
+ module FoldersRenamer
3
+ class CLI < Thor
4
+ desc "rename", "Cleanup and rename folders"
5
+ method_option "base_dir",
6
+ aliases: "-b",
7
+ desc: "Starting directory",
8
+ default: Dir.pwd,
9
+ required: true
10
+ method_option "sep_string",
11
+ aliases: "-s",
12
+ desc: "Separtor string to use",
13
+ default: ".",
14
+ required: true
15
+ method_option "version",
16
+ aliases: "-v",
17
+ desc: "Display version number"
18
+ def rename
19
+ opts = options.symbolize_keys
20
+ if opts[:version]
21
+ puts "You are using FoldersRenamer version #{FoldersRenamer::VERSION}"
22
+ exit
23
+ end
24
+ puts "Your options #{opts}"
25
+ process(opts)
26
+ end
27
+
28
+ desc "usage", "Display help screen"
29
+ def usage
30
+ puts <<-EOS
31
+ Usage:
32
+ folders_renamer rename -b, --base-dir=BASE_DIR -s, --sep-string=SEP_STRING
33
+
34
+ Options:
35
+ -b, --base-dir=BASE_DIR # Starting directory
36
+ # Default: . (current directory)
37
+ -s, --sep-string=SEP_STRING # Separtor string to use
38
+ # Default: .
39
+ -v, [--version=VERSION] # Display version number
40
+
41
+ Cleanup and rename folders
42
+ EOS
43
+ end
44
+
45
+ default_task :usage
46
+
47
+ private
48
+
49
+ def process(opts = {})
50
+ puts "FYI: your options #{opts}"
51
+ FoldersRenamer.rename(opts[:base_dir], opts[:sep_string])
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,54 @@
1
+ class Hash
2
+ # File activesupport/lib/active_support/core_ext/hash/keys.rb
3
+ #
4
+ # hash = { name: 'Rob', age: '28' }
5
+ # hash.transform_keys{ |key| key.to_s.upcase }
6
+ # => { "NAME" => "Rob", "AGE" => "28" }
7
+ def transform_keys
8
+ result = {}
9
+ each_key do |key|
10
+ result[yield(key)] = self[key]
11
+ end
12
+ result
13
+ end
14
+
15
+ def transform_keys!(&block)
16
+ keys.each do |key|
17
+ value = delete(key)
18
+ self[yield(key)] = value.is_a?(Hash) ? value.transform_keys!(&block) : value
19
+ end
20
+ self
21
+ end
22
+
23
+ # hash = { 'name' => 'Rob', 'age' => '28' }
24
+ # hash.symbolize_keys
25
+ # => { name: "Rob", age: "28" }
26
+ def symbolize_keys
27
+ transform_keys { |key| key.to_sym rescue key }
28
+ end
29
+
30
+ # File activesupport/lib/active_support/core_ext/hash/keys.rb, line 135
31
+ def symbolize_keys!
32
+ transform_keys! { |key| key.to_sym rescue key }
33
+ end
34
+
35
+ # Merges the caller into +other_hash+. For example,
36
+ #
37
+ # options = options.reverse_merge(size: 25, velocity: 10)
38
+ #
39
+ # is equivalent to
40
+ #
41
+ # options = { size: 25, velocity: 10 }.merge(options)
42
+ #
43
+ # This is particularly useful for initializing an options hash
44
+ # with default values.
45
+ def reverse_merge(other_hash)
46
+ other_hash.merge(self)
47
+ end
48
+
49
+ # Destructive +reverse_merge+.
50
+ def reverse_merge!(other_hash)
51
+ # right wins if there is no left
52
+ merge!(other_hash) { |_key, left, _right| left }
53
+ end
54
+ end
@@ -0,0 +1,35 @@
1
+ require "fileutils"
2
+ require "pathname"
3
+ require "filename_cleaner"
4
+ module FoldersRenamer
5
+ CustomError = Class.new(StandardError)
6
+ class << self
7
+ def rename(base_dir = Dir.pwd, sep_string = ".")
8
+ base_dir = File.expand_path(base_dir)
9
+
10
+ unless File.directory?(base_dir) && File.readable?(base_dir)
11
+ fail "#{base_dir} is not a valid directory or not readable!"
12
+ end
13
+
14
+ find_depth_first(Pathname(base_dir)) do |path|
15
+ if path.directory?
16
+ new_path = path.dirname + Pathname(FilenameCleaner.sanitize(path.basename.to_s, sep_string))
17
+ unless new_path == path
18
+ puts "FYI: rename from: #{path}"
19
+ puts "FYI: rename to : #{new_path}"
20
+ path.rename(new_path)
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def find_depth_first(pathname)
29
+ acc = []
30
+ pathname.find { |file| acc << file }
31
+ acc.reverse!
32
+ acc.each { |path| yield path }
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,10 @@
1
+ require "logger"
2
+ module FoldersRenamer
3
+ class << self
4
+ attr_writer :logger
5
+ # @return [Logger] the logger for the project
6
+ def logger
7
+ @logger ||= Logger.new STDOUT
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ module FoldersRenamer
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,6 @@
1
+ require_relative "folders_renamer/version"
2
+ require_relative "folders_renamer/logger"
3
+ require_relative "folders_renamer/folders_renamer"
4
+ require_relative "folders_renamer/cli"
5
+ require_relative "folders_renamer/core_ext/hash/keys"
6
+ include FoldersRenamer
@@ -0,0 +1,35 @@
1
+ require_relative "../../test_helper"
2
+ require "minitest/filesystem"
3
+ require "tmpdir"
4
+ describe FoldersRenamer do
5
+ before :each do
6
+ @tmp_dir = Dir.mktmpdir(%w[foo bar])
7
+ FileUtils.cd @tmp_dir
8
+ FileUtils.mkdir_p "base/aa_!01/bb@02"
9
+ @base_dir = "#{@tmp_dir}/base"
10
+ end
11
+ context "#rename" do
12
+ it "works with default separator string" do
13
+ FileUtils.cd @base_dir
14
+ FoldersRenamer.rename(@base_dir, ".")
15
+ filesystem do
16
+ dir "base" do
17
+ dir "aa.01" do
18
+ dir "bb.02"
19
+ end
20
+ end
21
+ end.must_exist_within File.absolute_path(@tmp_dir)
22
+ end
23
+ it "works with non-default separator string" do
24
+ FileUtils.cd @base_dir
25
+ FoldersRenamer.rename(@base_dir, "_")
26
+ filesystem do
27
+ dir "base" do
28
+ dir "aa_01" do
29
+ dir "bb_02"
30
+ end
31
+ end
32
+ end.must_exist_within File.absolute_path(@tmp_dir)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,8 @@
1
+ require "minitest"
2
+ require "minitest/autorun"
3
+ require "minitest/pride"
4
+ require "minitest-spec-context"
5
+ require "pry"
6
+ require "awesome_print"
7
+ require_relative "../lib/folders_renamer"
8
+ include FoldersRenamer
metadata ADDED
@@ -0,0 +1,264 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: folders_renamer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Burin Choomnuan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.19'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.19'
27
+ - !ruby/object:Gem::Dependency
28
+ name: filename_cleaner
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: awesome_print
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.5'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: gem-ctags
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.6'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.6'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard-minitest
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: minitest
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '5.3'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '5.3'
125
+ - !ruby/object:Gem::Dependency
126
+ name: minitest-spec-context
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.0.3
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.0.3
139
+ - !ruby/object:Gem::Dependency
140
+ name: minitest-filesystem
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: pry
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.9'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.9'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '10.1'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '10.1'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.20'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '0.20'
195
+ - !ruby/object:Gem::Dependency
196
+ name: yard
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '0.8'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '0.8'
209
+ description: Bulk cleanup/rename folders name that contain special characters with
210
+ valid string (dash, dot, underscore, etc)
211
+ email:
212
+ - agilecreativity@gmail.com
213
+ executables:
214
+ - folders_renamer
215
+ extensions: []
216
+ extra_rdoc_files: []
217
+ files:
218
+ - ".gitignore"
219
+ - ".rubocop.yml"
220
+ - CHANGELOG.md
221
+ - Gemfile
222
+ - LICENSE
223
+ - README.md
224
+ - Rakefile
225
+ - bin/folders_renamer
226
+ - folders_renamer.gemspec
227
+ - lib/folders_renamer.rb
228
+ - lib/folders_renamer/cli.rb
229
+ - lib/folders_renamer/core_ext/hash/keys.rb
230
+ - lib/folders_renamer/folders_renamer.rb
231
+ - lib/folders_renamer/logger.rb
232
+ - lib/folders_renamer/version.rb
233
+ - test/lib/folders_renamer/test_folders_renamer.rb
234
+ - test/test_helper.rb
235
+ homepage: https://github.com/agilecreativity/folders_renamer
236
+ licenses:
237
+ - MIT
238
+ metadata: {}
239
+ post_install_message:
240
+ rdoc_options: []
241
+ require_paths:
242
+ - lib
243
+ required_ruby_version: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - ">="
246
+ - !ruby/object:Gem::Version
247
+ version: '0'
248
+ required_rubygems_version: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
253
+ requirements: []
254
+ rubyforge_project:
255
+ rubygems_version: 2.2.2
256
+ signing_key:
257
+ specification_version: 4
258
+ summary: Bulk cleanup/rename folders using with your choice of string (dash, dot,
259
+ underscore, etc). Make the folder consistence and simple to use, work recursively
260
+ from any directory
261
+ test_files:
262
+ - test/lib/folders_renamer/test_folders_renamer.rb
263
+ - test/test_helper.rb
264
+ has_rdoc: