confc 0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 873beac706039c29977ef938c5ff8eb7feb8c0f8b06b6efb1d97c852bf47af39
4
+ data.tar.gz: 1418947b3de04db1a966309e33502e7a8948f97d1deecbaeef60db6704849642
5
+ SHA512:
6
+ metadata.gz: 0a6b944fd9a5d9f1d8ff557604a9ae86e818d2d032d73e6ffa78aa207da82d6c207b1365ab0e56f885ec88e1faff8e707cdd3348ddce7590a6f749514e1f7448
7
+ data.tar.gz: aa149ab5f16cc2e0d059683ae1c972a0440a3d183cb48af3ac03eebab838dd7bf81e204591b4709663ea45754309169a28703e3e6ded8e7cb469a1d0d221aefc
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017 Saran Tanpituckpong
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # ConfC
2
+ [![license](https://img.shields.io/github/license/gluons/ConfC.gem.svg?style=flat-square)](./LICENSE)
3
+ [![Gem](https://img.shields.io/gem/v/confc.svg?style=flat-square)](https://rubygems.org/gems/confc)
4
+ [![Gem](https://img.shields.io/gem/dt/confc.svg?style=flat-square)](https://rubygems.org/gems/confc)
5
+ [![Travis](https://img.shields.io/travis/gluons/ConfC.gem.svg?style=flat-square)](https://travis-ci.org/gluons/ConfC.gem)
6
+
7
+ **Config Clone** — 🆕 Start new project with your default configs.
8
+
9
+ Clone your default configuration files to current working directory.
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ gem install confc
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```
20
+ Usage: confc [options] [filenames...]
21
+
22
+ Clone your default configuration files to current working directory.
23
+ -f, --overwrite Force to overwrite
24
+ -p, --path [PATH] Path to configuration files
25
+ -v, --verbose Display more information
26
+ -V, --version Show version number
27
+ -h, --help Show help
28
+ ```
29
+
30
+ ## Related
31
+
32
+ - [ConfC](https://github.com/gluons/ConfC) - 🆕 Start new project with your default configs. (Node.js version)
data/bin/confc ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'confc'
4
+
5
+ ConfC::CLI.start(ARGV)
data/confc.gemspec ADDED
@@ -0,0 +1,32 @@
1
+ lib = File.expand_path('./lib', File.dirname(__FILE__))
2
+
3
+ $LOAD_PATH.push lib unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'confc/version'
6
+
7
+ DESCRIPTION =
8
+ 'Clone your default configuration files to current working directory.'.freeze
9
+
10
+ Gem::Specification.new do |s|
11
+ s.name = 'confc'
12
+ s.version = ConfC::VERSION
13
+ s.summary = 'Start new project with your default configs.'
14
+ s.description = DESCRIPTION
15
+ s.files = ['confc.gemspec', 'LICENSE', 'Gemfile', 'files.yaml']
16
+ s.files += Dir['*.md', 'bin/*', 'lib/**/*']
17
+ s.executables = ['confc']
18
+ s.required_ruby_version = '>= 2.1.0'
19
+ s.author = 'Saran Tanpituckpong'
20
+ s.license = 'MIT'
21
+ s.homepage = 'https://github.com/gluons/ConfC.gem'
22
+ s.metadata = {
23
+ 'bug_tracker_uri' => 'https://github.com/gluons/ConfC.gem/issues'
24
+ }
25
+
26
+ s.add_runtime_dependency 'rainbow', '~> 2.2', '>= 2.2.2'
27
+
28
+ s.add_development_dependency 'aruba', '~> 0.14.3'
29
+ s.add_development_dependency 'rake', '~> 12.3'
30
+ s.add_development_dependency 'rspec', '~> 3.7'
31
+ s.add_development_dependency 'rubocop', '~> 0.51.0'
32
+ end
data/files.yaml ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+
3
+ - .bowerrc
4
+ - .editorconfig
5
+ - .eslintrc.json
6
+ - .prettierrc
7
+ - coffeelint.json
8
+ - tslint.json
data/lib/confc/cli.rb ADDED
@@ -0,0 +1,81 @@
1
+ require 'optparse'
2
+ require 'rainbow'
3
+
4
+ require_relative 'conf_clone'
5
+ require_relative 'files'
6
+ require_relative 'gethome'
7
+ require_relative 'to_filenames'
8
+ require_relative 'version'
9
+
10
+ # rubocop:disable Layout/IndentHeredoc
11
+ BANNER = <<-BANNER.freeze
12
+ Usage: #{Rainbow('confc').green} [options] [filenames...]
13
+
14
+ Clone your default configuration files to current working directory.
15
+ BANNER
16
+ # rubocop:enable Layout/IndentHeredoc
17
+
18
+ DEFAULT_OPTIONS = {
19
+ files: ConfC.files,
20
+ path: ConfC.gethome,
21
+ overwrite: false,
22
+ verbose: false
23
+ }.freeze
24
+
25
+ AWW = '(。◕‿◕。)'.freeze
26
+
27
+ ##
28
+ # ConfC
29
+ module ConfC
30
+ ##
31
+ # ConfC's CLI class.
32
+ class CLI
33
+ ##
34
+ # Start CLI.
35
+ def self.start(argv)
36
+ options = CLI.parse(argv)
37
+ files = options[:files]
38
+
39
+ confc_options = {
40
+ verbose: options[:verbose],
41
+ overwrite: options[:overwrite]
42
+ }
43
+ confc_result = ConfC.conf_clone(files, options[:path], confc_options)
44
+ puts Rainbow("ConfC completed. #{AWW}").green if confc_result
45
+ end
46
+
47
+ # rubocop:disable Metrics/MethodLength, Metrics/LineLength, Metrics/AbcSize
48
+ ##
49
+ # Parse CLI ARGV.
50
+ def self.parse(argv)
51
+ options = DEFAULT_OPTIONS.dup
52
+
53
+ parser = OptionParser.new do |opts|
54
+ opts.banner = BANNER
55
+
56
+ opts.on('-f', '--overwrite', 'Force to overwrite') do
57
+ options[:overwrite] = true
58
+ end
59
+ opts.on('-p', '--path [PATH]', String, 'Path to configuration files') do |p|
60
+ options[:path] = p
61
+ end
62
+ opts.on('-v', '--verbose', 'Display more information') do
63
+ options[:verbose] = true
64
+ end
65
+ opts.on('-V', '--version', 'Show version number') do
66
+ puts "v#{ConfC::VERSION}"
67
+ exit
68
+ end
69
+ opts.on('-h', '--help', 'Show help') do
70
+ puts opts
71
+ exit
72
+ end
73
+ end
74
+ files = parser.parse(argv)
75
+ options[:files] = ConfC.to_filenames(files) if files.is_a?(Array) && !files.empty?
76
+
77
+ options
78
+ end
79
+ # rubocop:enable Metrics/MethodLength, Metrics/LineLength, Metrics/AbcSize
80
+ end
81
+ end
@@ -0,0 +1,19 @@
1
+ require_relative 'copy'
2
+
3
+ ##
4
+ # ConfC
5
+ module ConfC
6
+ ##
7
+ # Clone given files from given path to current working directory.
8
+ def self.conf_clone(
9
+ files,
10
+ path,
11
+ options = { verbose: false, overwrite: false }
12
+ )
13
+ results = files.map do |file|
14
+ src = File.expand_path(file, path)
15
+ ConfC.copy(src, options)
16
+ end
17
+ results.any? { |result| result } # Return true if any process succeed
18
+ end
19
+ end
data/lib/confc/copy.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'fileutils'
2
+
3
+ require_relative 'display_verbose'
4
+ require_relative 'gethome'
5
+
6
+ ##
7
+ # ConfC
8
+ module ConfC
9
+ ##
10
+ # Copy given file to current working directory.
11
+ def self.copy(src, options = { verbose: false, overwrite: false })
12
+ return false unless File.exist?(src) # Stop if no src file
13
+
14
+ # Stop if dest file exists & prevent overwriting
15
+ src_filename = File.basename(src)
16
+ dest_path = File.expand_path(src_filename, Dir.pwd)
17
+ return false if File.exist?(dest_path) && !options[:overwrite]
18
+
19
+ FileUtils.copy(src, Dir.pwd)
20
+
21
+ # Display verbose
22
+ dest = File.expand_path(src_filename, Dir.pwd)
23
+ ConfC.display_verbose(src, dest) if options[:verbose]
24
+
25
+ true
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ require 'rainbow'
2
+
3
+ ##
4
+ # ConfC
5
+ module ConfC
6
+ ##
7
+ # Display verbose information.
8
+ def self.display_verbose(src, dest)
9
+ verbose = Rainbow('Copied "').green
10
+ verbose += Rainbow(src).cyan
11
+ verbose += Rainbow('" to "').green
12
+ verbose += Rainbow(dest).cyan
13
+ verbose += Rainbow('".').green
14
+
15
+ puts verbose
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ require 'yaml'
2
+
3
+ ##
4
+ # ConfC
5
+ module ConfC
6
+ ##
7
+ # Get list of file to be copied.
8
+ def self.files
9
+ files_path = File.expand_path('../../files.yaml', File.dirname(__FILE__))
10
+ if File.exist?(files_path)
11
+ YAML.load_file(files_path)
12
+ else
13
+ []
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ ##
2
+ # ConfC
3
+ module ConfC
4
+ ##
5
+ # Get user's home directory.
6
+ def self.gethome
7
+ File.expand_path '~'
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ ##
2
+ # ConfC
3
+ module ConfC
4
+ ##
5
+ # Convert all raw file names to base file names.
6
+ def self.to_filenames(raw_filenames)
7
+ if raw_filenames.is_a?(Array) && !raw_filenames.empty?
8
+ raw_filenames.map do |raw_filename|
9
+ File.basename raw_filename
10
+ end
11
+ else
12
+ []
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,3 @@
1
+ module ConfC
2
+ VERSION = '0.0.1'.freeze
3
+ end
data/lib/confc.rb ADDED
@@ -0,0 +1,7 @@
1
+ # Path to ./confc
2
+ confc_lib = File.expand_path('./confc', File.dirname(__FILE__))
3
+
4
+ # All files exclude . and ..
5
+ lib_files = Dir.entries(confc_lib).reject { |f| f =~ /^(\.|\.\.)$/ }
6
+
7
+ lib_files.each { |f| require_relative "confc/#{f}" }
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: confc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Saran Tanpituckpong
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-12-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rainbow
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.2.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.2.2
33
+ - !ruby/object:Gem::Dependency
34
+ name: aruba
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.14.3
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.14.3
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '12.3'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '12.3'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.7'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.7'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubocop
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.51.0
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.51.0
89
+ description: Clone your default configuration files to current working directory.
90
+ email:
91
+ executables:
92
+ - confc
93
+ extensions: []
94
+ extra_rdoc_files: []
95
+ files:
96
+ - Gemfile
97
+ - LICENSE
98
+ - README.md
99
+ - bin/confc
100
+ - confc.gemspec
101
+ - files.yaml
102
+ - lib/confc.rb
103
+ - lib/confc/cli.rb
104
+ - lib/confc/conf_clone.rb
105
+ - lib/confc/copy.rb
106
+ - lib/confc/display_verbose.rb
107
+ - lib/confc/files.rb
108
+ - lib/confc/gethome.rb
109
+ - lib/confc/to_filenames.rb
110
+ - lib/confc/version.rb
111
+ homepage: https://github.com/gluons/ConfC.gem
112
+ licenses:
113
+ - MIT
114
+ metadata:
115
+ bug_tracker_uri: https://github.com/gluons/ConfC.gem/issues
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 2.1.0
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubyforge_project:
132
+ rubygems_version: 2.7.3
133
+ signing_key:
134
+ specification_version: 4
135
+ summary: Start new project with your default configs.
136
+ test_files: []