nucleon 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.
- data/Gemfile +4 -8
- data/Gemfile.lock +0 -28
- data/README.rdoc +13 -5
- data/Rakefile +9 -1
- data/VERSION +1 -1
- data/bin/nucleon +55 -0
- data/lib/core/codes.rb +107 -0
- data/lib/core/config/collection.rb +57 -0
- data/lib/core/config/options.rb +70 -0
- data/lib/core/config.rb +342 -0
- data/lib/core/core.rb +54 -0
- data/lib/core/errors.rb +84 -0
- data/lib/core/facade.rb +283 -0
- data/lib/core/gems.rb +80 -0
- data/lib/core/manager.rb +594 -0
- data/lib/core/mixin/action/commit.rb +58 -0
- data/lib/core/mixin/action/project.rb +53 -0
- data/lib/core/mixin/action/push.rb +52 -0
- data/lib/core/mixin/config/collection.rb +53 -0
- data/lib/core/mixin/config/options.rb +39 -0
- data/lib/core/mixin/macro/object_interface.rb +361 -0
- data/lib/core/mixin/macro/plugin_interface.rb +380 -0
- data/lib/core/mixin/settings.rb +46 -0
- data/lib/core/mixin/sub_config.rb +148 -0
- data/lib/core/mod/hash.rb +29 -0
- data/lib/core/plugin/action.rb +371 -0
- data/lib/core/plugin/base.rb +313 -0
- data/lib/core/plugin/command.rb +98 -0
- data/lib/core/plugin/event.rb +53 -0
- data/lib/core/plugin/extension.rb +12 -0
- data/lib/core/plugin/project.rb +890 -0
- data/lib/core/plugin/template.rb +80 -0
- data/lib/core/plugin/translator.rb +38 -0
- data/lib/core/util/cli.rb +353 -0
- data/lib/core/util/console.rb +237 -0
- data/lib/core/util/data.rb +404 -0
- data/lib/core/util/disk.rb +114 -0
- data/lib/core/util/git.rb +43 -0
- data/lib/core/util/liquid.rb +17 -0
- data/lib/core/util/logger.rb +147 -0
- data/lib/core/util/package.rb +93 -0
- data/lib/core/util/shell.rb +239 -0
- data/lib/nucleon/action/add.rb +69 -0
- data/lib/nucleon/action/create.rb +52 -0
- data/lib/nucleon/action/extract.rb +49 -0
- data/lib/nucleon/action/remove.rb +51 -0
- data/lib/nucleon/action/save.rb +53 -0
- data/lib/nucleon/action/update.rb +37 -0
- data/lib/nucleon/command/bash.rb +146 -0
- data/lib/nucleon/event/regex.rb +52 -0
- data/lib/nucleon/project/git.rb +465 -0
- data/lib/nucleon/project/github.rb +108 -0
- data/lib/nucleon/template/json.rb +16 -0
- data/lib/nucleon/template/wrapper.rb +16 -0
- data/lib/nucleon/template/yaml.rb +16 -0
- data/lib/nucleon/translator/json.rb +27 -0
- data/lib/nucleon/translator/yaml.rb +27 -0
- data/lib/nucleon.rb +18 -15
- data/locales/en.yml +3 -132
- data/nucleon.gemspec +66 -27
- data/spec/core/util/console_spec.rb +489 -0
- metadata +109 -96
@@ -0,0 +1,98 @@
|
|
1
|
+
|
2
|
+
module Nucleon
|
3
|
+
module Plugin
|
4
|
+
class Command < Base
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------------
|
7
|
+
# Command plugin interface
|
8
|
+
|
9
|
+
def normalize
|
10
|
+
super
|
11
|
+
end
|
12
|
+
|
13
|
+
#---
|
14
|
+
|
15
|
+
def to_s
|
16
|
+
return build(export)
|
17
|
+
end
|
18
|
+
|
19
|
+
#-----------------------------------------------------------------------------
|
20
|
+
# Property accessor / modifiers
|
21
|
+
|
22
|
+
def command(default = '')
|
23
|
+
return string(get(:command, default))
|
24
|
+
end
|
25
|
+
|
26
|
+
#---
|
27
|
+
|
28
|
+
def command=command
|
29
|
+
set(:command, string(command))
|
30
|
+
end
|
31
|
+
|
32
|
+
#---
|
33
|
+
|
34
|
+
def args(default = [])
|
35
|
+
return array(get(:args, default))
|
36
|
+
end
|
37
|
+
|
38
|
+
#---
|
39
|
+
|
40
|
+
def args=args
|
41
|
+
set(:args, array(args))
|
42
|
+
end
|
43
|
+
|
44
|
+
#---
|
45
|
+
|
46
|
+
def flags(default = [])
|
47
|
+
return array(get(:flags, default))
|
48
|
+
end
|
49
|
+
|
50
|
+
#---
|
51
|
+
|
52
|
+
def flags=flags
|
53
|
+
set(:flags, array(flags))
|
54
|
+
end
|
55
|
+
|
56
|
+
#---
|
57
|
+
|
58
|
+
def data(default = {})
|
59
|
+
return hash(get(:data, default))
|
60
|
+
end
|
61
|
+
|
62
|
+
#---
|
63
|
+
|
64
|
+
def data=data
|
65
|
+
set(:data, hash(data))
|
66
|
+
end
|
67
|
+
|
68
|
+
#---
|
69
|
+
|
70
|
+
def subcommand=subcommand
|
71
|
+
unless Util::Data.empty?(subcommand)
|
72
|
+
set(:subcommand, new(hash(subcommand)))
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
#-----------------------------------------------------------------------------
|
77
|
+
# Command operations
|
78
|
+
|
79
|
+
def build(components = {}, overrides = nil, override_key = false)
|
80
|
+
logger.debug("Building command with #{components.inspect}")
|
81
|
+
logger.debug("Overrides: #{overrides.inspect}")
|
82
|
+
logger.debug("Override key: #{override_key}")
|
83
|
+
|
84
|
+
return '' # Implement in sub classes
|
85
|
+
end
|
86
|
+
|
87
|
+
#---
|
88
|
+
|
89
|
+
def exec(options = {}, overrides = nil)
|
90
|
+
logger.debug("Executing command with #{options.inspect}")
|
91
|
+
logger.debug("Overrides: #{overrides.inspect}")
|
92
|
+
|
93
|
+
# Implement in sub classes (don't forget the yield!)
|
94
|
+
return true
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
|
2
|
+
module Nucleon
|
3
|
+
module Plugin
|
4
|
+
class Event < Base
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------------
|
7
|
+
# Event plugin interface
|
8
|
+
|
9
|
+
|
10
|
+
#-----------------------------------------------------------------------------
|
11
|
+
# Property accessor / modifiers
|
12
|
+
|
13
|
+
#-----------------------------------------------------------------------------
|
14
|
+
# Operations
|
15
|
+
|
16
|
+
def render
|
17
|
+
return name
|
18
|
+
end
|
19
|
+
|
20
|
+
#---
|
21
|
+
|
22
|
+
def check(source)
|
23
|
+
# Implement in sub classes
|
24
|
+
return true
|
25
|
+
end
|
26
|
+
|
27
|
+
#-----------------------------------------------------------------------------
|
28
|
+
# Utilities
|
29
|
+
|
30
|
+
def self.build_info(type, data)
|
31
|
+
data = data.split(/\s*,\s*/) if data.is_a?(String)
|
32
|
+
return super(type, data)
|
33
|
+
end
|
34
|
+
|
35
|
+
#---
|
36
|
+
|
37
|
+
def self.translate(data)
|
38
|
+
options = super(data)
|
39
|
+
|
40
|
+
case data
|
41
|
+
when String
|
42
|
+
components = data.split(':')
|
43
|
+
|
44
|
+
options[:provider] = components.shift
|
45
|
+
options[:string] = components.join(':')
|
46
|
+
|
47
|
+
logger.debug("Translating event options: #{options.inspect}")
|
48
|
+
end
|
49
|
+
return options
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
module Nucleon
|
3
|
+
module Plugin
|
4
|
+
class Extension < Base
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------------
|
7
|
+
# Extension plugin interface
|
8
|
+
|
9
|
+
# This plugin type is just a system container for various plugin hooks
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|