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.
Files changed (83) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +0 -0
  5. data/.rufo +3 -0
  6. data/.travis.yml +6 -0
  7. data/CODE_OF_CONDUCT.md +74 -0
  8. data/Gemfile +6 -0
  9. data/INSTALL +2 -0
  10. data/LICENSE +674 -0
  11. data/README.org +23 -0
  12. data/README.rdoc +28 -0
  13. data/Rakefile +6 -0
  14. data/annotations/legacy.org +11 -0
  15. data/annotations/todo.org +54 -0
  16. data/bin/console +14 -0
  17. data/bin/setup +9 -0
  18. data/cejo.gemspec +50 -0
  19. data/cejo.rdoc +5 -0
  20. data/exe/cejo +298 -0
  21. data/lib/cejo.rb +42 -0
  22. data/lib/cejo/distro/base.rb +52 -0
  23. data/lib/cejo/distro/commands.rb +26 -0
  24. data/lib/cejo/distro/current_packager.rb +18 -0
  25. data/lib/cejo/distro/help.rb +9 -0
  26. data/lib/cejo/distro/need.rb +32 -0
  27. data/lib/cejo/distro/parsed_commands.rb +23 -0
  28. data/lib/cejo/distro/translate_action.rb +11 -0
  29. data/lib/cejo/floss/archive.rb +49 -0
  30. data/lib/cejo/floss/core.rb +55 -0
  31. data/lib/cejo/floss/grab.rb +44 -0
  32. data/lib/cejo/floss/project_info.rb +28 -0
  33. data/lib/cejo/media/get.rb +54 -0
  34. data/lib/cejo/media/play.rb +45 -0
  35. data/lib/cejo/ops/brightness.rb +37 -0
  36. data/lib/cejo/ops/dots.rb +98 -0
  37. data/lib/cejo/ops/homey.rb +76 -0
  38. data/lib/cejo/ops/screenshot.rb +78 -0
  39. data/lib/cejo/ops/sysinfo.rb +27 -0
  40. data/lib/cejo/ops/volume/sound_manager.rb +45 -0
  41. data/lib/cejo/ops/volume/volume.rb +117 -0
  42. data/lib/cejo/projects/builder.rb +138 -0
  43. data/lib/cejo/projects/dwm.rb +23 -0
  44. data/lib/cejo/projects/emacs.rb +23 -0
  45. data/lib/cejo/projects/ruby.rb +23 -0
  46. data/lib/cejo/projects/st.rb +23 -0
  47. data/lib/cejo/services/folders.rb +21 -0
  48. data/lib/cejo/services/utils.rb +54 -0
  49. data/lib/cejo/version.rb +5 -0
  50. data/lib/tasks/list.rake +7 -0
  51. data/lib/tasks/man.rake +7 -0
  52. data/lib/tasks/spec.rake +5 -0
  53. data/lib/tasks/test.rake +7 -0
  54. data/man/cejo.1.ronn +0 -0
  55. data/spec/distro/action_spec.rb +21 -0
  56. data/spec/distro/base_spec.rb +67 -0
  57. data/spec/distro/commands_spec.rb +22 -0
  58. data/spec/distro/current_packager_spec.rb +17 -0
  59. data/spec/distro/need_spec.rb +22 -0
  60. data/spec/floss/archive_spec.rb +1 -0
  61. data/spec/floss/core_spec.rb +1 -0
  62. data/spec/floss/grab_spec.rb +1 -0
  63. data/spec/media/get_spec.rb +20 -0
  64. data/spec/media/play_spec.rb +41 -0
  65. data/spec/ops/ops_brightness_spec.rb +16 -0
  66. data/spec/ops/ops_volume_spec.rb +22 -0
  67. data/spec/spec_helper.rb +96 -0
  68. data/spec/utils_spec.rb +18 -0
  69. data/test/test_cejo.rb +16 -0
  70. data/test/test_distro_base.rb +13 -0
  71. data/test/test_floss.rb +13 -0
  72. data/test/test_media_get.rb +0 -0
  73. data/test/test_media_play.rb +0 -0
  74. data/test/test_ops_brightness.rb +0 -0
  75. data/test/test_ops_dots.rb +0 -0
  76. data/test/test_ops_homer.rb +0 -0
  77. data/test/test_ops_oss.rb +18 -0
  78. data/test/test_ops_screenshot.rb +0 -0
  79. data/test/test_ops_sysinfo.rb +0 -0
  80. data/test/test_ops_volume.rb +0 -0
  81. data/test/test_projects_builder.rb +0 -0
  82. data/test/test_projects_emacs.rb +0 -0
  83. 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,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -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
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+ IFS=$'\n\t'
5
+ set -vx
6
+
7
+ bundle install
8
+
9
+ # Do any other automated setup that you need to do here
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
@@ -0,0 +1,5 @@
1
+ = cejo
2
+
3
+ Generate this with
4
+ cejo _doc
5
+ After you have described your command line interface
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)