cejo 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.rspec +3 -0
- data/.rubocop.yml +0 -0
- data/.rufo +3 -0
- data/.travis.yml +6 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/INSTALL +2 -0
- data/LICENSE +674 -0
- data/README.org +23 -0
- data/README.rdoc +28 -0
- data/Rakefile +6 -0
- data/annotations/legacy.org +11 -0
- data/annotations/todo.org +54 -0
- data/bin/console +14 -0
- data/bin/setup +9 -0
- data/cejo.gemspec +50 -0
- data/cejo.rdoc +5 -0
- data/exe/cejo +298 -0
- data/lib/cejo.rb +42 -0
- data/lib/cejo/distro/base.rb +52 -0
- data/lib/cejo/distro/commands.rb +26 -0
- data/lib/cejo/distro/current_packager.rb +18 -0
- data/lib/cejo/distro/help.rb +9 -0
- data/lib/cejo/distro/need.rb +32 -0
- data/lib/cejo/distro/parsed_commands.rb +23 -0
- data/lib/cejo/distro/translate_action.rb +11 -0
- data/lib/cejo/floss/archive.rb +49 -0
- data/lib/cejo/floss/core.rb +55 -0
- data/lib/cejo/floss/grab.rb +44 -0
- data/lib/cejo/floss/project_info.rb +28 -0
- data/lib/cejo/media/get.rb +54 -0
- data/lib/cejo/media/play.rb +45 -0
- data/lib/cejo/ops/brightness.rb +37 -0
- data/lib/cejo/ops/dots.rb +98 -0
- data/lib/cejo/ops/homey.rb +76 -0
- data/lib/cejo/ops/screenshot.rb +78 -0
- data/lib/cejo/ops/sysinfo.rb +27 -0
- data/lib/cejo/ops/volume/sound_manager.rb +45 -0
- data/lib/cejo/ops/volume/volume.rb +117 -0
- data/lib/cejo/projects/builder.rb +138 -0
- data/lib/cejo/projects/dwm.rb +23 -0
- data/lib/cejo/projects/emacs.rb +23 -0
- data/lib/cejo/projects/ruby.rb +23 -0
- data/lib/cejo/projects/st.rb +23 -0
- data/lib/cejo/services/folders.rb +21 -0
- data/lib/cejo/services/utils.rb +54 -0
- data/lib/cejo/version.rb +5 -0
- data/lib/tasks/list.rake +7 -0
- data/lib/tasks/man.rake +7 -0
- data/lib/tasks/spec.rake +5 -0
- data/lib/tasks/test.rake +7 -0
- data/man/cejo.1.ronn +0 -0
- data/spec/distro/action_spec.rb +21 -0
- data/spec/distro/base_spec.rb +67 -0
- data/spec/distro/commands_spec.rb +22 -0
- data/spec/distro/current_packager_spec.rb +17 -0
- data/spec/distro/need_spec.rb +22 -0
- data/spec/floss/archive_spec.rb +1 -0
- data/spec/floss/core_spec.rb +1 -0
- data/spec/floss/grab_spec.rb +1 -0
- data/spec/media/get_spec.rb +20 -0
- data/spec/media/play_spec.rb +41 -0
- data/spec/ops/ops_brightness_spec.rb +16 -0
- data/spec/ops/ops_volume_spec.rb +22 -0
- data/spec/spec_helper.rb +96 -0
- data/spec/utils_spec.rb +18 -0
- data/test/test_cejo.rb +16 -0
- data/test/test_distro_base.rb +13 -0
- data/test/test_floss.rb +13 -0
- data/test/test_media_get.rb +0 -0
- data/test/test_media_play.rb +0 -0
- data/test/test_ops_brightness.rb +0 -0
- data/test/test_ops_dots.rb +0 -0
- data/test/test_ops_homer.rb +0 -0
- data/test/test_ops_oss.rb +18 -0
- data/test/test_ops_screenshot.rb +0 -0
- data/test/test_ops_sysinfo.rb +0 -0
- data/test/test_ops_volume.rb +0 -0
- data/test/test_projects_builder.rb +0 -0
- data/test/test_projects_emacs.rb +0 -0
- metadata +468 -0
data/README.org
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#+TILE: Cejo
|
2
|
+
|
3
|
+
* Cejo
|
4
|
+
Miscellaneous Unix automation and services utilities
|
5
|
+
* Sections
|
6
|
+
** Ops
|
7
|
+
Bundle of automation tasks
|
8
|
+
** Media
|
9
|
+
Management of media
|
10
|
+
** Projects
|
11
|
+
Instructions to install FLOSS Project
|
12
|
+
** Distro
|
13
|
+
A one-do-it-all package porcelain for most use Distro Linux package managers
|
14
|
+
|
15
|
+
* Install
|
16
|
+
** rubygems
|
17
|
+
gem install cejo
|
18
|
+
** local
|
19
|
+
rake
|
20
|
+
* Why Cejo?
|
21
|
+
Named after my grandparents: Celina & Joseph
|
22
|
+
* License
|
23
|
+
GPL version 3
|
data/README.rdoc
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
[Cejo]
|
2
|
+
Miscellaneous Unix automation and services utilities
|
3
|
+
|
4
|
+
[Sections]
|
5
|
+
[Ops]
|
6
|
+
Bundle of automation tasks
|
7
|
+
|
8
|
+
[Media]
|
9
|
+
Management of media
|
10
|
+
|
11
|
+
[Projects]
|
12
|
+
Instructions to install FLOSS Project
|
13
|
+
|
14
|
+
[Distro]
|
15
|
+
A one-do-it-all package porcelain for most use Distro Linux package managers
|
16
|
+
|
17
|
+
[Install]
|
18
|
+
[rubygems]
|
19
|
+
gem install cejo
|
20
|
+
|
21
|
+
[local]
|
22
|
+
rake
|
23
|
+
|
24
|
+
[Why Cejo?]
|
25
|
+
Named after my grandparents: Celina & Joseph
|
26
|
+
|
27
|
+
[License]
|
28
|
+
GPL version 3
|
data/Rakefile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
* gemspec
|
2
|
+
#+begin_src ruby
|
3
|
+
spec.executables = spec.files.grep(%r{^exec/}) { |f| File.basename(f) }
|
4
|
+
|
5
|
+
spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
|
6
|
+
spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
7
|
+
spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
8
|
+
|
9
|
+
# Specify which files should be added to the gem when it is released.
|
10
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
11
|
+
#+end_src
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#+TILE: Timeline
|
2
|
+
|
3
|
+
* Help
|
4
|
+
* Services
|
5
|
+
** DONE Add simpler ioc
|
6
|
+
* Hives
|
7
|
+
** TODO Each hive has its own description to avoid duplication
|
8
|
+
* Features
|
9
|
+
** DONE Each feature has its own description to avoid duplication
|
10
|
+
* Sensible default but Configurable
|
11
|
+
** Ops/Oss
|
12
|
+
- choose which project to manage
|
13
|
+
- choose folder to store projects
|
14
|
+
- parser if list is correct format
|
15
|
+
- clean up
|
16
|
+
|
17
|
+
* Easy Install
|
18
|
+
** Rubygem
|
19
|
+
** Podman/Docker Container
|
20
|
+
** Ruby Auto Bootstrap
|
21
|
+
* Organization
|
22
|
+
** Modification as branches
|
23
|
+
** Hotfix way
|
24
|
+
* Clients
|
25
|
+
** TODO A yet more abstract implementation
|
26
|
+
* Users
|
27
|
+
** General User
|
28
|
+
** Power User
|
29
|
+
** More user interaction
|
30
|
+
* Cli
|
31
|
+
** TODO Thor
|
32
|
+
** TODO Better Parser
|
33
|
+
** DONE GNU structure
|
34
|
+
<command> [opitions] <command-option> <argument>
|
35
|
+
** DONE Return symbols
|
36
|
+
** Prettier Cli
|
37
|
+
*** DONE Utils
|
38
|
+
*** DONE Ops/Floss
|
39
|
+
* Tests
|
40
|
+
** TDD
|
41
|
+
** BDD
|
42
|
+
* Fails gracefully
|
43
|
+
** Exceptions
|
44
|
+
** TODO Oss
|
45
|
+
** TODO Dots
|
46
|
+
* Distro
|
47
|
+
** Standalone App
|
48
|
+
** TODO Distro section require different cli arg organization and parser, as way more args
|
49
|
+
* Projects
|
50
|
+
* Ops
|
51
|
+
* Media
|
52
|
+
* Refactoring
|
53
|
+
** TODO Simpler/Smaller methods
|
54
|
+
** DONE Floss Class needs to be cohesive. Separating it three class may help with it: clone, pull and core.
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "cejo"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/cejo.gemspec
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/cejo'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'cejo'
|
7
|
+
spec.summary = 'Debian automation and services utilities.'
|
8
|
+
spec.description = File.read(File.join(File.dirname(__FILE__), 'README.rdoc'))
|
9
|
+
spec.version = Cejo::VERSION
|
10
|
+
spec.author = 'EAS Barbosa'
|
11
|
+
spec.email = 'easbarbosa@tutanota.com'
|
12
|
+
spec.platform = Gem::Platform::RUBY
|
13
|
+
spec.homepage = 'https://git.sr.ht/~easbarbosa/cejo'
|
14
|
+
spec.license = 'GPL-3.0'
|
15
|
+
spec.require_paths = ['lib']
|
16
|
+
spec.bindir = 'exe'
|
17
|
+
spec.executables = %w[cejo]
|
18
|
+
spec.test_files = Dir.glob('{spec,test}/**/*.rb')
|
19
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
20
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 3.0.0')
|
21
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
22
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(tes|spec|features)/}) }
|
23
|
+
end
|
24
|
+
spec.extra_rdoc_files = %w[README.rdoc cejo.rdoc]
|
25
|
+
spec.rdoc_options << '--title' << 'cejo' << '--main' << 'README.rdoc' << '-ri'
|
26
|
+
|
27
|
+
# production
|
28
|
+
spec.add_runtime_dependency('dry-auto_inject')
|
29
|
+
spec.add_runtime_dependency('dry-container')
|
30
|
+
spec.add_runtime_dependency('git')
|
31
|
+
spec.add_runtime_dependency('tty-spinner')
|
32
|
+
|
33
|
+
# development
|
34
|
+
spec.add_development_dependency('bundler')
|
35
|
+
spec.add_development_dependency('coderay')
|
36
|
+
spec.add_development_dependency('gem-man')
|
37
|
+
spec.add_development_dependency('gli')
|
38
|
+
spec.add_development_dependency('minitest')
|
39
|
+
spec.add_development_dependency('pry')
|
40
|
+
spec.add_development_dependency('rake')
|
41
|
+
spec.add_development_dependency('rdoc')
|
42
|
+
spec.add_development_dependency('reek')
|
43
|
+
spec.add_development_dependency('ronn')
|
44
|
+
spec.add_development_dependency('rspec')
|
45
|
+
spec.add_development_dependency('rubocop')
|
46
|
+
spec.add_development_dependency('rufo')
|
47
|
+
spec.add_development_dependency('shoulda')
|
48
|
+
spec.add_development_dependency('solargraph')
|
49
|
+
spec.add_development_dependency('sorbet')
|
50
|
+
end
|
data/cejo.rdoc
ADDED
data/exe/cejo
ADDED
@@ -0,0 +1,298 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'cejo'
|
5
|
+
|
6
|
+
require 'gli'
|
7
|
+
require 'dry-container'
|
8
|
+
|
9
|
+
# and then, there was fire.
|
10
|
+
class App
|
11
|
+
extend GLI::App
|
12
|
+
|
13
|
+
program_desc 'Debian automation and services utilities.'
|
14
|
+
|
15
|
+
version Cejo::VERSION
|
16
|
+
|
17
|
+
subcommand_option_handling :normal
|
18
|
+
arguments :normal
|
19
|
+
|
20
|
+
desc 'Describe some switch here'
|
21
|
+
switch %i[s switch]
|
22
|
+
|
23
|
+
desc 'Describe some flag here'
|
24
|
+
default_value 'the default'
|
25
|
+
arg_name 'The name of the argument'
|
26
|
+
flag %i[f flagname]
|
27
|
+
|
28
|
+
def self.services
|
29
|
+
container = Dry::Container.new
|
30
|
+
container.register(:folders, Cejo::Services::Folders.new)
|
31
|
+
container.register(:utils, Cejo::Services::Utils.new)
|
32
|
+
end
|
33
|
+
|
34
|
+
desc 'Miscellaneous system operations front-end'
|
35
|
+
arg_name 'Describe arguments to ops here'
|
36
|
+
command :ops do |c|
|
37
|
+
utils = services.resolve(:utils)
|
38
|
+
|
39
|
+
c.desc 'Manage System Volume'
|
40
|
+
c.arg '[up, down, toggle]'
|
41
|
+
c.command :volume do |volume|
|
42
|
+
volume.action do |_, _, args|
|
43
|
+
Cejo::Ops::Volume.new(utils, args.first).run
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
c.desc 'Mirror user DATA partition folders to $HOME'
|
48
|
+
c.arg '/folder/path/'
|
49
|
+
c.command :homey do |homey|
|
50
|
+
homey.action do |_, _, args|
|
51
|
+
Cejo::Ops::Homey.new(args.first).run
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
c.desc 'Mirror Lar files in $HOME.'
|
56
|
+
c.arg '/folder/path/'
|
57
|
+
c.command :dots do |dots|
|
58
|
+
dots.action do |_, _, args|
|
59
|
+
Cejo::Ops::Dots.new(utils, args.first).run
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
c.desc 'Display System Hardware Information.'
|
64
|
+
c.command :sysinfo do |sysinfo|
|
65
|
+
sysinfo.action do
|
66
|
+
Cejo::Ops::Sysinfo.new(utils).run
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
c.desc 'Take a shot of the marvelous screen'
|
71
|
+
c.arg '[full, partial]'
|
72
|
+
c.command :screenshot do |screenshot|
|
73
|
+
screenshot.action do |_, _, args|
|
74
|
+
Cejo::Ops::Screenshot.new(utils, args.first).run
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
c.desc 'Manage System brightness.'
|
79
|
+
c.arg '[up down]'
|
80
|
+
c.command :brightness do |brightness|
|
81
|
+
brightness.action do |_, _, args|
|
82
|
+
Cejo::Ops::Brightness.new(utils, args.first).run
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
desc 'Manage System media features'
|
88
|
+
arg_name 'Describe arguments to media here'
|
89
|
+
command :media do |c|
|
90
|
+
c.desc 'Get media pointed in url as video or audio.'
|
91
|
+
c.arg 'url [vorbis, flac, mp3]'
|
92
|
+
c.command :get do |get|
|
93
|
+
get.action do |_, _, args|
|
94
|
+
media = args.first if args
|
95
|
+
codec = args.last if args.last
|
96
|
+
Cejo::Media::Get.new(media, codec).run
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
c.desc 'Play file, random media in folder or media pointed in url. (mpv)'
|
101
|
+
c.arg '[url, /path/to/folder, /path/to/file]'
|
102
|
+
c.command :play do |play|
|
103
|
+
play.action do |_, _, args|
|
104
|
+
Cejo::Media::Play.new(args.first).run
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
desc 'Build Cool Projects.'
|
110
|
+
arg_name 'Describe arguments to projects here'
|
111
|
+
command :projects do |c|
|
112
|
+
c.desc 'GNU Emacs Editor'
|
113
|
+
c.command :emacs do |emacs|
|
114
|
+
emacs.action do
|
115
|
+
Cejo::Projects::Emacs.new(services).run
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
c.desc 'Suckless Terminal'
|
120
|
+
c.command :st do |st|
|
121
|
+
st.action do
|
122
|
+
Cejo::Projects::St.new(services).run
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
c.desc 'Suckless window manager'
|
127
|
+
c.command :dwm do |dwm|
|
128
|
+
dwm.action do
|
129
|
+
Cejo::Projects::Dwm.new(services).run
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
c.desc 'Ruby Programming language'
|
134
|
+
c.command :ruby do |ruby|
|
135
|
+
ruby.action do
|
136
|
+
Cejo::Projects::Ruby.new(services).run
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
desc 'A distro packager managers front-end just run it'
|
142
|
+
arg_name 'Describe arguments to distro here'
|
143
|
+
command :distro do |c|
|
144
|
+
utils = services.resolve(:utils)
|
145
|
+
folder = services.resolve(:folders).cejo_config
|
146
|
+
base = Cejo::Distro::Base.new(folder, utils)
|
147
|
+
|
148
|
+
c.desc 'Install a Package from Repositories'
|
149
|
+
c.arg 'arguments'
|
150
|
+
c.command :install do |install|
|
151
|
+
install.action do |_, _, args|
|
152
|
+
base.tap do |x|
|
153
|
+
x.action = :install
|
154
|
+
x.arguments = args
|
155
|
+
end.run
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
c.desc 'Remove One or More Installed Packages'
|
160
|
+
c.arg 'arguments'
|
161
|
+
c.command :remove do |remove|
|
162
|
+
remove.action do |_, _, args|
|
163
|
+
base.tap do |x|
|
164
|
+
x.action = :remove
|
165
|
+
x.arguments = args
|
166
|
+
end.run
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
c.desc 'Find a Package'
|
171
|
+
c.arg 'arguments'
|
172
|
+
c.command :search do |search|
|
173
|
+
search.action do |_, _, args|
|
174
|
+
base.tap do |x|
|
175
|
+
x.action = :search
|
176
|
+
x.arguments = args
|
177
|
+
end.run
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
c.desc 'Update Package Lists'
|
182
|
+
c.command :update do |update|
|
183
|
+
update.action do
|
184
|
+
base.tap do |x|
|
185
|
+
x.action = :update
|
186
|
+
end.run
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
c.desc 'Upgrade Installed Packages'
|
191
|
+
c.command :upgrade do |upgrade|
|
192
|
+
upgrade.action do
|
193
|
+
base.tap do |x|
|
194
|
+
x.action = :upgrade
|
195
|
+
end.run
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
c.desc 'Clean system residual packages dependencies'
|
200
|
+
c.arg 'arguments'
|
201
|
+
c.command :clean do |clean|
|
202
|
+
clean.action do |_, _, args|
|
203
|
+
base.tap do |x|
|
204
|
+
x.action = :clean
|
205
|
+
x.arguments = args
|
206
|
+
end.run
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
c.desc 'Download package binary'
|
211
|
+
c.arg 'arguments'
|
212
|
+
c.command :download do |download|
|
213
|
+
download.action do |_, _, args|
|
214
|
+
base.tap do |x|
|
215
|
+
x.action = :download
|
216
|
+
x.arguments = args
|
217
|
+
end.run
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
c.desc 'List installed packages'
|
222
|
+
c.arg 'arguments'
|
223
|
+
c.command :installed do |installed|
|
224
|
+
installed.action do |_, _, args|
|
225
|
+
base.tap do |x|
|
226
|
+
x.action = :installed
|
227
|
+
x.arguments = args
|
228
|
+
end.run
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
c.desc 'View Info About a Specific Package'
|
233
|
+
c.arg 'arguments'
|
234
|
+
c.command :info do |info|
|
235
|
+
info.action do |_, _, args|
|
236
|
+
base.tap do |x|
|
237
|
+
x.action = :info
|
238
|
+
x.arguments = args
|
239
|
+
end.run
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
c.desc 'Fix system issues'
|
244
|
+
c.arg 'arguments'
|
245
|
+
c.command :fix do |fix|
|
246
|
+
fix.action do |_, _, args|
|
247
|
+
base.tap do |x|
|
248
|
+
x.action = :fix
|
249
|
+
x.arguments = args
|
250
|
+
end.run
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
desc 'Grab Floss Projects Repositories source'
|
256
|
+
arg_name 'Describe arguments to floss here'
|
257
|
+
command :floss do |c|
|
258
|
+
utils = services.resolve(:utils)
|
259
|
+
folders = services.resolve(:folders)
|
260
|
+
|
261
|
+
c.desc 'Archive FLOSS Projects'
|
262
|
+
c.command :archive do |archive|
|
263
|
+
archive.action do
|
264
|
+
Cejo::Floss::Core.new(folders, utils, :archive).run
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
c.desc 'Grab FLOSS Projects'
|
269
|
+
c.command :grab do |grab|
|
270
|
+
grab.action do
|
271
|
+
Cejo::Floss::Core.new(folders, utils, :grab).run
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
# pre do |global, command, options, args|
|
277
|
+
# # Pre logic here
|
278
|
+
# # Return true to proceed; false to abort and not call the
|
279
|
+
# # chosen command
|
280
|
+
# # Use skips_pre before a command to skip this block
|
281
|
+
# # on that command only
|
282
|
+
# true
|
283
|
+
# end
|
284
|
+
|
285
|
+
# post do |global, command, options, args|
|
286
|
+
# # Post logic here
|
287
|
+
# # Use skips_post before a command to skip this
|
288
|
+
# # block on that command only
|
289
|
+
# end
|
290
|
+
|
291
|
+
# on_error do |exception|
|
292
|
+
# # Error logic here
|
293
|
+
# # return false to skip default error handling
|
294
|
+
# true
|
295
|
+
# end
|
296
|
+
end
|
297
|
+
|
298
|
+
exit App.run(ARGV)
|