rcfiles 1.3.54
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rcfiles might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/README.md +562 -0
- data/bin/rcfiles +12 -0
- data/bin/rcfiles_run_it +7 -0
- data/doc/README.gen +515 -0
- data/img/LOGO_FOR_THE_RCFILES_PROJECT.png +0 -0
- data/lib/rcfiles/aggregate_all_rcfiles/aggregate_all_rcfiles.rb +137 -0
- data/lib/rcfiles/class/colours.rb +54 -0
- data/lib/rcfiles/class/initialize.rb +66 -0
- data/lib/rcfiles/class/misc.rb +300 -0
- data/lib/rcfiles/class/rcfiles.rb +31 -0
- data/lib/rcfiles/class/reset.rb +26 -0
- data/lib/rcfiles/class/run.rb +17 -0
- data/lib/rcfiles/colours/colours.rb +137 -0
- data/lib/rcfiles/commandline/commandline.rb +190 -0
- data/lib/rcfiles/constants/constants.rb +253 -0
- data/lib/rcfiles/directory_aliases/README.md +2 -0
- data/lib/rcfiles/directory_aliases/directory_aliases.rb +868 -0
- data/lib/rcfiles/files/file_aliases.rb +78 -0
- data/lib/rcfiles/files/file_cd_aliases.rb +85 -0
- data/lib/rcfiles/files/file_ls_colours.rb +76 -0
- data/lib/rcfiles/files/file_path_variable.rb +74 -0
- data/lib/rcfiles/files/file_pkgconfig.rb +74 -0
- data/lib/rcfiles/files/file_programs_aliases.rb +68 -0
- data/lib/rcfiles/files/file_ps1.rb +80 -0
- data/lib/rcfiles/files/file_system_settings.rb +75 -0
- data/lib/rcfiles/help/help.rb +48 -0
- data/lib/rcfiles/no_colours.rb +13 -0
- data/lib/rcfiles/project/project.rb +45 -0
- data/lib/rcfiles/rcfiles/README.md +5 -0
- data/lib/rcfiles/rcfiles/aliases_rc +25077 -0
- data/lib/rcfiles/rcfiles/cd_aliases_rc +17138 -0
- data/lib/rcfiles/rcfiles/cflags_rc +9 -0
- data/lib/rcfiles/rcfiles/compile_rc +11 -0
- data/lib/rcfiles/rcfiles/file_information_rc +16 -0
- data/lib/rcfiles/rcfiles/gnome_rc +10 -0
- data/lib/rcfiles/rcfiles/kde_rc +17 -0
- data/lib/rcfiles/rcfiles/kernel_rc +12 -0
- data/lib/rcfiles/rcfiles/lang_rc +9 -0
- data/lib/rcfiles/rcfiles/ldflags_rc +8 -0
- data/lib/rcfiles/rcfiles/ls_colours_rc +9 -0
- data/lib/rcfiles/rcfiles/network_rc +37 -0
- data/lib/rcfiles/rcfiles/path_variable_rc +9 -0
- data/lib/rcfiles/rcfiles/pkgconfig_rc +9 -0
- data/lib/rcfiles/rcfiles/programs_aliases_rc +19014 -0
- data/lib/rcfiles/rcfiles/ps1_rc +9 -0
- data/lib/rcfiles/rcfiles/special_aliases_rc +8 -0
- data/lib/rcfiles/rcfiles/system_rc +13 -0
- data/lib/rcfiles/rcfiles/system_settings_rc +192 -0
- data/lib/rcfiles/rcfiles/term_rc +9 -0
- data/lib/rcfiles/rcfiles/video_rc +24 -0
- data/lib/rcfiles/requires/require_the_directory_aliases.rb +7 -0
- data/lib/rcfiles/requires/require_the_rcfiles_constants.rb +18 -0
- data/lib/rcfiles/requires/require_the_rcfiles_project.rb +67 -0
- data/lib/rcfiles/requires/try_to_require_syck_and_psych.rb +18 -0
- data/lib/rcfiles/toplevel_methods/autogenerate_rc_file_from_this_yaml_file.rb +102 -0
- data/lib/rcfiles/toplevel_methods/change_directory.rb +16 -0
- data/lib/rcfiles/toplevel_methods/convert.rb +118 -0
- data/lib/rcfiles/toplevel_methods/convert_global_variables_in_the_cd_aliases_file_to_a_standalone_yaml_file.rb +50 -0
- data/lib/rcfiles/toplevel_methods/create_windows_cd_aliases_bat_file.rb +51 -0
- data/lib/rcfiles/toplevel_methods/e.rb +16 -0
- data/lib/rcfiles/toplevel_methods/esystem.rb +19 -0
- data/lib/rcfiles/toplevel_methods/generate_yaml_files.rb +148 -0
- data/lib/rcfiles/toplevel_methods/infer.rb +83 -0
- data/lib/rcfiles/toplevel_methods/is_on_roebe.rb +16 -0
- data/lib/rcfiles/toplevel_methods/main_directory.rb +108 -0
- data/lib/rcfiles/toplevel_methods/misc.rb +343 -0
- data/lib/rcfiles/toplevel_methods/n_registered_aliases_in_total.rb +55 -0
- data/lib/rcfiles/toplevel_methods/no_file_exists_at.rb +19 -0
- data/lib/rcfiles/toplevel_methods/notifications.rb +35 -0
- data/lib/rcfiles/toplevel_methods/rds.rb +16 -0
- data/lib/rcfiles/toplevel_methods/remove_newlines.rb +29 -0
- data/lib/rcfiles/toplevel_methods/report.rb +53 -0
- data/lib/rcfiles/toplevel_methods/return_standard_header.rb +36 -0
- data/lib/rcfiles/toplevel_methods/run_it.rb +46 -0
- data/lib/rcfiles/toplevel_methods/save_file.rb +27 -0
- data/lib/rcfiles/toplevel_methods/use_psych_or_syck.rb +50 -0
- data/lib/rcfiles/toplevel_methods/use_quotes.rb +68 -0
- data/lib/rcfiles/toplevel_methods/verbosity.rb +28 -0
- data/lib/rcfiles/version/version.rb +26 -0
- data/lib/rcfiles/yaml/aliases.yml +27992 -0
- data/lib/rcfiles/yaml/cd_aliases.yml +17939 -0
- data/lib/rcfiles/yaml/global_variables/README.md +3 -0
- data/lib/rcfiles/yaml/global_variables/global_variables_extracted_from_the_file_cd_aliases.yml +125 -0
- data/lib/rcfiles/yaml/ls_colours.yml +128 -0
- data/lib/rcfiles/yaml/path_variable.yml +15 -0
- data/lib/rcfiles/yaml/pkgconfig.yml +46 -0
- data/lib/rcfiles/yaml/programs_aliases.yml +20718 -0
- data/lib/rcfiles/yaml/ps1.yml +82 -0
- data/lib/rcfiles/yaml/store_into_this_directory.yml +1 -0
- data/lib/rcfiles/yaml/system_settings.yml +526 -0
- data/lib/rcfiles/yaml/use_psych_or_syck.yml +1 -0
- data/lib/rcfiles.rb +1 -0
- data/rcfiles.gemspec +57 -0
- data/test/testing_directory_aliases.rb +62 -0
- data/test/testing_using_another_path_to_directory_aliases.rb +17 -0
- data/test/testing_yaml_to_rcfiles.rb +9 -0
- metadata +202 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7aa80a33b698b4e1deaa3145867593ba19d340116ac3d6f8007e4a70e52743a1
|
4
|
+
data.tar.gz: ea4593168258396c1fd1d83b0bd2e51571d4d8a5083c60dcd8a145d9df032c69
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7189ae9db000206a35937df660cf814e83bac4154c785821655f25a2f2679fe59cd1459ee5de0b799cb362b4a6aac4ea17fe353e934693713000e8b0c7f5c2cc
|
7
|
+
data.tar.gz: f06b9940f62cba13c9419991cf00f50ef30e9d260e0739636046f0d07b9b3a24daaa76af12f3456a0b927fba5dc64583b08fed87c11c206fbf2212112a39a35b
|
data/README.md
ADDED
@@ -0,0 +1,562 @@
|
|
1
|
+
[![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://www.gobolinux.org/)
|
2
|
+
[![forthebadge](https://forthebadge.com/images/badges/made-with-ruby.svg)](https://www.ruby-lang.org/en/)
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/rcfiles.svg)](https://badge.fury.io/rb/rcfiles)
|
4
|
+
|
5
|
+
This gem was <b>last updated</b> on the <span style="color: darkblue; font-weight: bold">16.04.2024</span> (dd.mm.yyyy notation), at <span style="color: steelblue; font-weight: bold">17:37:27</span> o'clock.
|
6
|
+
|
7
|
+
![logo](https://i.imgur.com/Mf9u97a.png)
|
8
|
+
|
9
|
+
## Goals for the rcfiles project
|
10
|
+
|
11
|
+
This project will try to automatically generate valid rc-files for shells
|
12
|
+
such as bash or zsh. **rc-files** are resource-files typically used by
|
13
|
+
shells, which can be sourced in that shell. The default use case will
|
14
|
+
refer to the **bash** shell since that is the shell that I do happen
|
15
|
+
to use most of the time.
|
16
|
+
|
17
|
+
These **rc-files** are generated from yaml files. These yaml files in turn
|
18
|
+
are, mostly, also distributed with this project, but of course you can use
|
19
|
+
your own yaml files as well. More on this elsewhere in this document, but
|
20
|
+
in principle the rcfiles project could also autogenerate various .rb files
|
21
|
+
rather than rc-files, or depend on yaml files alone. This will be considered
|
22
|
+
in the long run, but for the time being (written in **April 2019**) this
|
23
|
+
is not yet a possibility.
|
24
|
+
|
25
|
+
The main idea for this project is, evidently, my own use case, which is
|
26
|
+
to primarily make my aliases, custom export settings in shells, and so
|
27
|
+
forth, available for other/new computers quickly.
|
28
|
+
|
29
|
+
## Requiring the rcfiles project
|
30
|
+
|
31
|
+
The project is required via this way:
|
32
|
+
|
33
|
+
require 'rcfiles'
|
34
|
+
|
35
|
+
Of course you could use **load** too, but require is more common and,
|
36
|
+
in my opinion, better, unless you need the behaviour of **load**
|
37
|
+
exactly.
|
38
|
+
|
39
|
+
## The main directory
|
40
|
+
|
41
|
+
The **main directory**, as far as the project here is concerned,
|
42
|
+
is simply the directory into which the various rc-files will be
|
43
|
+
autogenerated.
|
44
|
+
|
45
|
+
On my **home system**, this is usually the directory called
|
46
|
+
<b>/AUTOGENERATED/</b>.
|
47
|
+
|
48
|
+
The reason as to why I am using such a short, top-level directory is
|
49
|
+
that it is quite convenient for me to navigate to it or source the
|
50
|
+
various rc-files generated from that directory, such as in:
|
51
|
+
|
52
|
+
. /AUTOGENERATED/aliases_rc
|
53
|
+
|
54
|
+
However had, there is one **obvious drawback** with this approach - you
|
55
|
+
need to have write permission into that directory close to the **root**
|
56
|
+
of the filesystem, if you wish to auto-generate rc-files into that
|
57
|
+
directory. And this is not always possible, such as when you are in
|
58
|
+
a **restricted environment** (workspace-computers in a university, for
|
59
|
+
example). Or it may be unwanted by you, anyway.
|
60
|
+
|
61
|
+
Thus, it must be possible to specify another directory that is to
|
62
|
+
be used here.
|
63
|
+
|
64
|
+
If you want to **query the current main directory** in use then you
|
65
|
+
can use the following **toplevel API**:
|
66
|
+
|
67
|
+
Rcfiles.main_directory?
|
68
|
+
|
69
|
+
If you want to set towards a **new main directory**, then you can
|
70
|
+
use the **set_main_directory()** method:
|
71
|
+
|
72
|
+
Rcfiles.set_main_directory
|
73
|
+
|
74
|
+
As argument to this method simply pass the directory that you wish
|
75
|
+
to use to that method.
|
76
|
+
|
77
|
+
So, for example, say that your name is john, and you want to
|
78
|
+
keep the rc-files in your home directory on a Linux system, so
|
79
|
+
you may want to do this:
|
80
|
+
|
81
|
+
Rcfiles.set_main_directory('/home/john/rcfiles/')
|
82
|
+
|
83
|
+
Ideally make sure that the directory already exists, and that
|
84
|
+
you can write/read in/from that directory. But if this is your
|
85
|
+
home directory then you will typically have this access-permission,
|
86
|
+
anyway. Same with **/tmp/** on most linux distributions.
|
87
|
+
|
88
|
+
You can also use a simpler toplevel API such as:
|
89
|
+
|
90
|
+
Rcfiles.set_path
|
91
|
+
|
92
|
+
## Commandline usage of this project:
|
93
|
+
|
94
|
+
If you do not want to auto-generate rc-files that have a "" quote, as
|
95
|
+
part of its value setting (the part on the right side of an alias),
|
96
|
+
such as for use in projects such as <b>cmder</b>, then you can use
|
97
|
+
this option:
|
98
|
+
|
99
|
+
--no-quotes
|
100
|
+
|
101
|
+
This may also be useful if you have to use a shell such as <b>cmder</b>
|
102
|
+
which appears to only support unquoted aliases.
|
103
|
+
|
104
|
+
So invoke the executable in bin/ like this:
|
105
|
+
|
106
|
+
rcfile --cmder-target
|
107
|
+
rcfile --cmder
|
108
|
+
|
109
|
+
To see where the main .yml files are, do this:
|
110
|
+
|
111
|
+
rcfiles --report
|
112
|
+
|
113
|
+
To find out hwo many aliases are part of this project, do:
|
114
|
+
|
115
|
+
rcfiles --n_aliases? # 46337 aliases are available in this project (28.08.2020).
|
116
|
+
|
117
|
+
## How to use this project from within ruby-code
|
118
|
+
|
119
|
+
You first have to require this project, obviously:
|
120
|
+
|
121
|
+
require 'rcfiles'
|
122
|
+
|
123
|
+
Now - in order to batch-generate the various rc-files, you can use
|
124
|
+
an API such as the following one:
|
125
|
+
|
126
|
+
Rcfiles.run
|
127
|
+
Rcfiles.new
|
128
|
+
|
129
|
+
This defaults to my own aliases. For now this is how it is but in
|
130
|
+
future releases, people will be able to use their own custom
|
131
|
+
aliases.
|
132
|
+
|
133
|
+
If you want to store at the rc-files at a specific location,
|
134
|
+
such as a certain <b>directory</b>, then you can use the
|
135
|
+
symbol :store_at such as in the following example:
|
136
|
+
|
137
|
+
Rcfiles.new(store_at: Dir.pwd)
|
138
|
+
|
139
|
+
The second argument, in this case Dir.pwd, shall denote the
|
140
|
+
directory that you wish to use here.
|
141
|
+
|
142
|
+
This may be especially useful if you have no access to
|
143
|
+
the base directory at / e. g. when you are in a restricted
|
144
|
+
environment (like workstations in a university) or when
|
145
|
+
you simply want to use another directory name altogether.
|
146
|
+
|
147
|
+
The above API is a bit cumbersome, though, so you can use
|
148
|
+
any of the following toplevel APIs instead:
|
149
|
+
|
150
|
+
Rcfiles.set_store_into_this_directory
|
151
|
+
Rcfiles.set_main_directory
|
152
|
+
Rcfiles.set_path
|
153
|
+
Rcfiles.store_at=
|
154
|
+
Rcfiles.store_at=
|
155
|
+
Rcfiles.set_store_here
|
156
|
+
Rcfiles.set_store_into
|
157
|
+
|
158
|
+
## Generating individual rc-aliases
|
159
|
+
|
160
|
+
There are several ways how to generate individual rc-aliases,
|
161
|
+
such as via <b>Rcfiles.new(:cd_aliases)</b>.
|
162
|
+
|
163
|
+
But there are other toplevel module-methods as well, such as the
|
164
|
+
following variants:
|
165
|
+
|
166
|
+
Rcfiles.generate :cd_aliases
|
167
|
+
Rcfiles.generate :aliases
|
168
|
+
Rcfiles.generate :program_aliases
|
169
|
+
|
170
|
+
And numbers as input as well, if one wants to be even shorter:
|
171
|
+
|
172
|
+
Rcfiles.generate 1
|
173
|
+
Rcfiles.generate 2
|
174
|
+
Rcfiles.generate 3
|
175
|
+
|
176
|
+
Why so many different ways? I simply just want to auto-generate
|
177
|
+
these aliases, no matter the given input. These shortcuts generate my
|
178
|
+
bash-specific aliases, but since as of March 2018, I also changed the
|
179
|
+
code to generate aliases that work on Windows in the <b>cmder</b>
|
180
|
+
shell. **cmder** is a bit different in that it requires aliases without
|
181
|
+
quotes (aka no '' or "" may be used there).
|
182
|
+
|
183
|
+
## Determining the project's base directory
|
184
|
+
|
185
|
+
The toplevel "namespace" contains an instance variable called
|
186
|
+
**@project_base_directory**. This variable should point to
|
187
|
+
where the .rb files of this project are kept. Additionally
|
188
|
+
it will load up the .yml files that reside within the
|
189
|
+
**yml/** subdirectory there.
|
190
|
+
|
191
|
+
On my Linux home system, this works as-is, but other systems
|
192
|
+
may need to be a bit more flexible here, such as windows
|
193
|
+
perhaps, or systems where you may have no control over where
|
194
|
+
the .rb files may be placed (perhaps in a restricted
|
195
|
+
environment such as university campus).
|
196
|
+
|
197
|
+
Thus, you can modify the path to this directory via:
|
198
|
+
|
199
|
+
Rcfiles.set_project_base_directory()
|
200
|
+
|
201
|
+
You can also query the current path in use via:
|
202
|
+
|
203
|
+
Rcfiles.project_base_dir?
|
204
|
+
Rcfiles.project_base_directory?
|
205
|
+
|
206
|
+
## Using quotes in the generated shell-rc files
|
207
|
+
|
208
|
+
The toplevel API **Rcfiles.use_quotes?** is
|
209
|
+
used to determine whether quotes will be used or not. Some
|
210
|
+
programs, such as **cmder**, need quotes.
|
211
|
+
|
212
|
+
You can toggle this behaviour like so:
|
213
|
+
|
214
|
+
Rcfiles.use_quotes = true
|
215
|
+
Rcfiles.use_quotes = false
|
216
|
+
|
217
|
+
Or simply:
|
218
|
+
|
219
|
+
Rcfiles.toggle_quotes # <- I prefer the long variant
|
220
|
+
Rcfiles.toggle # <- But the short variant is also a possibility.
|
221
|
+
|
222
|
+
The latter method will flip the state, from true to false
|
223
|
+
or from false to true.
|
224
|
+
|
225
|
+
## Determining the file location of the different aliases in the project
|
226
|
+
|
227
|
+
Sometimes it may be necessary to set the path to yaml files, e. g. in
|
228
|
+
particular if you wish to make use of other .yml files that do **not**
|
229
|
+
come distributed with this project. That was the major reason why code
|
230
|
+
was added here, so that users can adapt the project to their use
|
231
|
+
cases.
|
232
|
+
|
233
|
+
Have a look at the following API, each one corresponding to the particular
|
234
|
+
.yml file (e. g. set_file_aliases() would denote the path to the file
|
235
|
+
called **aliases.yml**, whereas set_file_programs_aliases() would modify
|
236
|
+
the path to the file called **programs_aliases.yml** and so forth):
|
237
|
+
|
238
|
+
Rcfiles.set_file_aliases()
|
239
|
+
Rcfiles.set_programs_aliases()
|
240
|
+
Rcfiles.set_cd_aliases()
|
241
|
+
|
242
|
+
## Rcfiles.report
|
243
|
+
|
244
|
+
You can use the toplevel method **Rcfiles.report** to report
|
245
|
+
some information about the Rcfiles project, such as from
|
246
|
+
which paths it will obtain information.
|
247
|
+
|
248
|
+
This functionality was necessary because we can re-define the paths
|
249
|
+
that are used to generate rc-files at any time; thus, we needed a
|
250
|
+
way to **query** the full path to these different files.
|
251
|
+
|
252
|
+
## Rcfiles.infer
|
253
|
+
|
254
|
+
The toplevel method **Rcfiles.infer** can be called to
|
255
|
+
designate the path to one of the three main .yml files of this
|
256
|
+
project. It is thus similar to the three variants documented
|
257
|
+
above in this file, such as **Rcfiles.set_file_aliases()**,
|
258
|
+
**Rcfiles.set_programs_aliases()** and
|
259
|
+
**Rcfiles.set_cd_aliases()**. The difference is that
|
260
|
+
**infer()** is a lot shorter - and a lot simpler, too.
|
261
|
+
|
262
|
+
You only have to provide the path to this .yml file at hand.
|
263
|
+
|
264
|
+
Generic usage examples:
|
265
|
+
|
266
|
+
Rcfiles.infer 'aliases.yml'
|
267
|
+
Rcfiles.infer 'cd_aliases.yml'
|
268
|
+
Rcfiles.infer 'programs_aliases.yml'
|
269
|
+
|
270
|
+
In these cases these files will be automatically used, with
|
271
|
+
the path designed here. I recommend to first copy the .yml
|
272
|
+
files to e. g. your working home directory, and then call
|
273
|
+
the three .infer methods. That should help if for whatever
|
274
|
+
reason your ruby installation is unable to find the
|
275
|
+
path - or if you simply wish to use other .yml files, too.
|
276
|
+
|
277
|
+
## Colours
|
278
|
+
|
279
|
+
By default, **Rcfiles** will make use of **colours**, as defined by
|
280
|
+
the 'colours' gem.
|
281
|
+
|
282
|
+
However had, this is **optional** and ultimately not really necessary -
|
283
|
+
it is just a convenience feature.
|
284
|
+
everyone.
|
285
|
+
|
286
|
+
If you would rather **NOT** want to use the **colours gem**, or may
|
287
|
+
encounter an error related to colours, you can change this either by
|
288
|
+
requiring the rcfiles-project a bit differently, such as through
|
289
|
+
either of these two ways (which are the same):
|
290
|
+
|
291
|
+
require 'rcfiles/no_colours'
|
292
|
+
require 'rcfiles/no_colours.rb'
|
293
|
+
|
294
|
+
This will automatically disable colours support for the **Rcfiles**
|
295
|
+
namespace.
|
296
|
+
|
297
|
+
The **first** variant is preferred, in my opinion, since it is
|
298
|
+
<b>shorter</b> - but use whatever you prefer, anyway.
|
299
|
+
|
300
|
+
You can also use the following code to generate the rc-files
|
301
|
+
without making use of colours:
|
302
|
+
|
303
|
+
Rcfiles.run { :disable_colours }
|
304
|
+
|
305
|
+
## The directory rcfiles/
|
306
|
+
|
307
|
+
Since as of 07.04.2019 this project also includes all auto-generated
|
308
|
+
rcfiles, in the subdirectory called **rcfiles/**.
|
309
|
+
|
310
|
+
The primary reason as to why these files are distributed with this
|
311
|
+
project is so that:
|
312
|
+
|
313
|
+
a) they are available as-is when the gem is downloaded
|
314
|
+
|
315
|
+
and, even more importantly than that
|
316
|
+
|
317
|
+
b) because **psych** sometimes has problems with the main encoding used,
|
318
|
+
which means that the rc-files may not be generated on a given
|
319
|
+
computer system as-such. Hence why bundling these files into the
|
320
|
+
project directly makes this potential problem a non-issue (excluding
|
321
|
+
projects such as cmder, which require aliases to be defined without
|
322
|
+
quotes).
|
323
|
+
|
324
|
+
If you wish to copy these bundled rc-files via ruby, then you can
|
325
|
+
use the following toplevel method:
|
326
|
+
|
327
|
+
Rcfiles.copy_rcfiles_to_the_current_directory
|
328
|
+
|
329
|
+
## Copying the rc-files via the commandline
|
330
|
+
|
331
|
+
Sometimes it may be useful to quickly copy the rc-files into your
|
332
|
+
current working directory, rather than generate them anew.
|
333
|
+
|
334
|
+
You can use the following commandline switch in order to achieve
|
335
|
+
this, and copy the registered rc-files into the current working
|
336
|
+
directory:
|
337
|
+
|
338
|
+
rcfiles --copy-rcfiles
|
339
|
+
rcfiles --copy
|
340
|
+
rcfiles --cp
|
341
|
+
|
342
|
+
I needed this functionality so that I could quickly copy the
|
343
|
+
rc-files, source them in bash, and continue working from here
|
344
|
+
past that point - mostly for convenience.
|
345
|
+
|
346
|
+
As stated elsewhere in this document, if you need to use this
|
347
|
+
functionality from ruby then you can use **Rcfiles.copy_rcfiles_to_the_current_directory**
|
348
|
+
or just **Rcfiles.copy_rcfiles**.
|
349
|
+
|
350
|
+
## The PS1 path variable
|
351
|
+
|
352
|
+
If you wish to quickly generate a new rc-file with a default
|
353
|
+
PS1 (defaulting to my PS that is), the following commandline
|
354
|
+
variant can be used:
|
355
|
+
|
356
|
+
rcfiles --ps1
|
357
|
+
|
358
|
+
## Generating other rc-files
|
359
|
+
|
360
|
+
You can either batch-generate all -rc files, or also cherry-pick
|
361
|
+
some of them.
|
362
|
+
|
363
|
+
Example:
|
364
|
+
|
365
|
+
rcfiles --programs-aliases
|
366
|
+
|
367
|
+
This will generate the **programs_aliases_rc file**.
|
368
|
+
|
369
|
+
## Generating a .bat file for the cd-aliases on Windows
|
370
|
+
|
371
|
+
Certain windows-related shells, such as the fairly new
|
372
|
+
**windows-terminal**, make use of a fairly ... obscure
|
373
|
+
syntax for a cd-alias.
|
374
|
+
|
375
|
+
For example:
|
376
|
+
|
377
|
+
function pwdhome { set-location "c:\home\x" }
|
378
|
+
|
379
|
+
This would assign pwdhome to become a cd-alias to
|
380
|
+
/home/x. (Weird syntax.)
|
381
|
+
|
382
|
+
If you wish to generate such a .bat file with all
|
383
|
+
the cd-aliases available in this project, consider
|
384
|
+
using the following commandline variant:
|
385
|
+
|
386
|
+
rcfiles --windows-cd-aliases
|
387
|
+
|
388
|
+
Internally the method that is doing this is:
|
389
|
+
|
390
|
+
Rcfiles.create_windows_cd_aliases_bat_file
|
391
|
+
|
392
|
+
## Obtaining all aliases, as a Hash
|
393
|
+
|
394
|
+
If you need to return all aliases registered in this
|
395
|
+
project, as a Hash, then you can use this toplevel
|
396
|
+
method:
|
397
|
+
|
398
|
+
Rcfiles.aliases?
|
399
|
+
|
400
|
+
In **January 2021** this gem contained 47088 entries (key→value pairs).
|
401
|
+
In **April 2021** this gem contained 47661 entries (key→value pairs).
|
402
|
+
|
403
|
+
## doskey
|
404
|
+
|
405
|
+
**doskey** is an old DOS program (I think; at the least it was
|
406
|
+
available on DOS back in the days) that allows you to use aliases
|
407
|
+
on windows.
|
408
|
+
|
409
|
+
For a better explanation, have a look at the following link:
|
410
|
+
|
411
|
+
https://kunalspathak.github.io/2020-11-21-About-doskeys/
|
412
|
+
|
413
|
+
The **rcfiles** gem contains tons of aliases. Perhaps you have
|
414
|
+
lots of aliases as well and would like to re-use them on
|
415
|
+
windows.
|
416
|
+
|
417
|
+
You can use the **roebe** gem for that, in particular:
|
418
|
+
|
419
|
+
roebe/classes/doskey_generator.rb
|
420
|
+
|
421
|
+
Afterwards you may have to replace the global environment
|
422
|
+
variables. You can probably adapt this class/file:
|
423
|
+
|
424
|
+
roebe/classes/replace_global_variables_in_this_file.rb
|
425
|
+
|
426
|
+
At any rate, this subsection really just tries to contain
|
427
|
+
some helpful **hints** for those who want to make use of
|
428
|
+
doskey. You may have to adjust it to your own preference.
|
429
|
+
|
430
|
+
## DirectoryAliases respectively Rcfiles::DirectoryAliases
|
431
|
+
|
432
|
+
In <b>May 2022</b> the old class called <b>Rcfiles::ExpandCdAliases</b>
|
433
|
+
was renamed into <b>Rcfiles::DirectoryAliases</b>. The old functionality
|
434
|
+
was retained for the most part, but some parts were changed or even
|
435
|
+
removed.
|
436
|
+
|
437
|
+
The primary reason for the rewrite was that the old logic of
|
438
|
+
ExpandCdAlias was very convoluted and complicated. I wanted to
|
439
|
+
extend it in <b>May 2022</b> but got frustrated with the old
|
440
|
+
design; some parts of the code base were +10 years old already,
|
441
|
+
and not that well designed.
|
442
|
+
|
443
|
+
Thus, I decided to rather than maintain the old code, to
|
444
|
+
just create a new class, with a cleaner design from the
|
445
|
+
get go.
|
446
|
+
|
447
|
+
The basic idea behind class Rcfiles::DirectoryAliases is that
|
448
|
+
an <b>input string</b> such as '<b>pwdj</b>' can be turned into
|
449
|
+
the corresponding aliased string, which would be '<b>/Depot/j/</b>'
|
450
|
+
instead.
|
451
|
+
|
452
|
+
The way how to do so would go like this:
|
453
|
+
|
454
|
+
Rcfiles::DirectoryAliases['pwdj'] # => '/Depot/j/'
|
455
|
+
|
456
|
+
This can then be used by a shell, such as <b>Roebe::Shell</b>
|
457
|
+
in particular - another project I maintain. The idea here
|
458
|
+
is to quickly navigate a local file system without having
|
459
|
+
to type the full paths whatsoever.
|
460
|
+
|
461
|
+
The class has been written with some flexibility in mind.
|
462
|
+
For instance, the main .yml file that it uses can be
|
463
|
+
queried via the following method:
|
464
|
+
|
465
|
+
Rcfiles::DirectoryAliases.yaml_file?
|
466
|
+
|
467
|
+
On my home system this defaults to:
|
468
|
+
|
469
|
+
/usr/lib/ruby/site_ruby/3.1.0/rcfiles/yaml/cd_aliases.yml
|
470
|
+
|
471
|
+
This .yml file, called **cd_aliases.yml**, is also distributed
|
472
|
+
by the <b>rcfiles</b> gem. This has been done mostly for
|
473
|
+
reasons of convenience - other users can use this .yml file
|
474
|
+
if they'd like to, but be aware that this defaults to my
|
475
|
+
home setup, so it may be utterly useless to you. Nonetheless,
|
476
|
+
you could maintain your own dataset - all you have to provide
|
477
|
+
is a similar .yml file. You can store it somewhere else on
|
478
|
+
your own local system.
|
479
|
+
|
480
|
+
You can specify the path to such a .yml file via:
|
481
|
+
|
482
|
+
Rcfiles::DirectoryAliases.set_yaml_file_used_by_class_directory_aliases(path_goes_here)
|
483
|
+
|
484
|
+
This method is called initially via:
|
485
|
+
|
486
|
+
Rcfiles::DirectoryAliases.set_yaml_file_used_by_class_directory_aliases(:default_yaml_file)
|
487
|
+
|
488
|
+
The symbol ::default_yaml_file will refer to the already mentioned
|
489
|
+
file called <b>/usr/lib/ruby/site_ruby/3.1.0/rcfiles/yaml/cd_aliases.yml</b>.
|
490
|
+
|
491
|
+
Note that this merely specifies the path to the file; it does not
|
492
|
+
yet load this file.
|
493
|
+
|
494
|
+
To load from this file have a look at the method called
|
495
|
+
<b>load_the_dataset_from_the_file_cd_aliases()</b>. This is
|
496
|
+
automatically called whenever <b>Rcfiles::DirectoryAliases.new</b>
|
497
|
+
is called. Have a look at the file at
|
498
|
+
<b>rcfiles/test/testing_using_another_path_to_directory_aliases.rb</b>
|
499
|
+
to see how you can load your own .yml file specifically.
|
500
|
+
|
501
|
+
## Licence
|
502
|
+
|
503
|
+
Since as of <b>April 2021</b>, this project is using the MIT licence.
|
504
|
+
It is not a hugely important project, so using a less stringent
|
505
|
+
version was fine by me.
|
506
|
+
|
507
|
+
Copyright 2021-2023 Robert A. Heiler
|
508
|
+
|
509
|
+
You can read up on the MIT licence here:
|
510
|
+
|
511
|
+
https://opensource.org/licenses/MIT
|
512
|
+
|
513
|
+
The most important requirement (in my own parlance) is the
|
514
|
+
"no-warranty disclaimer", aka legalese to "use at your own
|
515
|
+
discretion and risk-analysis, without holding the author
|
516
|
+
or anyone else responsible for issues potentially
|
517
|
+
originating from using this software".
|
518
|
+
|
519
|
+
|
520
|
+
## Contact information and mandatory 2FA (no longer) coming up in 2022 / 2023
|
521
|
+
|
522
|
+
If your creative mind has ideas and specific suggestions to make this gem
|
523
|
+
more useful in general, feel free to drop me an email at any time, via:
|
524
|
+
|
525
|
+
shevy@inbox.lt
|
526
|
+
|
527
|
+
Before that email I used an email account at Google gmail, but in **2021** I
|
528
|
+
decided to slowly abandon gmail, for various reasons. In order to limit the
|
529
|
+
explanation here, allow me to just briefly state that I do not feel as if I
|
530
|
+
want to promote any Google service anymore when the user becomes the end
|
531
|
+
product (such as via data collection by upstream services, including other
|
532
|
+
proxy-services). My feeling is that this is a hugely flawed business model
|
533
|
+
to begin with, and I no longer wish to support this in any way, even if
|
534
|
+
only indirectly so, such as by using services of companies that try to
|
535
|
+
promote this flawed model.
|
536
|
+
|
537
|
+
In regards to responding to emails: please keep in mind that responding
|
538
|
+
may take some time, depending on the amount of work I may have at that
|
539
|
+
moment. So it is not that emails are ignored; it is more that I have not
|
540
|
+
(yet) found the time to read and reply. This means there may be a delay
|
541
|
+
of days, weeks and in some instances also months. There is, unfortunately,
|
542
|
+
not much I can do when I need to prioritise my time investment, but I try
|
543
|
+
to consider <b>all</b> feedback as an opportunity to improve my projects
|
544
|
+
nonetheless.
|
545
|
+
|
546
|
+
In <b>2022</b> rubygems.org decided to make 2FA mandatory for every
|
547
|
+
gem owner eventually:
|
548
|
+
|
549
|
+
see
|
550
|
+
https://blog.rubygems.org/2022/06/13/making-packages-more-secure.html
|
551
|
+
|
552
|
+
However had, that has been reverted again, so I decided to shorten
|
553
|
+
this paragraph. Mandatory 2FA may exclude users who do not have a
|
554
|
+
smartphone device or other means to 'identify'. I do not feel it is
|
555
|
+
a fair assumption by others to be made that non-identified people may
|
556
|
+
not contribute code, which is why I reject it. Mandatory 2FA would mean
|
557
|
+
an end to all my projects on rubygems.org, so let's hope it will never
|
558
|
+
happen. (Keep in mind that I refer to mandatory 2FA; I have no qualms
|
559
|
+
for people who use 2FA on their own, but this carrot-and-stick strategy
|
560
|
+
by those who control the rubygems infrastructure is a very bad one to
|
561
|
+
pursue.
|
562
|
+
|
data/bin/rcfiles
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
require 'rcfiles'
|
6
|
+
|
7
|
+
Rcfiles.parse_commandline(ARGV)
|
8
|
+
|
9
|
+
if Rcfiles.is_on_roebe? and (ARGV.first and !ARGV.first.include?('help') )
|
10
|
+
require 'rcfiles/aggregate_all_rcfiles/aggregate_all_rcfiles.rb'
|
11
|
+
Rcfiles::AggregateAllRcfiles.new
|
12
|
+
end
|