kamaze-project 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +9 -9
- data/lib/kamaze-project.rb +1 -31
- data/lib/kamaze/project.rb +37 -31
- data/lib/kamaze/project/autoload.rb +38 -0
- data/lib/kamaze/project/boot/core_ext.rb +8 -8
- data/lib/kamaze/project/boot/listen.rb +11 -13
- data/lib/kamaze/project/bundled.rb +79 -0
- data/lib/kamaze/project/concern.rb +17 -2
- data/lib/kamaze/project/concern/cli.rb +3 -1
- data/lib/kamaze/project/concern/cli/with_exit_on_failure.rb +2 -6
- data/lib/kamaze/project/concern/env.rb +14 -12
- data/lib/kamaze/project/concern/helper.rb +1 -2
- data/lib/kamaze/project/concern/mode.rb +1 -1
- data/lib/kamaze/project/concern/observable.rb +12 -11
- data/lib/kamaze/project/concern/sh.rb +7 -7
- data/lib/kamaze/project/concern/tasks.rb +36 -10
- data/lib/kamaze/project/concern/tools.rb +2 -3
- data/lib/kamaze/project/config.rb +1 -1
- data/lib/kamaze/project/core_ext/object.rb +17 -8
- data/lib/kamaze/project/core_ext/pp.rb +14 -16
- data/lib/kamaze/project/debug.rb +47 -48
- data/lib/kamaze/project/dsl.rb +9 -5
- data/lib/kamaze/project/dsl/definition.rb +6 -12
- data/lib/kamaze/project/dsl/setup.rb +1 -3
- data/lib/kamaze/project/helper.rb +1 -1
- data/lib/kamaze/project/helper/inflector.rb +9 -27
- data/lib/kamaze/project/helper/project.rb +1 -1
- data/lib/kamaze/project/helper/project/config.rb +1 -1
- data/lib/kamaze/project/inflector.rb +15 -0
- data/lib/kamaze/project/observable.rb +1 -4
- data/lib/kamaze/project/observer.rb +1 -1
- data/lib/kamaze/project/resources/Vagrantfile +1 -1
- data/lib/kamaze/project/struct.rb +1 -1
- data/lib/kamaze/project/tasks/cs.rb +1 -1
- data/lib/kamaze/project/tasks/cs/control.rb +1 -1
- data/lib/kamaze/project/tasks/cs/correct.rb +1 -1
- data/lib/kamaze/project/tasks/cs/pre_commit.rb +4 -6
- data/lib/kamaze/project/tasks/doc.rb +2 -4
- data/lib/kamaze/project/tasks/doc/watch.rb +4 -6
- data/lib/kamaze/project/tasks/gem.rb +15 -6
- data/lib/kamaze/project/tasks/gem/build.rb +33 -17
- data/lib/kamaze/project/tasks/gem/compile.rb +1 -1
- data/lib/kamaze/project/tasks/gem/gemspec.rb +12 -11
- data/lib/kamaze/project/tasks/gem/install.rb +1 -1
- data/lib/kamaze/project/tasks/gem/push.rb +16 -17
- data/lib/kamaze/project/tasks/misc/gitignore.rb +1 -1
- data/lib/kamaze/project/tasks/shell.rb +1 -1
- data/lib/kamaze/project/tasks/sources.rb +1 -1
- data/lib/kamaze/project/tasks/sources/license.rb +1 -1
- data/lib/kamaze/project/tasks/test.rb +3 -5
- data/lib/kamaze/project/tasks/vagrant.rb +1 -1
- data/lib/kamaze/project/tasks/version/edit.rb +1 -1
- data/lib/kamaze/project/tools.rb +18 -6
- data/lib/kamaze/project/tools/base_tool.rb +6 -2
- data/lib/kamaze/project/tools/console.rb +4 -13
- data/lib/kamaze/project/tools/console/output.rb +14 -6
- data/lib/kamaze/project/tools/console/output/buffer.rb +8 -3
- data/lib/kamaze/project/tools/gemspec.rb +11 -21
- data/lib/kamaze/project/tools/gemspec/builder.rb +43 -31
- data/lib/kamaze/project/tools/gemspec/concern.rb +6 -1
- data/lib/kamaze/project/tools/gemspec/concern/reading.rb +2 -5
- data/lib/kamaze/project/tools/gemspec/packager.rb +10 -10
- data/lib/kamaze/project/tools/gemspec/packer.rb +11 -15
- data/lib/kamaze/project/tools/gemspec/packer/command.rb +1 -1
- data/lib/kamaze/project/tools/gemspec/reader.rb +22 -14
- data/lib/kamaze/project/tools/gemspec/reader/decorator.rb +3 -6
- data/lib/kamaze/project/tools/gemspec/writer.rb +43 -19
- data/lib/kamaze/project/tools/gemspec/writer/dep_gen.rb +9 -6
- data/lib/kamaze/project/tools/gemspec/writer/dependency.rb +1 -1
- data/lib/kamaze/project/tools/git.rb +13 -31
- data/lib/kamaze/project/tools/git/hooks.rb +12 -6
- data/lib/kamaze/project/tools/git/hooks/base_hook.rb +3 -11
- data/lib/kamaze/project/tools/git/hooks/pre_commit.rb +3 -7
- data/lib/kamaze/project/tools/git/status.rb +13 -9
- data/lib/kamaze/project/tools/git/status/decorator.rb +1 -1
- data/lib/kamaze/project/tools/git/status/file.rb +2 -1
- data/lib/kamaze/project/tools/git/status/files_array.rb +1 -1
- data/lib/kamaze/project/tools/git/status/index.rb +1 -1
- data/lib/kamaze/project/tools/git/status/worktree.rb +1 -1
- data/lib/kamaze/project/tools/git/util.rb +1 -1
- data/lib/kamaze/project/tools/licenser.rb +2 -2
- data/lib/kamaze/project/tools/packager.rb +12 -22
- data/lib/kamaze/project/tools/packager/filesystem.rb +11 -3
- data/lib/kamaze/project/tools/packager/filesystem/operator.rb +19 -11
- data/lib/kamaze/project/tools/packager/filesystem/operator/utils.rb +22 -16
- data/lib/kamaze/project/tools/process_locker.rb +67 -36
- data/lib/kamaze/project/tools/rspec.rb +5 -3
- data/lib/kamaze/project/tools/rubocop.rb +30 -40
- data/lib/kamaze/project/tools/rubocop/arguments.rb +1 -1
- data/lib/kamaze/project/tools/rubocop/config.rb +2 -4
- data/lib/kamaze/project/tools/shell.rb +7 -8
- data/lib/kamaze/project/tools/vagrant.rb +6 -16
- data/lib/kamaze/project/tools/vagrant/composer.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/composer/file.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/remote.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/shell.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/writer.rb +1 -1
- data/lib/kamaze/project/tools/yardoc.rb +14 -17
- data/lib/kamaze/project/tools/yardoc/file.rb +7 -7
- data/lib/kamaze/project/tools/yardoc/watchable.rb +9 -15
- data/lib/kamaze/project/tools/yardoc/watcher.rb +28 -35
- data/lib/kamaze/project/tools_provider.rb +28 -40
- data/lib/kamaze/project/tools_provider/resolver.rb +1 -1
- data/lib/kamaze/project/version.rb +5 -94
- data/lib/kamaze/project/version.yml +5 -5
- metadata +23 -64
- data/bin/plop +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73295f0f7906e0a30f2e93dc9b21f85bc52d8e86549b6b8f83815ec627ee1d48
|
4
|
+
data.tar.gz: 1ec30804e058002c7e573113584128c990766141cf4da77cba508aba99637b76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 473533f87853e0ccbdf50215f512253cfd81c9179f4dccd88a1001403b63440ab49b496a62f94bf10a94dc2d93e3820029ac2c403dcf967cf3a14efe028ee976
|
7
|
+
data.tar.gz: 0245a0642542dd33d33764528d43234921bc78031d1ed06748602a0fd671c28931de47b9aa0e98d81211312bdd7949b06fcdf4f2c355d620a20d6acc9a3f461a
|
data/.yardopts
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
# vim: ft=sh
|
2
2
|
|
3
|
-
lib/**/*.rb
|
4
|
-
--no-progress
|
5
|
-
--markup-provider 'redcarpet'
|
6
|
-
--markup 'markdown'
|
7
|
-
--charset 'utf-8'
|
8
|
-
--protected --private --embed-mixins
|
9
|
-
--tag type:'type' --hide-tag 'type'
|
10
|
-
--readme README.md
|
3
|
+
lib/**/*.rb \
|
4
|
+
--no-progress \
|
5
|
+
--markup-provider 'redcarpet' \
|
6
|
+
--markup 'markdown' \
|
7
|
+
--charset 'utf-8' \
|
8
|
+
--protected --private --embed-mixins \
|
9
|
+
--tag type:'type' --hide-tag 'type' \
|
10
|
+
--readme README.md \
|
11
11
|
--exclude 'lib/kamaze/project/tasks/.*' \
|
12
12
|
--exclude 'lib/kamaze/project/boot/.*' \
|
13
|
-
--exclude '_flymake\\.rb$'
|
13
|
+
--exclude '_flymake\\.rb$' \
|
14
14
|
--exclude '/\\.#'
|
15
15
|
|
16
16
|
# Local Variables:
|
data/lib/kamaze-project.rb
CHANGED
@@ -1,39 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
8
8
|
|
9
9
|
$LOAD_PATH.unshift(__dir__)
|
10
|
-
|
11
|
-
lock = Dir.chdir("#{__dir__}/..") do
|
12
|
-
[['gems.rb', 'gems.locked'], ['Gemfile', 'Gemfile.lock']]
|
13
|
-
.map { |m| Dir.glob(m).size >= 2 }
|
14
|
-
.include?(true)
|
15
|
-
end
|
16
|
-
mode = (ENV['PROJECT_MODE'] || lock ? 'development' : 'production').to_sym
|
17
|
-
|
18
|
-
if lock
|
19
|
-
require 'rubygems'
|
20
|
-
require 'bundler/setup'
|
21
|
-
end
|
22
|
-
|
23
|
-
if lock and :development == mode
|
24
|
-
require 'yaml'
|
25
|
-
|
26
|
-
unless YAML.safe_load(ENV['BOOTSNAP_DISABLE'].to_s)
|
27
|
-
require 'bootsnap'
|
28
|
-
|
29
|
-
Bootsnap.setup(
|
30
|
-
cache_dir: "#{__dir__}/../cache",
|
31
|
-
development_mode: true,
|
32
|
-
load_path_cache: true,
|
33
|
-
autoload_paths_cache: false,
|
34
|
-
disable_trace: true,
|
35
|
-
compile_cache_iseq: true,
|
36
|
-
compile_cache_yaml: true
|
37
|
-
)
|
38
|
-
end
|
39
|
-
end
|
data/lib/kamaze/project.rb
CHANGED
@@ -1,49 +1,38 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
# Base module (almost a namespace)
|
9
|
+
# Kamaze namesapace
|
12
10
|
module Kamaze
|
13
|
-
# rubocop:disable Style/Documentation
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
# @return [Object]
|
29
|
-
def version
|
30
|
-
subject.const_get('VERSION')
|
11
|
+
class Project # rubocop:disable Style/Documentation
|
12
|
+
# @formatter:off
|
13
|
+
{
|
14
|
+
YAML: 'yaml',
|
15
|
+
Pathname: 'pathname',
|
16
|
+
Autoload: "#{__dir__}/project/autoload"
|
17
|
+
}.each { |s, fp| autoload(s, fp) }
|
18
|
+
# @formatter:on
|
19
|
+
|
20
|
+
Autoload.new.call("#{__dir__}/project")
|
21
|
+
|
22
|
+
include(Bundled).tap do
|
23
|
+
self.base_path = self.base_path.join('..')
|
24
|
+
require 'bundler/setup' if bundled?
|
25
|
+
require_relative './project/core_ext/pp' if development?
|
31
26
|
end
|
32
27
|
end
|
33
28
|
|
34
|
-
# rubocop:enable Style/Documentation
|
35
|
-
end
|
36
|
-
|
37
|
-
# Base namespace
|
38
|
-
module Kamaze
|
39
29
|
class << self
|
40
|
-
include Project::Concern::Helper
|
41
|
-
|
42
30
|
# Get an instance of project
|
43
31
|
#
|
32
|
+
# @deprecated
|
44
33
|
# @return [Kamaze::Project]
|
45
34
|
def project(&block)
|
46
|
-
|
35
|
+
Project.instance(&block)
|
47
36
|
end
|
48
37
|
end
|
49
38
|
end
|
@@ -65,6 +54,23 @@ class Kamaze::Project
|
|
65
54
|
include Concern::Tasks
|
66
55
|
include Concern::Tools
|
67
56
|
|
57
|
+
class << self
|
58
|
+
include Concern::Helper
|
59
|
+
|
60
|
+
# Get an instance of project
|
61
|
+
#
|
62
|
+
# @return [Kamaze::Project]
|
63
|
+
def instance(&block)
|
64
|
+
helper.get(:project).setup(&block)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# @see Kamaze::Project::Version
|
69
|
+
# @return [Object]
|
70
|
+
def version
|
71
|
+
subject.const_get('VERSION')
|
72
|
+
end
|
73
|
+
|
68
74
|
# Project name
|
69
75
|
#
|
70
76
|
# @return [Symbol]
|
@@ -121,7 +127,7 @@ class Kamaze::Project
|
|
121
127
|
|
122
128
|
# @return [Pathname]
|
123
129
|
def pwd
|
124
|
-
|
130
|
+
Pathname.new(Dir.pwd)
|
125
131
|
end
|
126
132
|
|
127
133
|
protected
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
|
+
# License GPLv3+: GNU GPL version 3 or later
|
5
|
+
# <http://www.gnu.org/licenses/gpl.html>.
|
6
|
+
# This is free software: you are free to change and redistribute it.
|
7
|
+
# There is NO WARRANTY, to the extent permitted by law.
|
8
|
+
|
9
|
+
# Autoload class
|
10
|
+
class Kamaze::Project::Autoload < ::Hash
|
11
|
+
def initialize # rubocop:disable Metrics/MethodLength
|
12
|
+
# @formatter:off
|
13
|
+
{
|
14
|
+
VERSION: 'version',
|
15
|
+
Bundled: 'bundled',
|
16
|
+
Concern: 'concern',
|
17
|
+
Config: 'config',
|
18
|
+
Debug: 'debug',
|
19
|
+
DSL: 'dsl',
|
20
|
+
Helper: 'helper',
|
21
|
+
Inflector: 'inflector',
|
22
|
+
Observable: 'observable',
|
23
|
+
Observer: 'observer',
|
24
|
+
Struct: 'struct',
|
25
|
+
Tools: 'tools',
|
26
|
+
ToolsProvider: 'tools_provider',
|
27
|
+
}.each { |k, v| self[k] = v }
|
28
|
+
# @formatter:on
|
29
|
+
end
|
30
|
+
|
31
|
+
def call(path)
|
32
|
+
self.tap do
|
33
|
+
self.each do |s, fp|
|
34
|
+
Kamaze::Project.__send__(:autoload, s, "#{path}/#{fp}")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
require_relative "../core_ext/#{requirement}"
|
9
|
+
# @formatter:off
|
10
|
+
[
|
11
|
+
ENV['PROJECT_MODE'] =~ /^dev.*/ ? :pp : nil,
|
12
|
+
:object,
|
13
|
+
].compact.each do |requirement|
|
14
|
+
require "#{__dir__}/../core_ext/#{requirement}"
|
16
15
|
end
|
16
|
+
# @formatter:on
|
@@ -1,18 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
8
8
|
|
9
|
+
autoload(:YAML, 'yaml')
|
10
|
+
autoload(:Gem, 'rubygems')
|
11
|
+
|
9
12
|
patchable = lambda do
|
10
|
-
|
11
|
-
require 'listen'
|
12
|
-
return YAML.safe_load(ENV['SILENCE_DUPLICATE_DIRECTORY_ERRORS'].to_s)
|
13
|
-
end
|
13
|
+
return false unless Gem::Specification.find_all_by_name('listen').any?
|
14
14
|
|
15
|
-
|
15
|
+
YAML.safe_load(ENV['SILENCE_DUPLICATE_DIRECTORY_ERRORS'].to_s)
|
16
16
|
end
|
17
17
|
|
18
18
|
# rubocop:disable all
|
@@ -22,14 +22,12 @@ end
|
|
22
22
|
# Listen >=2.8
|
23
23
|
# patch to silence duplicate directory errors. USE AT YOUR OWN RISK
|
24
24
|
if patchable.call
|
25
|
+
require 'listen'
|
26
|
+
|
25
27
|
if Gem::Version.new(Listen::VERSION) >= Gem::Version.new('2.8.0')
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
def _fail(_, _)
|
30
|
-
fail Error, "Don't watch locally-symlinked directory twice"
|
31
|
-
end
|
32
|
-
end
|
28
|
+
class Listen::Record::SymlinkDetector
|
29
|
+
def _fail(_, _)
|
30
|
+
fail Error, "Don't watch locally-symlinked directory twice"
|
33
31
|
end
|
34
32
|
end
|
35
33
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
|
+
# License GPLv3+: GNU GPL version 3 or later
|
5
|
+
# <http://www.gnu.org/licenses/gpl.html>.
|
6
|
+
# This is free software: you are free to change and redistribute it.
|
7
|
+
# There is NO WARRANTY, to the extent permitted by law.
|
8
|
+
|
9
|
+
# Copyright (C) 2019-2020 Dimitri Arrigoni <dimitri@arrigoni.me>
|
10
|
+
# License GPLv3+: GNU GPL version 3 or later
|
11
|
+
# <http://www.gnu.org/licenses/gpl.html>.
|
12
|
+
# This is free software: you are free to change and redistribute it.
|
13
|
+
# There is NO WARRANTY, to the extent permitted by law.
|
14
|
+
|
15
|
+
require_relative('../project')
|
16
|
+
|
17
|
+
# Bundled behavior.
|
18
|
+
#
|
19
|
+
# Allow to detect bundled execution due to ``gems.rb`` and ``gems.locked``
|
20
|
+
# files presence, and``development`` execution (``gemspec.tpl`` file presence).
|
21
|
+
module Kamaze::Project::Bundled
|
22
|
+
autoload(:Pathname, 'pathname')
|
23
|
+
|
24
|
+
class << self
|
25
|
+
def included(base)
|
26
|
+
base.extend(ClassMethods)
|
27
|
+
|
28
|
+
Pathname.new(caller_locations.first.path).dirname.tap do |caller_path|
|
29
|
+
(base.__send__(:base_path) || caller_path).tap do |basepath|
|
30
|
+
base.__send__(:base_path=, Pathname(basepath).join('..'))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Class methods
|
37
|
+
module ClassMethods
|
38
|
+
protected
|
39
|
+
|
40
|
+
# Set `base_path` from given `path`.
|
41
|
+
#
|
42
|
+
# @param [String] path
|
43
|
+
# @return [Pathname]
|
44
|
+
def base_path=(path)
|
45
|
+
@base_path = Pathname.new(path).realpath
|
46
|
+
end
|
47
|
+
|
48
|
+
# @return [Pathname]
|
49
|
+
def base_path
|
50
|
+
@base_path
|
51
|
+
end
|
52
|
+
|
53
|
+
# Denote current class is used in a bundled context.
|
54
|
+
#
|
55
|
+
# @return [Boolean]
|
56
|
+
def bundled?
|
57
|
+
# @formatter:off
|
58
|
+
[%w[gems.rb gems.locked], %w[Gemfile Gemfile.lock]].map do |m|
|
59
|
+
Dir.chdir(base_path) do
|
60
|
+
m.map { |f| Pathname(f).file? }.uniq
|
61
|
+
end
|
62
|
+
end.include?([true])
|
63
|
+
# @formatter:on
|
64
|
+
end
|
65
|
+
|
66
|
+
# Denote current class is used in development context.
|
67
|
+
#
|
68
|
+
# @return [Boolean]
|
69
|
+
def development?
|
70
|
+
# @formatter:off
|
71
|
+
bundled? and [['gemspec.tpl']].map do |m|
|
72
|
+
Dir.chdir(base_path) do
|
73
|
+
m.map { |f| Pathname(f).file? }
|
74
|
+
end
|
75
|
+
end.include?([true])
|
76
|
+
# @formatter:on
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -1,13 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
8
8
|
|
9
|
-
|
9
|
+
require_relative '../project'
|
10
10
|
|
11
11
|
# Namespace for ``Concern``
|
12
12
|
module Kamaze::Project::Concern
|
13
|
+
# @formatter:off
|
14
|
+
{
|
15
|
+
Cli: 'cli',
|
16
|
+
Env: 'env',
|
17
|
+
Helper: 'helper',
|
18
|
+
Mode: 'mode',
|
19
|
+
Observable: 'observable',
|
20
|
+
Sh: 'sh',
|
21
|
+
Tasks: 'tasks',
|
22
|
+
}.each { |s, fp| autoload(s, "#{__dir__}/concern/#{fp}") }
|
23
|
+
# @formatter:on
|
24
|
+
|
25
|
+
[nil, :env, :mode, :helper, :tasks, :tools].each do |req|
|
26
|
+
require_relative "./concern/#{req}".gsub(%r{/$}, '')
|
27
|
+
end
|
13
28
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
@@ -12,6 +12,7 @@ require_relative '../concern'
|
|
12
12
|
#
|
13
13
|
# This module provides base methods focused on ``retcode``.
|
14
14
|
module Kamaze::Project::Concern::Cli
|
15
|
+
autoload(:WithExitOnFailure, "#{__dir__}/cli/with_exit_on_failure")
|
15
16
|
|
16
17
|
# @!attribute [r] retcode
|
17
18
|
# @return [Fixnum] retcode
|
@@ -37,6 +38,7 @@ module Kamaze::Project::Concern::Cli
|
|
37
38
|
#
|
38
39
|
# @return [Boolean]
|
39
40
|
def success?
|
41
|
+
# noinspection RubyResolve
|
40
42
|
Errno::NOERROR::Errno == retcode
|
41
43
|
end
|
42
44
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (C) 2017-
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
@@ -27,10 +27,6 @@ module Kamaze::Project::Concern::Cli::WithExitOnFailure
|
|
27
27
|
# @raise [SystemExit]
|
28
28
|
# @return [Object]
|
29
29
|
def with_exit_on_failure
|
30
|
-
|
31
|
-
|
32
|
-
exit(retcode) if failure?
|
33
|
-
|
34
|
-
result
|
30
|
+
yield(self).tap { exit(retcode) if failure? }
|
35
31
|
end
|
36
32
|
end
|