platina_world 0.1.0 → 0.1.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/lib/platina_world.rb +1 -0
- data/lib/platina_world/command.rb +26 -3
- data/lib/platina_world/errors/base.rb +6 -0
- data/lib/platina_world/errors/file_path_error.rb +15 -0
- data/lib/platina_world/errors/invalid_extension_error.rb +21 -0
- data/lib/platina_world/file_loader.rb +20 -8
- data/lib/platina_world/generators/base.rb +41 -0
- data/lib/platina_world/generators/file.rb +23 -0
- data/lib/platina_world/generators/mock.rb +21 -0
- data/lib/platina_world/logger.rb +7 -0
- data/lib/platina_world/loggers/base.rb +18 -0
- data/lib/platina_world/loggers/file_status.rb +28 -0
- data/lib/platina_world/loggers/logger.rb +24 -0
- data/lib/platina_world/path.rb +2 -2
- data/lib/platina_world/path_builder.rb +3 -3
- data/lib/platina_world/runners/base.rb +29 -0
- data/lib/platina_world/runners/dry.rb +14 -0
- data/lib/platina_world/runners/production.rb +14 -0
- data/lib/platina_world/version.rb +1 -1
- data/sample/simple_sample.json +20 -0
- metadata +16 -4
- data/lib/platina_world/file_generator.rb +0 -38
- data/lib/platina_world/runner.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a58fa49f81c1f28bf2a25221dfad33a4fbf7a3e0
|
4
|
+
data.tar.gz: cdbe1c6cf7ce7b30a1772beb6698cb517b3746ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f70c876bbe5bc5209625ba3709ae2eb298a7abc0cd137c94da322060a67b168aa48fdc9aa93d7422b42637bdd949a921e9b3e3046d3d1d8c33333e712217cc1e
|
7
|
+
data.tar.gz: 200c924738b77a4cddb8eac773ae0901d2d15b532c447c5cf8ae1a7bcb0b4e719ac578b232a4a4d3d7398b9215588ff0ef6f59a7b5340027620f69c244136b9a
|
data/lib/platina_world.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require "optparse"
|
2
|
-
require "platina_world/
|
2
|
+
require "platina_world/runners/dry"
|
3
|
+
require "platina_world/runners/production"
|
4
|
+
require "platina_world/file_loader"
|
3
5
|
|
4
6
|
module PlatinaWorld
|
5
7
|
class Command
|
@@ -14,7 +16,27 @@ module PlatinaWorld
|
|
14
16
|
private
|
15
17
|
|
16
18
|
def runner
|
17
|
-
|
19
|
+
runner_class.new(loaded_file)
|
20
|
+
end
|
21
|
+
|
22
|
+
def runner_class
|
23
|
+
if dry_run?
|
24
|
+
PlatinaWorld::Runners::Dry
|
25
|
+
else
|
26
|
+
PlatinaWorld::Runners::Production
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def loaded_file
|
31
|
+
@loaded_file ||= PlatinaWorld::FileLoader.new(file_path).load
|
32
|
+
end
|
33
|
+
|
34
|
+
def file_path
|
35
|
+
options["path"]
|
36
|
+
end
|
37
|
+
|
38
|
+
def dry_run?
|
39
|
+
options["dry-run"]
|
18
40
|
end
|
19
41
|
|
20
42
|
def options
|
@@ -24,7 +46,8 @@ module PlatinaWorld
|
|
24
46
|
def option_parser
|
25
47
|
@optin_parser ||= OptionParser.new do |opt|
|
26
48
|
opt.version = PlatinaWorld::VERSION
|
27
|
-
opt.on("-p", "--path [file]", "Configuration file path")
|
49
|
+
opt.on("-p", "--path [file]", "Configuration file path")
|
50
|
+
opt.on("-n", "--dry-run", "run in dry-run mode")
|
28
51
|
end
|
29
52
|
end
|
30
53
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "platina_world/errors/base"
|
2
|
+
|
3
|
+
module PlatinaWorld
|
4
|
+
module Errors
|
5
|
+
class InvalidExtensionError < Base
|
6
|
+
def initialize(acceptable_extensions)
|
7
|
+
@acceptable_extensions = acceptable_extensions
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_s
|
11
|
+
"Extension is invalid, please pass type of #{types}"
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def types
|
17
|
+
@acceptable_extensions.join(" or ")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,20 +1,22 @@
|
|
1
1
|
require "yaml"
|
2
|
+
require "platina_world/errors/file_path_error"
|
3
|
+
require "platina_world/errors/invalid_extension_error"
|
2
4
|
|
3
5
|
module PlatinaWorld
|
4
6
|
class FileLoader
|
5
7
|
DEFAULT_FILE_PATH = "./platina_world.yml".freeze
|
6
|
-
|
8
|
+
ACCEPTABLE_EXTENSIONS = %w(.yml .yaml).freeze
|
7
9
|
|
8
|
-
def initialize(file_path
|
10
|
+
def initialize(file_path)
|
9
11
|
@file_path = file_path
|
10
12
|
end
|
11
13
|
|
12
14
|
def load
|
13
15
|
case
|
14
16
|
when !exist_file?
|
15
|
-
|
16
|
-
when !
|
17
|
-
|
17
|
+
PlatinaWorld::Logger.error(file_path_error) and abort
|
18
|
+
when !valid_extension_type?
|
19
|
+
PlatinaWorld::Logger.error(invalid_extion_error) and abort
|
18
20
|
else
|
19
21
|
file_load
|
20
22
|
end
|
@@ -22,7 +24,17 @@ module PlatinaWorld
|
|
22
24
|
|
23
25
|
private
|
24
26
|
|
25
|
-
|
27
|
+
def file_path_error
|
28
|
+
PlatinaWorld::Errors::FilePathError.new(file_path)
|
29
|
+
end
|
30
|
+
|
31
|
+
def invalid_extion_error
|
32
|
+
PlatinaWorld::Errors::InvalidExtensionError.new(ACCEPTABLE_EXTENSIONS)
|
33
|
+
end
|
34
|
+
|
35
|
+
def file_path
|
36
|
+
@file_path ||= DEFAULT_FILE_PATH
|
37
|
+
end
|
26
38
|
|
27
39
|
def file_load
|
28
40
|
YAML.load_file(file_path)
|
@@ -32,8 +44,8 @@ module PlatinaWorld
|
|
32
44
|
File.exist?(file_path)
|
33
45
|
end
|
34
46
|
|
35
|
-
def
|
36
|
-
|
47
|
+
def valid_extension_type?
|
48
|
+
ACCEPTABLE_EXTENSIONS.include?(File.extname(file_path))
|
37
49
|
end
|
38
50
|
end
|
39
51
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module PlatinaWorld
|
2
|
+
module Generators
|
3
|
+
class Base
|
4
|
+
def initialize(paths)
|
5
|
+
@paths = paths
|
6
|
+
end
|
7
|
+
|
8
|
+
def call
|
9
|
+
@paths.each do |path|
|
10
|
+
case
|
11
|
+
when path.directory?
|
12
|
+
generate_directory(path)
|
13
|
+
when path.has_directory?
|
14
|
+
generate_file_with_dir(path)
|
15
|
+
else
|
16
|
+
generate_file(path)
|
17
|
+
end
|
18
|
+
|
19
|
+
PlatinaWorld::FileStatus.info(
|
20
|
+
action: "create",
|
21
|
+
path: path.file_path
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def generate_directory(path)
|
29
|
+
raise NotImplementedError
|
30
|
+
end
|
31
|
+
|
32
|
+
def generate_file(path)
|
33
|
+
raise NotImplementedError
|
34
|
+
end
|
35
|
+
|
36
|
+
def generate_file_with_dir(path)
|
37
|
+
raise NotImplementedError
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "platina_world/generators/base"
|
2
|
+
require "fileutils"
|
3
|
+
|
4
|
+
module PlatinaWorld
|
5
|
+
module Generators
|
6
|
+
class File < Base
|
7
|
+
private
|
8
|
+
|
9
|
+
def generate_directory(path)
|
10
|
+
FileUtils.mkdir_p(path.directory_name)
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate_file(path)
|
14
|
+
FileUtils.touch(path.file_name)
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate_file_with_dir(path)
|
18
|
+
FileUtils.mkdir_p(path.directory_name)
|
19
|
+
FileUtils.touch("#{path.directory_name}/#{path.file_name}")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "platina_world/generators/base"
|
2
|
+
|
3
|
+
module PlatinaWorld
|
4
|
+
module Generators
|
5
|
+
class Mock < Base
|
6
|
+
private
|
7
|
+
|
8
|
+
def generate_directory(path)
|
9
|
+
# noop
|
10
|
+
end
|
11
|
+
|
12
|
+
def generate_file(path)
|
13
|
+
# noop
|
14
|
+
end
|
15
|
+
|
16
|
+
def generate_file_with_dir(path)
|
17
|
+
# noop
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "logger"
|
2
|
+
|
3
|
+
module PlatinaWorld
|
4
|
+
module Loggers
|
5
|
+
class Base < ::Logger
|
6
|
+
def initialize(*)
|
7
|
+
super
|
8
|
+
self.formatter = formatter_class.new
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def formatter_class
|
14
|
+
raise NotImplementedError
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "platina_world/loggers/base"
|
2
|
+
|
3
|
+
module PlatinaWorld
|
4
|
+
module Loggers
|
5
|
+
class FileStatus < Base
|
6
|
+
private
|
7
|
+
|
8
|
+
def formatter_class
|
9
|
+
PlatinaWorld::Loggers::FileFormatter
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class FileFormatter
|
14
|
+
def call(severity, time, program_name, message)
|
15
|
+
file_format(severity) % message
|
16
|
+
end
|
17
|
+
|
18
|
+
def file_format(severity)
|
19
|
+
case severity
|
20
|
+
when "INFO"
|
21
|
+
" \e[32m%{action}\e[0m %{path}\n"
|
22
|
+
when "ERROR"
|
23
|
+
" \e[31m%{action}\e[0m %{path}\n"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "platina_world/loggers/base"
|
2
|
+
|
3
|
+
module PlatinaWorld
|
4
|
+
module Loggers
|
5
|
+
class Logger < Base
|
6
|
+
private
|
7
|
+
|
8
|
+
def formatter_class
|
9
|
+
PlatinaWorld::Loggers::Formatter
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Formatter
|
14
|
+
def call(severity, time, program_name, message)
|
15
|
+
case severity
|
16
|
+
when "INFO"
|
17
|
+
" \e[32m#{message}\n\e[0m"
|
18
|
+
when "ERROR"
|
19
|
+
" \e[31m#{message}\n\e[0m"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/platina_world/path.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module PlatinaWorld
|
2
2
|
class Path
|
3
|
+
attr_reader :file_path
|
4
|
+
|
3
5
|
def initialize(file_path)
|
4
6
|
@file_path = file_path
|
5
7
|
end
|
@@ -22,8 +24,6 @@ module PlatinaWorld
|
|
22
24
|
|
23
25
|
private
|
24
26
|
|
25
|
-
attr_reader :file_path
|
26
|
-
|
27
27
|
# Return file name and dirctory name as Array
|
28
28
|
# @params [String] file path (e.g "a/b/c")
|
29
29
|
# @return [[String, String]] first is file path name and second is directory path name
|
@@ -2,12 +2,12 @@ require "platina_world/path"
|
|
2
2
|
|
3
3
|
module PlatinaWorld
|
4
4
|
class PathBuilder
|
5
|
-
def initialize(
|
6
|
-
@
|
5
|
+
def initialize(loaded_file)
|
6
|
+
@loaded_file = loaded_file
|
7
7
|
end
|
8
8
|
|
9
9
|
def build
|
10
|
-
generate_paths(@
|
10
|
+
generate_paths(@loaded_file).flat_map do |file_path|
|
11
11
|
PlatinaWorld::Path.new(file_path)
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "platina_world/path_builder"
|
2
|
+
|
3
|
+
module PlatinaWorld
|
4
|
+
module Runners
|
5
|
+
class Base
|
6
|
+
def initialize(loaded_file)
|
7
|
+
@loaded_file = loaded_file
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
file_generator.call
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def generator_class
|
17
|
+
raise NotImplementedError
|
18
|
+
end
|
19
|
+
|
20
|
+
def file_generator
|
21
|
+
generator_class.new(paths)
|
22
|
+
end
|
23
|
+
|
24
|
+
def paths
|
25
|
+
@paths ||= PlatinaWorld::PathBuilder.new(@loaded_file).build
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: platina_world
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ganmacs
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -71,14 +71,26 @@ files:
|
|
71
71
|
- bin/setup
|
72
72
|
- lib/platina_world.rb
|
73
73
|
- lib/platina_world/command.rb
|
74
|
-
- lib/platina_world/
|
74
|
+
- lib/platina_world/errors/base.rb
|
75
|
+
- lib/platina_world/errors/file_path_error.rb
|
76
|
+
- lib/platina_world/errors/invalid_extension_error.rb
|
75
77
|
- lib/platina_world/file_loader.rb
|
78
|
+
- lib/platina_world/generators/base.rb
|
79
|
+
- lib/platina_world/generators/file.rb
|
80
|
+
- lib/platina_world/generators/mock.rb
|
81
|
+
- lib/platina_world/logger.rb
|
82
|
+
- lib/platina_world/loggers/base.rb
|
83
|
+
- lib/platina_world/loggers/file_status.rb
|
84
|
+
- lib/platina_world/loggers/logger.rb
|
76
85
|
- lib/platina_world/path.rb
|
77
86
|
- lib/platina_world/path_builder.rb
|
78
|
-
- lib/platina_world/
|
87
|
+
- lib/platina_world/runners/base.rb
|
88
|
+
- lib/platina_world/runners/dry.rb
|
89
|
+
- lib/platina_world/runners/production.rb
|
79
90
|
- lib/platina_world/version.rb
|
80
91
|
- platinaworld.gemspec
|
81
92
|
- sample/ruby_world_sample.yml
|
93
|
+
- sample/simple_sample.json
|
82
94
|
- sample/simple_sample.yml
|
83
95
|
homepage: https://github.com/ganmacs/platina_world
|
84
96
|
licenses: []
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require "platina_world/path_builder"
|
2
|
-
require "fileutils"
|
3
|
-
|
4
|
-
module PlatinaWorld
|
5
|
-
class FileGenerator
|
6
|
-
def initialize(paths)
|
7
|
-
@paths = paths
|
8
|
-
end
|
9
|
-
|
10
|
-
def call
|
11
|
-
@paths.each do |path|
|
12
|
-
case
|
13
|
-
when path.directory?
|
14
|
-
generate_directory(path)
|
15
|
-
when path.has_directory?
|
16
|
-
generate_file_with_dir(path)
|
17
|
-
else
|
18
|
-
generate_file(path)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def generate_directory(path)
|
26
|
-
FileUtils.mkdir_p(path.directory_name)
|
27
|
-
end
|
28
|
-
|
29
|
-
def generate_file(path)
|
30
|
-
FileUtils.touch(path.file_name)
|
31
|
-
end
|
32
|
-
|
33
|
-
def generate_file_with_dir(path)
|
34
|
-
FileUtils.mkdir_p(path.directory_name)
|
35
|
-
FileUtils.touch("#{path.directory_name}/#{path.file_name}")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/lib/platina_world/runner.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require "platina_world/file_loader"
|
2
|
-
require "platina_world/file_generator"
|
3
|
-
require "platina_world/path_builder"
|
4
|
-
|
5
|
-
module PlatinaWorld
|
6
|
-
class Runner
|
7
|
-
def initialize(options)
|
8
|
-
@options = options
|
9
|
-
end
|
10
|
-
|
11
|
-
def run
|
12
|
-
file_generator.call
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def file_generator
|
18
|
-
PlatinaWorld::FileGenerator.new(paths)
|
19
|
-
end
|
20
|
-
|
21
|
-
def paths
|
22
|
-
@paths ||= PlatinaWorld::PathBuilder.new(loaded_data).build
|
23
|
-
end
|
24
|
-
|
25
|
-
def loaded_data
|
26
|
-
@loaded_data ||= PlatinaWorld::FileLoader.new(file_path).load
|
27
|
-
end
|
28
|
-
|
29
|
-
def file_path
|
30
|
-
@options["file"]
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|