cejo 0.0.5
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 +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)
|