github_copier 0.2.0 → 0.2.1
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +0 -1
- data/github_copier.gemspec +0 -1
- data/lib/github_copier.rb +1 -1
- data/lib/github_copier/filename_cleaner.rb +98 -0
- data/lib/github_copier/version.rb +1 -1
- metadata +3 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b16b343dbdc33c67dfe9f484926b4d0d3bb38c5e
|
4
|
+
data.tar.gz: ecee64e8b27ffc211e19647028524dcbfaa85431
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b33a8e35bae65110d8c50bcc9eeeea95a51e5424377a37b5a5800c0a08545d37e90d70d2e042312f9aa36ab71112ebf9d84492cd094fd0aaab2c21c9e842c6a
|
7
|
+
data.tar.gz: 5533a912dd20f3ad557bcc7654b91e5dc49f9919d086a0cdf71dffb021c13349630a455db5f66cf457af738da1bb3017537cec300581e885466911273e70e83b
|
data/CHANGELOG.md
CHANGED
@@ -5,7 +5,12 @@
|
|
5
5
|
- Initial release
|
6
6
|
|
7
7
|
#### 0.2.0
|
8
|
+
|
8
9
|
- Add option to group output by language by default
|
9
10
|
- Show list of repositories in the dry-run mode (--no-clone) option
|
10
11
|
- Improve the gemspec to add more context for the user
|
11
12
|
- Add some example to default option when the user type no argument
|
13
|
+
|
14
|
+
#### 0.2.1
|
15
|
+
|
16
|
+
- Remove the need from `filename_cleaner` and use it locally
|
data/README.md
CHANGED
@@ -179,7 +179,6 @@ Process 1 of 1 : git clone git@github.com:littlebee/got.git /Users/bchoomnuan/De
|
|
179
179
|
|
180
180
|
- Replace system call with the ruby library like [grit](https://github.com/mojombo/grit) or something similar
|
181
181
|
- Allow the `https` when performing the clone
|
182
|
-
- Implement the `FilenameCleaner.sanitize()` locally
|
183
182
|
|
184
183
|
### Related Projects
|
185
184
|
|
data/github_copier.gemspec
CHANGED
@@ -28,7 +28,6 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.require_paths = ['lib']
|
29
29
|
|
30
30
|
spec.add_runtime_dependency 'github_api', '~> 0.13'
|
31
|
-
spec.add_runtime_dependency 'filename_cleaner', '~> 0.4'
|
32
31
|
|
33
32
|
spec.add_development_dependency 'awesome_print', '~> 1.6'
|
34
33
|
spec.add_development_dependency 'bundler', '~> 1.10'
|
data/lib/github_copier.rb
CHANGED
@@ -0,0 +1,98 @@
|
|
1
|
+
module FilenameCleaner
|
2
|
+
DOT = "."
|
3
|
+
class << self
|
4
|
+
# Sanitize the any name with or without extension
|
5
|
+
#
|
6
|
+
# @param [String] name the input string
|
7
|
+
# @param [String] sep_char the separator char to be used
|
8
|
+
# @param [Boolean] have_extension indicate if the the input file should be
|
9
|
+
# treated as having extension or not having one
|
10
|
+
# @return [String] output string with special chars replaced withe specified string
|
11
|
+
def sanitize(name, sep_char = ".", have_extension = false)
|
12
|
+
if have_extension
|
13
|
+
sanitize_name_with_extension(name, sep_char)
|
14
|
+
else
|
15
|
+
sanitize_name_without_extension(name, sep_char)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Get formatted name for existing file
|
20
|
+
#
|
21
|
+
# @param [String] filename the input filename
|
22
|
+
# @param [Hash<Symbol, Object>] opts the hash value for options to be applied
|
23
|
+
#
|
24
|
+
# @option opts [String] :sep_char The separator string
|
25
|
+
# @option opts [Boolean] :downcase Convert each word to lower case
|
26
|
+
# @option opts [Boolean] :capitalize: Capitalize each word in the name
|
27
|
+
def formatted_name(filename, opts = {})
|
28
|
+
sep_char = opts[:sep_char] || "."
|
29
|
+
sanitized_name = FilenameCleaner.sanitize(filename, sep_char, true)
|
30
|
+
|
31
|
+
# First split the two part so that only name is used!
|
32
|
+
basename = File.basename(sanitized_name, ".*")
|
33
|
+
extname = File.extname(sanitized_name)
|
34
|
+
if opts[:downcase]
|
35
|
+
basename = basename.split(sep_char).map(&:downcase).join(sep_char)
|
36
|
+
end
|
37
|
+
if opts[:capitalize]
|
38
|
+
basename = basename.split(sep_char).map(&:capitalize).join(sep_char)
|
39
|
+
end
|
40
|
+
"#{basename}#{extname}"
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
# Sanitize the any name with or without any extension
|
46
|
+
#
|
47
|
+
# @param [String] name the input string
|
48
|
+
# @param [String] sep_char the separator char to be used
|
49
|
+
# @return [String] output string with special chars replaced withe specified string
|
50
|
+
def sanitize_name_without_extension(name, sep_char = ".")
|
51
|
+
replace_dot(sanitize_with_dot(name), sep_char)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Sanitize filename that works with file with extension
|
55
|
+
#
|
56
|
+
# @param [String] name the input filename with extension
|
57
|
+
# @return [String] the output file with special characters replaced
|
58
|
+
def sanitize_name_with_extension(name, sep_char = ".")
|
59
|
+
extension = File.extname(name)
|
60
|
+
name_only = File.basename(name, ".*")
|
61
|
+
name_only = replace_dot(sanitize_with_dot(name_only), sep_char)
|
62
|
+
"#{name_only}#{extension}"
|
63
|
+
end
|
64
|
+
|
65
|
+
# Replace the multiple special characters with a dot string
|
66
|
+
#
|
67
|
+
# @param [String] input_name input file
|
68
|
+
# @return [String] the new name with special characters replaced or removed.
|
69
|
+
def sanitize_with_dot(input_name)
|
70
|
+
# Don't mutate the input name
|
71
|
+
name = input_name.clone
|
72
|
+
|
73
|
+
# Replace any special characters with a dot
|
74
|
+
name.gsub!(/[^0-9A-Za-z\-_ ]/, DOT)
|
75
|
+
|
76
|
+
# Replace multiple occurrences of a given character with a dot
|
77
|
+
["-", "_", " "].each do |c|
|
78
|
+
name.gsub!(/#{Regexp.quote(c)}+/, DOT)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Replace multiple occurrence of dot with one dot
|
82
|
+
name.gsub!(/#{Regexp.quote(DOT)}+/, DOT)
|
83
|
+
|
84
|
+
# Remove the last char if it is a dot
|
85
|
+
name.gsub!(/\.$/, "") if name[-1] == DOT
|
86
|
+
|
87
|
+
# return the result
|
88
|
+
name
|
89
|
+
end
|
90
|
+
|
91
|
+
# Replace 'dot' string with a given string if specified
|
92
|
+
def replace_dot(string, replace = nil)
|
93
|
+
result = string.clone
|
94
|
+
result.gsub!(/#{Regexp.quote(DOT)}+/, replace) if replace
|
95
|
+
result
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github_copier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Burin Choomnuan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: github_api
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.13'
|
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.4'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0.4'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: awesome_print
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -226,6 +212,7 @@ files:
|
|
226
212
|
- bin/github_copier
|
227
213
|
- github_copier.gemspec
|
228
214
|
- lib/github_copier.rb
|
215
|
+
- lib/github_copier/filename_cleaner.rb
|
229
216
|
- lib/github_copier/github_copier.rb
|
230
217
|
- lib/github_copier/opt_parser.rb
|
231
218
|
- lib/github_copier/version.rb
|