configmonkey_cli 1.0.0
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 +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +87 -0
- data/Rakefile +1 -0
- data/VERSION +1 -0
- data/bin/configmonkey +9 -0
- data/bin/configmonkey.sh +14 -0
- data/configmonkey_cli.gemspec +27 -0
- data/lib/configmonkey_cli.rb +43 -0
- data/lib/configmonkey_cli/application.rb +159 -0
- data/lib/configmonkey_cli/application/colorize.rb +22 -0
- data/lib/configmonkey_cli/application/configuration.rb +38 -0
- data/lib/configmonkey_cli/application/configuration.tpl +0 -0
- data/lib/configmonkey_cli/application/core.rb +78 -0
- data/lib/configmonkey_cli/application/dispatch.rb +81 -0
- data/lib/configmonkey_cli/application/manifest.rb +316 -0
- data/lib/configmonkey_cli/application/manifest_actions/base.rb +90 -0
- data/lib/configmonkey_cli/application/manifest_actions/chmod.rb +40 -0
- data/lib/configmonkey_cli/application/manifest_actions/copy.rb +38 -0
- data/lib/configmonkey_cli/application/manifest_actions/custom.rb +52 -0
- data/lib/configmonkey_cli/application/manifest_actions/inplace.rb +28 -0
- data/lib/configmonkey_cli/application/manifest_actions/invoke.rb +45 -0
- data/lib/configmonkey_cli/application/manifest_actions/link.rb +46 -0
- data/lib/configmonkey_cli/application/manifest_actions/mkdir.rb +41 -0
- data/lib/configmonkey_cli/application/manifest_actions/remove.rb +46 -0
- data/lib/configmonkey_cli/application/manifest_actions/rsync.rb +112 -0
- data/lib/configmonkey_cli/application/manifest_actions/rtfm.rb +32 -0
- data/lib/configmonkey_cli/application/manifest_actions/sync_links.rb +60 -0
- data/lib/configmonkey_cli/application/manifest_actions/template.rb +38 -0
- data/lib/configmonkey_cli/application/output_helper.rb +30 -0
- data/lib/configmonkey_cli/helper.rb +62 -0
- data/lib/configmonkey_cli/version.rb +4 -0
- metadata +162 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1f88a813de764ee6b33978ab3acf57bd6b4d2c57e0e5352214f6044db20cd327
|
4
|
+
data.tar.gz: 1bcbb9340b2a616dbf22e6249ddfd6705f57ee95bc84ae0e70b7bfd421dedfb7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 83f512210d85b8351587412ca44fe9abd4171aea9ae835ff225e238f1c1cd794ad9926962033d1745517256d121d2a629d7cb83f446c3448c426d38deeb6999e
|
7
|
+
data.tar.gz: ae82e4e9be85ef140e8dfa0993de9b786330a517ee6acc05e4b5138e4bb542ce654d4b213ac6e88e6b7c656921c067e9fb65f26591b7dab8b9dd60cbfd225575
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2020, Sven Pachnit aka. 2called-chaos
|
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
|
13
|
+
all 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
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
# Configmonkey CLI
|
2
|
+
|
3
|
+
Configmonkey is a very simple tool to "deploy" configurations on servers. Chef/Puppet for the brainless.
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
## Help
|
8
|
+
If you need help or have problems [open an issue](https://github.com/2called-chaos/configmonkey_cli/issues/new).
|
9
|
+
|
10
|
+
|
11
|
+
## Features
|
12
|
+
|
13
|
+
* …
|
14
|
+
|
15
|
+
|
16
|
+
## ToDo
|
17
|
+
|
18
|
+
* logging
|
19
|
+
* manifest generation
|
20
|
+
* [add something to the list](https://github.com/2called-chaos/configmonkey_cli/issues/new)
|
21
|
+
|
22
|
+
|
23
|
+
## Requirements
|
24
|
+
|
25
|
+
* Ruby (>= 2.6)
|
26
|
+
* Unixoid OS (such as Ubuntu/Debian, OS X, maybe others), sorry Windows
|
27
|
+
* config files
|
28
|
+
|
29
|
+
|
30
|
+
## Installation
|
31
|
+
|
32
|
+
* `gem install configmonkey_cli`
|
33
|
+
* Go into a folder with your configs (manage them in sub folders)
|
34
|
+
* ~~`configmonkey --generate-manifest`~~
|
35
|
+
* ~~Edit the created file manifest.rb to fit your needs~~
|
36
|
+
* Run `configmonkey -h`
|
37
|
+
* Check out the additional features below
|
38
|
+
|
39
|
+
|
40
|
+
## Usage
|
41
|
+
|
42
|
+
To get a list of available options invoke Configmonkey with the `--help` or `-h` option:
|
43
|
+
|
44
|
+
Usage: configmonkey [options]
|
45
|
+
# Application options
|
46
|
+
--generate-manifest Generates an example manifest in current directory
|
47
|
+
-a, --accept accept all defaults
|
48
|
+
-b, --no-bell dont ring a bell when asked
|
49
|
+
-D, --diff change default diff tool
|
50
|
+
-f, --fake-host HOST override hostname
|
51
|
+
-i, --in DIR operate from this source directory instead of pwd
|
52
|
+
-o, --out DIR operate on this target directory instead of /
|
53
|
+
-l, --log [file] Log changes to file, defaults to ~/.configmonkey/logs/configmonkey.log
|
54
|
+
-M, --merge change default merge tool
|
55
|
+
-n, --dry-run Simulate changes only, does not perform destructive operations
|
56
|
+
-y, --yes accept all prompts with yes
|
57
|
+
--dev-dump-actions Dump actions and exit
|
58
|
+
|
59
|
+
# General options
|
60
|
+
-d, --debug [lvl=1] Enable debug output
|
61
|
+
-m, --monochrome Don't colorize output
|
62
|
+
-h, --help Shows this help
|
63
|
+
-v, --version Shows version and other info
|
64
|
+
-z Do not check for updates on GitHub (with -v/--version)
|
65
|
+
|
66
|
+
## Application configuration
|
67
|
+
|
68
|
+
…
|
69
|
+
|
70
|
+
|
71
|
+
## Contributing
|
72
|
+
|
73
|
+
Contributions are very welcome! Either report errors, bugs and propose features or directly submit code:
|
74
|
+
|
75
|
+
1. Fork it
|
76
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
77
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
78
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
79
|
+
5. Create new Pull Request
|
80
|
+
|
81
|
+
This might be helpful: `./bin/configmonkey.sh -nd 120 -i ./dev/gamesplanet-config -o ./dev/servers/www3 -f www3`
|
82
|
+
|
83
|
+
|
84
|
+
## Legal
|
85
|
+
|
86
|
+
* © 2020, Sven Pachnit (www.bmonkeys.net)
|
87
|
+
* configmonkey_cli is licensed under the MIT license.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
data/bin/configmonkey
ADDED
data/bin/configmonkey.sh
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# That's __FILE__ in BASH :)
|
4
|
+
# From: http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in
|
5
|
+
SOURCE="${BASH_SOURCE[0]}"
|
6
|
+
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
7
|
+
MCLDIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
8
|
+
SOURCE="$(readlink "$SOURCE")"
|
9
|
+
[[ $SOURCE != /* ]] && SOURCE="$MCLDIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
10
|
+
done
|
11
|
+
PROJECT_ROOT="$( cd -P "$( dirname "$SOURCE" )"/.. && pwd )"
|
12
|
+
|
13
|
+
# Actually run script
|
14
|
+
cd $PROJECT_ROOT && bundle exec ruby bin/configmonkey "$@"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'configmonkey_cli/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "configmonkey_cli"
|
8
|
+
spec.version = ConfigmonkeyCli::VERSION
|
9
|
+
spec.authors = ["Sven Pachnit"]
|
10
|
+
spec.email = ["sven@bmonkeys.net"]
|
11
|
+
spec.summary = %q{Configmonkey CLI - dead simple helper for git based server configs}
|
12
|
+
spec.description = %q{Basically chef/puppet for the brainless}
|
13
|
+
spec.homepage = "https://github.com/2called-chaos/configmonkey_cli"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "activesupport"
|
22
|
+
spec.add_dependency "httparty"
|
23
|
+
spec.add_dependency "thor"
|
24
|
+
spec.add_development_dependency "pry"
|
25
|
+
spec.add_development_dependency "bundler"
|
26
|
+
spec.add_development_dependency "rake"
|
27
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
STDOUT.sync = true
|
2
|
+
|
3
|
+
# stdlib
|
4
|
+
require "benchmark"
|
5
|
+
require "fileutils"
|
6
|
+
require "optparse"
|
7
|
+
require "open3"
|
8
|
+
require "shellwords"
|
9
|
+
require "digest/sha1"
|
10
|
+
|
11
|
+
# 3rd party
|
12
|
+
require "active_support"
|
13
|
+
require "active_support/core_ext"
|
14
|
+
require "active_support/time_with_zone"
|
15
|
+
begin ; require "pry" ; rescue LoadError ; end
|
16
|
+
require "httparty"
|
17
|
+
require "thor"
|
18
|
+
|
19
|
+
# lib
|
20
|
+
require "configmonkey_cli/version"
|
21
|
+
require "configmonkey_cli/helper"
|
22
|
+
require "configmonkey_cli/application/core"
|
23
|
+
require "configmonkey_cli/application/output_helper"
|
24
|
+
require "configmonkey_cli/application/colorize"
|
25
|
+
require "configmonkey_cli/application/manifest"
|
26
|
+
require "configmonkey_cli/application/configuration"
|
27
|
+
require "configmonkey_cli/application/dispatch"
|
28
|
+
require "configmonkey_cli/application"
|
29
|
+
|
30
|
+
# actions
|
31
|
+
require "configmonkey_cli/application/manifest_actions/base"
|
32
|
+
require "configmonkey_cli/application/manifest_actions/chmod"
|
33
|
+
require "configmonkey_cli/application/manifest_actions/copy"
|
34
|
+
require "configmonkey_cli/application/manifest_actions/custom"
|
35
|
+
require "configmonkey_cli/application/manifest_actions/inplace"
|
36
|
+
require "configmonkey_cli/application/manifest_actions/invoke"
|
37
|
+
require "configmonkey_cli/application/manifest_actions/link"
|
38
|
+
require "configmonkey_cli/application/manifest_actions/mkdir"
|
39
|
+
require "configmonkey_cli/application/manifest_actions/rsync"
|
40
|
+
require "configmonkey_cli/application/manifest_actions/remove"
|
41
|
+
require "configmonkey_cli/application/manifest_actions/rtfm"
|
42
|
+
require "configmonkey_cli/application/manifest_actions/sync_links"
|
43
|
+
require "configmonkey_cli/application/manifest_actions/template"
|
@@ -0,0 +1,159 @@
|
|
1
|
+
module ConfigmonkeyCli
|
2
|
+
class Application
|
3
|
+
attr_reader :opts, :connections, :hooks, :env, :argv
|
4
|
+
include Helper
|
5
|
+
include OutputHelper
|
6
|
+
include Colorize
|
7
|
+
include Core
|
8
|
+
include Dispatch
|
9
|
+
include Configuration::AppHelper
|
10
|
+
|
11
|
+
# =========
|
12
|
+
# = Setup =
|
13
|
+
# =========
|
14
|
+
def self.dispatch *a
|
15
|
+
new(*a) do |app|
|
16
|
+
app.load_appconfig
|
17
|
+
app.parse_params
|
18
|
+
begin
|
19
|
+
app.dispatch
|
20
|
+
app.haltpoint
|
21
|
+
rescue Interrupt
|
22
|
+
app.abort("Interrupted", 1)
|
23
|
+
rescue SystemExit
|
24
|
+
app.abort("Aborted", 2)
|
25
|
+
ensure
|
26
|
+
app.fire(:cm_shutdown)
|
27
|
+
app.debug "#{Thread.list.length} threads remain..."
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def initialize env, argv
|
33
|
+
@boot = Time.current
|
34
|
+
@env, @argv = env, argv
|
35
|
+
@hooks = {}
|
36
|
+
@connections = {}
|
37
|
+
@monitor = Monitor.new
|
38
|
+
@opts = {
|
39
|
+
working_directory: Dir.pwd, # -i flag
|
40
|
+
target_directory: "/", # -o flag
|
41
|
+
hostname: `hostname`.chomp, # -f flag
|
42
|
+
diff_tool: nil, # -D flag
|
43
|
+
merge_tool: nil, # -M flag
|
44
|
+
bell: true, # -b flag
|
45
|
+
default_accept: false, # -a flag
|
46
|
+
default_yes: false, # -y flag
|
47
|
+
dispatch: :index, # (internal) action to dispatch
|
48
|
+
simulation: false, # -n flag
|
49
|
+
check_for_updates: true, # -z flag
|
50
|
+
colorize: true, # -m flag
|
51
|
+
debug: false, # -d flag
|
52
|
+
# silent: false, # -s flag
|
53
|
+
# quiet: false, # -q flag
|
54
|
+
stdout: STDOUT, # (internal) STDOUT redirect
|
55
|
+
}
|
56
|
+
init_params
|
57
|
+
yield(self)
|
58
|
+
end
|
59
|
+
|
60
|
+
def find_diff_tool
|
61
|
+
[
|
62
|
+
opts[:diff_tool],
|
63
|
+
ENV["CM_DIFF"],
|
64
|
+
ENV["THOR_DIFF"],
|
65
|
+
ENV["RAILS_DIFF"],
|
66
|
+
"colordiff",
|
67
|
+
"git diff --no-index",
|
68
|
+
"vim -d",
|
69
|
+
"diff -u",
|
70
|
+
].compact.each do |cmd|
|
71
|
+
if hit = `which #{cmd.split(" ").first}`.chomp.presence
|
72
|
+
debug "§diff-using:(#{hit})#{cmd}"
|
73
|
+
return cmd
|
74
|
+
else
|
75
|
+
debug "§diff-not-found:#{cmd}", 105
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def find_merge_tool
|
81
|
+
[
|
82
|
+
opts[:merge_tool],
|
83
|
+
ENV["CM_MERGE"],
|
84
|
+
ENV["THOR_MERGE"],
|
85
|
+
(`git config merge.tool`.chomp rescue nil),
|
86
|
+
"vim -d",
|
87
|
+
"diff -u",
|
88
|
+
].compact.each do |cmd|
|
89
|
+
if hit = `which #{cmd.split(" ").first}`.chomp.presence
|
90
|
+
debug "§merge-using:(#{hit})#{cmd}"
|
91
|
+
return cmd
|
92
|
+
else
|
93
|
+
debug "§merge-not-found:#{cmd}", 105
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def to_s
|
99
|
+
"#<ConfigmonkeyCli::Application @boot=#{@boot} @opts=#{@opts} @running=#{@running}>"
|
100
|
+
end
|
101
|
+
|
102
|
+
def init_params
|
103
|
+
@optparse = OptionParser.new do |opts|
|
104
|
+
opts.banner = "Usage: configmonkey [options]"
|
105
|
+
|
106
|
+
opts.separator(c "# Application options", :blue)
|
107
|
+
opts.on("--generate-manifest", "Generates an example manifest in current directory") { @opts[:dispatch] = :generate_manifest }
|
108
|
+
opts.on("-a", "--accept", "accept all defaults") { @opts[:default_accept] = true }
|
109
|
+
opts.on("-b", "--no-bell", "dont ring a bell when asked") { @opts[:bell] = false }
|
110
|
+
opts.on("-D", "--diff", "change default diff tool") {|s| @opts[:diff_tool] = s }
|
111
|
+
opts.on("-f", "--fake-host HOST", "override hostname") {|s| @opts[:hostname] = s }
|
112
|
+
opts.on("-i", "--in DIR", "operate from this source directory instead of pwd") {|s| @opts[:working_directory] = s }
|
113
|
+
opts.on("-o", "--out DIR", "operate on this target directory instead of /") {|s| @opts[:target_directory] = s }
|
114
|
+
opts.on("-l", "--log [file]", "Log changes to file, defaults to ~/.configmonkey/logs/configmonkey.log") {|s| @opts[:logfile] = s || logger_filename }
|
115
|
+
opts.on("-M", "--merge", "change default merge tool") {|s| @opts[:merge_tool] = s }
|
116
|
+
opts.on("-n", "--dry-run", "Simulate changes only, does not perform destructive operations") { @opts[:simulation] = true }
|
117
|
+
opts.on("-y", "--yes", "accept all prompts with yes") { @opts[:default_yes] = true }
|
118
|
+
opts.on( "--dev-dump-actions", "Dump actions and exit") { @opts[:dev_dump_actions] = true }
|
119
|
+
# opts.on("-q", "--quiet", "Only print errors") { @opts[:quiet] = true }
|
120
|
+
|
121
|
+
opts.separator("\n" << c("# General options", :blue))
|
122
|
+
opts.on("-d", "--debug [lvl=1]", Integer, "Enable debug output") {|l| @opts[:debug] = l || 1 }
|
123
|
+
opts.on("-m", "--monochrome", "Don't colorize output") { @opts[:colorize] = false }
|
124
|
+
opts.on("-h", "--help", "Shows this help") { @opts[:dispatch] = :help }
|
125
|
+
opts.on("-v", "--version", "Shows version and other info") { @opts[:dispatch] = :info }
|
126
|
+
opts.on("-z", "Do not check for updates on GitHub (with -v/--version)") { @opts[:check_for_updates] = false }
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def parse_params
|
131
|
+
@optparse.parse!(@argv)
|
132
|
+
|
133
|
+
# resolve diff/merge tool
|
134
|
+
@opts[:diff_tool] = find_diff_tool
|
135
|
+
@opts[:merge_tool] = find_merge_tool
|
136
|
+
|
137
|
+
# thor bell
|
138
|
+
ENV['THOR_ASK_BELL'] = "true" if @opts[:bell]
|
139
|
+
|
140
|
+
# thor no-colors
|
141
|
+
ENV['NO_COLOR'] = "true" if !@opts[:colorize]
|
142
|
+
|
143
|
+
# thor diff-tool
|
144
|
+
ENV['THOR_DIFF'] = opts[:diff_tool] if @opts[:diff_tool]
|
145
|
+
rescue OptionParser::ParseError => e
|
146
|
+
abort(e.message)
|
147
|
+
dispatch(:help)
|
148
|
+
exit 1
|
149
|
+
end
|
150
|
+
|
151
|
+
def sync &block
|
152
|
+
@monitor.synchronize(&block)
|
153
|
+
end
|
154
|
+
|
155
|
+
def running?
|
156
|
+
@running
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ConfigmonkeyCli
|
2
|
+
class Application
|
3
|
+
module Colorize
|
4
|
+
COLORMAP = {
|
5
|
+
black: 30,
|
6
|
+
red: 31,
|
7
|
+
green: 32,
|
8
|
+
yellow: 33,
|
9
|
+
blue: 34,
|
10
|
+
magenta: 35,
|
11
|
+
cyan: 36,
|
12
|
+
white: 37,
|
13
|
+
}
|
14
|
+
|
15
|
+
def colorize str, color = :yellow
|
16
|
+
ccode = COLORMAP[color.to_sym] || raise(ArgumentError, "Unknown color #{color}!")
|
17
|
+
@opts[:colorize] ? "\e[#{ccode}m#{str}\e[0m" : "#{str}"
|
18
|
+
end
|
19
|
+
alias_method :c, :colorize
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module ConfigmonkeyCli
|
2
|
+
class Application
|
3
|
+
class Configuration
|
4
|
+
module AppHelper
|
5
|
+
def cm_cfg_path
|
6
|
+
ENV["CM_CFGDIR"].presence || File.expand_path("~/.configmonkey")
|
7
|
+
end
|
8
|
+
|
9
|
+
def cm_cfg_configfile
|
10
|
+
"#{cm_cfg_path}/config.rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
def load_appconfig
|
14
|
+
return unless File.exist?(cm_cfg_configfile)
|
15
|
+
eval File.read(cm_cfg_configfile, encoding: "utf-8"), binding, cm_cfg_configfile
|
16
|
+
end
|
17
|
+
|
18
|
+
def generate_manifest directory
|
19
|
+
#FileUtils.mkdir_p(config_directory)
|
20
|
+
#File.open(config_filename(name), "w", encoding: "utf-8") do |f|
|
21
|
+
# f << File.read("#{File.dirname(__FILE__)}/configuration.tpl", encoding: "utf-8")
|
22
|
+
#end
|
23
|
+
end
|
24
|
+
|
25
|
+
def load_and_execute_manifest
|
26
|
+
manifest = Manifest.new(self, File.realpath(File.expand_path(opts[:working_directory])), @argv[0])
|
27
|
+
if opts[:dev_dump_actions]
|
28
|
+
manifest._dump!
|
29
|
+
elsif opts[:simulation]
|
30
|
+
manifest._simulate!
|
31
|
+
else
|
32
|
+
manifest._execute!
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|