This is an historic document.
As this project was merged with net.splitcells.network
a project global changelog file and versioning was adopted.
This documents currently only helps a bit to understand the history of this
project.
This changelog is inspired by keepachangelog.com. Version numbers are based on Semantic Versioning 2.0.0. Please, create a one sentence summary for each release.
The concrete echo format of each command is not stable. Changes to this are not considered major changes.
This changelog is deprecated. Changes are now written to the root changelog instead.
Unreleased
Major Changes
- 2023-11-19 #213
repo.process
now loads the list of sub repositories via./.net.splitcells.os.state.interface.repo/sub-repo-names
and not./.net.splitcells.os.state.interface.repo/subs.json
in order to simplify the format../.net.splitcells.os.state.interface.repo/sub-repo-names
is now a command that is executed and returns a list of sub repo names, that are separated via new line symbols, which in turn is a csv file. This makes it also easier to make it compatible with other software like hakoerber's GRM. - 2023-06-16 #245 Notify users of
echo.error
call by default. - 2023-03-26 #s109
repo.process
should not create the folder of missing sub repos by default. If--command-for-missing
is not set or is set asexit 1
, the folder - 2022-09-11 #168:
- Rename
dependencies.test
totest.dependencies
, in order to preparetest.*
prefix for all test commands. - Also rename
user.bin.configure.uses.dependencies.test
touser.bin.configure.uses.test.dependencies
.
- Rename
- 2022-07-06 Installed project commands now pass their arguments to the original real command, instead of suppressing these.
If one installs the
net.splitcells.network
as a project repository, arguments to the call ofnet.splitcells.network.deploy.build.at
are now passed tonet.splitcells.network/bin/deploy.build.at
. - 2022-04-17
repo.synchronize.with
executesrepo.is.clean
afterrepo.repair
, in order to avoid errors caused by missing sub repos. - 2022-02-25 #158 Do not change the PATH during the installation of OS state interface:
command.repositories.install.sh
now does not callcommand.managed.environment.configure.sh
and therefore does not edit~/.bashrc
. This avoids unexpected changes to the user configs. The commandcommand.repositories.setup.sh
was created, which is the original version ofcommand.repositories.install.sh
. This way there is still a command, that installs the OSSI project with full functionality.
Minor Changes
- 2024-04-26 #c11 Create
ssh.download.file
command. - 2022-03-12
echo.error
now also sends the message tonotify.error
, if$echo_error_notifies_user
is set to true. Thereby, it is more easily to know, if some optional feature was not executed during a long command. For instance, when a command synchronizes a repo with multiple other computers, a notification for each not available computer is helpful. In this case it can be normal, that some computers were not available during each synchronization, and therefore the execution as a whole does not have to be aborted or marked as a failure. - 2022-11-18 Recommend chezmoi for dotfile management.
- 2022-10-16 #168 Integrate repo management.
repo.process
now usesbin/net.splitcells.osi.repos.peers
in order to find all peer repos, that are on the same folder level as the current repo. Sub repos are repos located in the folder of the current repo. Peer repos are repos located at the same folder as the current repo. This make synchronizing local repos with online repo hosters like SourceHut and GitHub a lot easier, because before that, each repo had to be pushed manually, or via a script. This was more burdensome compared to pushing a meta to another meta repo, because online repo hosters typically do not allow nested hierachies of repos. Now one can push all SourceHut repos viarepo.push.at.all
, instead of using many instances ofcd [...]; git remote show SourceHut || git remote add SourceHut [...]; git remote set-url SourceHut [...]; git push SourceHut
.- Introduction of the project file
bin/net.splitcells.osi.repos.hosts
. This command echos all hosts of the current repo, its subs and peers. This is used byrepo.push.at.all
in order to not only push all repos, but to also push these to all hosts (i.e. GitLab, GitHub, SourceHut etc.). - Overall, the changes made it a lot easier to adapt to changes of the repo structure and its hosts. This is particularly the case, when mainstream git hosters are used. It makes it a lot easier, to create completely new commands.
- 2022-10-03 Deprecate
shell.execute.as.background.task
, because it is not working correctly. - 2022-09-11 #162: Create command
system.network.peer.reachable
, in order to test if peer is reachable via (local/internet etc.) network. - 2022-07-29 Deprecate
repo.push.to.sh
. - 2022-06-18: #168: Create command
repo.push.at.all
. - 2022-05-28: #168:
repo.status
now executes./bin/net.splitcells.osi.repos.peers
in order to find additional sub repos, that are located in the same repo as the current is. This is a way to support repo nesting with a flat folder structure. - 2022-03-27 Create
ssh.upload.file.py
in order to more easily upload files to new remote servers.
[5.0.0] - 2022-02-28
Major Changes
- Remove deprecated command
command.managed.define
. - Disable debug logging by default. Add environment variable 'log_level'. When set to 'debug', debug log is enabled.
- 'repo.verify' now also checks if sub folders, are really instances of a repository.
- Create 'repo.repair' command, that downloads missing sub repositories.
- Remove 'user.data.synchronize' as the same can be done via 'network.configure'.
Minor Changes
- Create command convention
repo.is.clean
. Exits with 0, if this repo can be synchronized and else exits 1. This can be used as a safeguard for automated synchronization commands.
Patch
- 2022-05-06
repo.process
now shows the repo path, where the error occur.- Fixed quoting issues of echo's arguments in
command.repositories.install
.
- Command "echo.error" previously did only echo the message "error" and ignored the argument. This was fixed.
Version 4.0.1
Release project in order to test release process.
Major Changes
- Remove "user.programs.close.gracefully", because it was defined incorrectly and also was not used.
Minor Changes
- Add support for manpages.
- Create command 'system.configure.auto' in order provide configuration that fit most users.
- Create command 'sh.is.interactive' in order to detect, if the current shell is interactive.
- Verify folder structure before repository content. Move folder check functionality of 'repo.verify' to 'repo.verify.folder.structure'. 'repo.verify' still calls 'repo.verify.folder.structure'. 'repo.verify' now first verifies the folder structure of the complete repository recursively. This speeds up the checking process, if a folder is missing.
- Exit 'repo.process' on first error by default.
Version 4.0.0
Starting with this version, major changes, that are not backwards compatible, will only be done, in order to fix errors as long as it is justifiable.
Major Changes
- Remove all logging levels in order to greatly simplify code.
- Rename "ssh.key.generate" to "user.ssh.key.generate" in order to better represent meaning of program.
- Add new secondary objectives:
- "Do not change the system or the user without being explicitly told by the user to do it."
- "Minimize the effects on the state of the system by this framework."
- "command.mananged.environment.configure": Ensure that bash configuration is always active in graphical shell only.
- Migrate to new repository layout.
- Create command "repo.verify".
- "echo.error" now just echos to stderr. Other commands do not filter echoed errors correctly anymore.
Minor Changes
- Setup contribution guide lines.
- "this.active.if.presence.of": Create command in order to test, if environment has required command.
- Document some interesting third party shell software.
- Create command "run.and.show.on.success".
- Setup CI for Github.
- Migrate to Github as main repository while still supporting Gitlab.
- Support command to enable framework in non interactive shells: '. ~/bin/net.splitcells.os.state.interface.commands.managed/command.managed.export.bin'
- "system.info": Create command to show system info overview.
- "system.shutdown" & "user.programs.close.gracefully": Create commands to shutdown system.
- "user.trash.empty": Create command to empty trash.
- "user.messages.add": Create command to send message to user.
- "system.managed.automatically.by.user.assert": Create command to configure additional default configurations.
- "user.weekly": Create command for weekly execution with additional task that is disabled by default.
Patches
- Improving debug logging during first installation.
- "command.managed.execute": Clear current line after execution end.
- "run.and.show.if.failed": Omit duplicate lines in output in error case.
- "command.repositories.install": Install commands in alphabetic order.
- Add some tests.
- Improve performance of "run.and.show.if.failed".
- "run.and.show.if.failed" echo command output, if command exited with error.
- "package.install": fix output for software specific installation programs.
- "repo.remote.set": correct command line argument order.
- Solve performance problems of "run.and.show.on.success" and "run.and.show.if.failed".
Version 3.0.0
Major Changes
-
Remove variables inside profile. Use commands in order to get configuration values instead. Repalced variables and their new commands:
current_echo_level -> echo.level.config
critical_echo_level -> echo.level.critical
error_echo_level -> echo.level.error
warning_echo_level -> echo.level.warning
info_echo_level -> echo.level.info
debug_echo_level -> echo.level.debug
tracing_echo_level -> echo.level.trace
-
Use only word 'shell' for terminal. Replaced commands:
terminal width -> shell.width
terminal.time.between.lines.in.text.config -> shell.time.between.lines.in.text.config
-
"package.install":
- Use program specific installer first, in order to install program even if starter script is already present.
- End package install package specific script ends succesfully.
Minor Changes
- Place all project programs in bin folder and make project make compatible.
- Define optional default user specific repository.
- Log at debug level the arguments of "run.and.show.if.failed".
- Some documentation updates.
- "echo.line.current.set": Create warning when echo filtering does not work.
- Create "user.management.auto.config" option.
- Create test for "repo.clone.into.current.test".
- Create "repo.create" command.
- Update "package.install" documentation according to usage experience.
- Update "user.configure" documentation.
- Define CI pipeline for gitlab.
- Create test suite.
Patches
- "shell.width" supports non interactive shells.
- "run.and.show.if.failed": Clear current echo line after command is executed.
- Clear current output line after a managed command was executed.
- Command "echo.filtered"
- Prevent argument interpretation in "echo.filtered".
- Prevent line wrapping, if the filtered echo of a command is longer than the terminal width. This is done by limiting the output of filtered echos to the width of the terminal. In other words: if there is nothing to be reported during the execution of the command, no output is visible after the commands execution.
- Documentation improvements.
- Provide fall back value for "shell.width", if it could not be determined.
- Make "shell.width" more portable.
- Correctly visit child repos in "repo.process" by removing duplicate "cd $subrepo".
- Unify quoting of command names in logging.
- Create error, if there is no implementation of a managed command.
- Support "shell.width" in non interactive shell.
Version 2.0.0
Major Changes
- Set main remote during synchronization with foreign remote.
- Use MPL 2.0 for every program. Some programs with other licenses were moved to "net.splitcells.os.state.interface.lib".
- Correct command names:
- Rename "exit.on.error" to "sh.session.exit.on.error".
- Rename "exit.with.error" to "sh.session.exit.with.error".
Minor Changes
- Support same features for processing of local and remote repositories.
- Create "repo.mirror.into.current". This can be used in order to make mirrors of complex mirrors.
- Support complex repositories for "repo.remote.set".
Patches
- Clean up last line in echo before exit of managed command.
- Do only print argument literally for echo commands.
- Prevent command "repo.synchronize" from doing the same multiple times.
Version 1.7.1
Fix issues.
Patches
- Adapt to console width in "echo.line.current.set". This prevents the line reset to print too much or too less.
- Make "echo.deprecated.command" compatible with "echo.filtered".
- Fix bugs in "repo.process" found by usage.
- Prevent folders being processed twice.
- Only use the echo commands of this project.
- Ignore hidden folders if the remote is not ssh. Before that, this was only done for remotes accessed via remotes.
- Fix duplicate writings of console configuration settings.
Version 1.7.0
Fix issues found by usage.
Major Changes
- Rename command "echo.tracing" to "echo.trace".
- Remove echo filtering from "command.managed.execute".
- Abort repository processing on first error.
Minor Changes
- Update internal documentation of some commands.
Patches
-
Correct parameter propagation in "repo.pull.from", "repo.push.to" and "repo.synchronize.with".
-
Correct parameter propagation of "repo.pull.from".
-
Correct parameter propagation in "repo.pull.from" and "repo.push.to".
-
Correct stderr piping in "run.and.show.if.failed".
-
Clear current line content with empty space in "echo.line.current.set". Previously the command just reset the cursor position. If this command was called twice with a longer string argument in the first call compared to the second call, the part of the first call would be still visible.
i.e.
echo.line.current.set "Marvin has a pen."
echo.line.current.set "Alice"
Would result into: "Alice has a pen."
-
Make release configuration public in order to simplify release process on different computers.
Version 1.6.1
Patches
- HOTFIX: Fix bug in logging of "command.managed.execute". The bug caused the echo not being shown after execution and ending the command with an error.
Version 1.6.0
Minor Changes
- Create "read.text" command that reads multiple line strings from stdin.
Patches
- Filter output of release process.
- Force quoting command scripts.
- Prevent wait time trough echo filtering by default.
Version 1.5.0
Major Changes
- Filter
Version 1.5.0
Major Changes
- Create release script.
Version 1.4.0
Minor Changes
- Introduce new configuration guide line.
- Filtered echo is now visible on the last line in the console. It is deleted by the next echo. This way one can follow the execution progress without filling output with unimportant information.
Version 1.3.0
Major Changes
- Echo filtering for managed command execution.
- Remove command "run.and.show.only.errors". This command is not used.
- Add command "run.and.show.if.failed".
Minor Changes
- Bugfixes
Version 1.2.1-1.2.7
- Testing release with
Version 1.2.0
Establish release process.
Minor Changes
- Use echo levels for every command.
Patches
- Prevent duplicate variable export in ".profile" after multiple installations.
Version 1.1.0
Some changes are not listed as CHANGLOG was created after them.
Major Changes
- Rename command "user.task.daily" to "user.task".
- Rename command "repo.commit" to "repo.commit.all".
- Rename command "system.adaptations.update" to "system.update".
Minor Changes
Introduce echo levels.
Version 1.0.1
Fix issues found during first installation on other Fedora installation.
Version 1.0.0
First usable version created.
- SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
- SPDX-FileCopyrightText: Contributors To The
net.splitcells.*
Projects