./bin/test.via.network.workerand logged at
net.splitcells.dem.core, which contains interface implementations of the Dem project. The goal is to split the Dem project into an interface project (merger) and implementation project (core).
*ProjectRendererExtension*in order to ensure unique class names in the future.
CommonMarkChangelogEventRendererto the web server in order to extract events from one changelog file. For every supported path
[...}/CHANGELOG.htmlthere is now an appropriate supported path
repo.copy. It makes the
repo.clone*commands more usable, by providing useful options and making it easy to combine said flags. For instance, in order to ensure that a folder contains a repo one can use the following call:
repo.copy --target-folder=. --omit-if-exists=true --remote-repo='<URL of remote repo>'. I do not know, if this is better than
repo.exists || repo.clone.into.current '<URL of remote repo>'. It may be the case, because additional checks can be added more easily this way, without changing existing code, but I am not quite sure. On the other hand, this is also a way to document the expected use cases of a tool and can be used as a guide, informing the user how to use the software.
rootPathoption to web server config.
rootPathconfig, which is
/by default. If
/is used as
rootPath, then the path translation does not change the path. For instance,
/net/splitcells/gel/index.htmlis translated to
/net/splitcells/gel/index.htmlin this case. If
rootPathis set to
/net/splitcells/martins/avots/website/, then it is translated to
Relevant Local Path Contextsection in the secondary content column. It is located right before the
Local Path Contextand only lists paths, that are relevant for ordinary users. The new section makes it easier to navigate between the different pages of the site.
net.splitcells.website.server.project.validator, in order to improve code structure overview.
/net/splitcells/website/server/config/layout.xmlinside XSL scripts for the file layout file. This way, multiple XSL scripts for different webserver configurations are not needed. The layout file is also not stored in the file system anymore and is queried from the new Config class. Thereby the number of different locations for the webserver is reduced.
net.splitcells.website.html.contentproject. It was an alternative minimal style for the website. It is now integrated into the default style and can be enabled via the
generated.styleoption and the value
minimal. For this the
RenderingConfigclass was created and is used by
ProjectsRenderer. The standard styling is too complex. Using one unified style with switches makes it easy to recognize the complex parts and to migrate these to simpler forms. Furthermore, maintaining 2 styles that are mostly identical is costly.
package.installimplementation for rpm-ostree from OS state interface lib, to the OS state interface lib GPL 2.0, because rpm-ostree contains GPL 2.0 code.
Constraint#naturalArgumentationmethod now returns an optional perspective. Thereby, the number of nodes in the AST of the argumentation is reduced.
argumentationitself was greatly reduced. Before the change an argumentation would look like the following:
Now it looks like this
Argumentation For all rail Argumentation Argumentation Then values of allocated hours should have the same value
For all rail Then values of allocated hours should have the same value.
net.splitcells.network.mediaand is a peer repo to this repo cluster.
user.ssh.key.authorize, which prohibited its execution.
system.ssh.server.start. This makes this script also workable on Fedora Silverblue.
repo.push.atas the new version of
repo.push.to, because it uses positional arguments and therefore understanding argument meaning gets hard. The command also only supports remote IDs and not URLs. The positional argument parsing makes it hard to add simple features. The deprecated commands signals this with an error message, but works otherwise.
repo.push.at, that uses only classical Unix style argument handling. Support for pushing to URLs was added as well.
generation.stylevariable for default XSL style for multiple output style configuration.
user.configure, because this makes the command too complicated and it also makes it too hard to maintain backwards compatibility.
world.manage, that calls all configuration and update commands provided by OS state interface. Thereby, the user can check, if all possible configurations and updates are applied. This also acts as a central documentation for all configuration and update commands of the OS state interface project. This command adds the new concept of a world in the context of the user, system and network concepts. The world contains and represents all top level concepts and therefore is a representation of all accessible objects.
flatpak.gui, in order to easily find Flatpak's default GUI based application manager.
ssh.executein order to execute commands on remote server in foreground.
run.and.print.sh, because there are too many
run.and.*commands, that are not used and are too similar. This makes it unjustifiable hard to choice a fitting
net.splitcells.gel.quickstart. It is a minimal project, that demonstrates how use the Gel framework. It can also be used as a template for new projects.
UserCommandRendererby rendering command tree with
UserCommandRenderer#projectPaths. This method now correctly provides its managed project paths.
SourceValidatorin order to clarify purpose, because a validator for rendered files via the web server is needed.
chart.jsnow renders the requested csv file. Previously, this renderer always rendered the same file, regardless of the request
ssh.execute.in.backgroundin order to start background tasks on remote servers with systemd and ssh.
system.lock, that locks all input and output devices of the system users' (i.e. lockscreen).
repo.synchronize.withnow uses the new interface of
repo.repair, which got a breaking change previously in order to improve and standardize argument parsing.
asMetaRatingmethod of ratings.
repo.repairwas rewritten in Python in order to support better argument parsing, which has a relatively complex syntax in Bash. The implicit argument (no flag required for setting) was converted to an explicit argument (
--remote-repo=[...]. The command now also accepts one value for this argument, because multiple ones do not make sense.
net.splitcells.network.logto website's default projects. This is a new git repository containing log files. These files are primarily performance data and are used in order to show performance regressions.
Ordered#compare_tonow does not always double-check equality.
PROFILING_METHOD_STATISTICS. The former one was deprecated, because it was not used and its intent was not clear. The latter one was introduced, because its usage is quite clear. Note that generic static flags are not that useful, because by enabling a generic one, many additional runtime tasks may be activated, which may destroy the software's performance.
net.splitcells.dem.resource.communication.log. The reason for this, is the fact, that the shell may not be on the host computer.
distutils.spawn.find_executable, because the latter one is deprecated and will be removed from Python with the version 3.12.
test.integrationin order to execute tests, that require relatively long time for execution.
net.splitcells.website.html.contentproject in order to provide an alternative HTML styling.
project.render, in order to define a primitive unified building API for different build systems and projects.
project.render.as.net.splitcells.websitein order to support arbitrary website renderers. This is currently used in order to deploy the network's blog, my private website and the network's website as one website. Linking between the network's blog and the rest of the site is currently lacking.
shell.width.shnow works in Bourne shell as well.
OfflineOptimizationin order to clarify its meaning.
project.render.as.net.splitcells.websiteas an API for creating plugins for
splitcells.net's website server built out of software, which have no explicit integration for said website server. Integration is done by reading or writing to the same filesystem. In order to create a plugin following needs to be done:
./bin/render.as.net.splitcells.website.to. It takes one argument containing a path. The command needs to write the plugin's part of the website to that path.
cd <plugin's path>
comparatorLegacyin order to have a clear name and remove its usage, where it is not needed.
comparatorin order to unify naming.
system.updatefor Flatpak now does not exit with an error, if Flatpak's version itself is deprecated. This is done because otherwise the whole update process would be aborted. An appropriate echo to stderr is created instead.
ProjectsRenderer#projectsLayoutmethod and use
ProjectsRenderer#projectsPathinstead. This new method is a lot easier to implement than the precursor, especially if future extension may be implemented via third party software.
command.managed.installnow removes the file suffix of the source file, when installing the command as a dependency. Previously this was only done for the API defining commands. For example: the Ossi project has the command
repo.push.sh, which uses dependency injection in order to do its job. This command is installed to
~/bin/net.splitcells.os.state.interface.commands.managed/repo.push. Note the stripped file suffix in order to have a name, that is not specific to the implementation (this behaviour was already present before the implementation). Another file provides the implementation for Git repositories and is named like the original command + its implementation specific file suffix. Let's say
repo.push.sh. Before the patch the file suffix would not be removed and the file would be installed to
~/bin/net.splitcells.os.state.interface.commands.managed/repo.push.sh.0. This would lead to an error, during the execution of
repo.push, because the dependency
repo.push.0would not be present. After the patch the file is installed to
user.ssh.key.generate.shcauses a timeout on the build job for FreeBSD. This was caused by the fact, that the file location and the password were set by sending newline symbols via the echo command and a shell pipe to the
ssy-keygencommand. The echo command was used in a non POSIX way, which fails on the new FreeBSD release. This patch sets the file location and password via flags provided by
.mdwas not replaced with
.mdare the file suffix for the source CommonMark files.
.htmlare the file suffix for the rendered CommonMark files.
deploymentin order to create deployable jars.
~/bin/man/man1so that the common man command can find and display man pages installed by os state interface.
pip.module.installfor user and therefore without admin rights.
system.configure.autoof OS state interface project.
net.splitcells.dem.resource.communication.Subscribable, because it was not used.
net.splitcells.dem.resource.host.interaction, because sees interfaces and classes are not host specific.
ReturnThisin order to unify naming.
run.and.show.if.failednow echos content of stderr to the shell during the execution normally. This way one knows all the errors, that appeared after a successful execution of the given command. If for instance one has a data synchronization script for multiple backup servers, one can see which server could not be reached, without marking the whole execution as failure.
rpm-ostree. This package install command has the highest priority, because package managers like dnf should be ignored in this case.
user.ssh.key.login.allowin order to allow login via public key. This command mainly grants read access to
~/.ssh/authorized_keysfor the ssh server.
user.ssh.key.authorizein order to import public keys into
~/.ssh/authorized_keysvia command. Already present entries are not inserted.
package.install.java.ide.via.eclipsebecause an update of Flatpak broke this.
net.splitcells.website.servernow renders text files with the file suffix
.txt. For the end user it means, that links to these file needs to be adjusted. This needs to be done, because static file webservers need to know the file type. Otherwise, text files transformed to HTML are not rendered correctly on web browsers. In practice this is used in order to serve the license files to
splitcells.net. See this example.
Paths.removeFileSuffixin order to unify file suffix manipulation implementations.
wait.interactively.untilin order to wait until condition is fulfilled.
ENFORCING_UNIT_CONSISTENCYenvironment property to Dem, so it can be set during program startup without programming.
gel.sheathin order to make easy to create custom execution command.
user.bin.configurenow does not require additional user specific implementation. The command now works out of the box without an error message.
command.repositories.installnow only installs sh, Bash and Python commands.
project.repository.registerin order to omit editing config files manually.
net.splitcells.network.deploy.buildfor deploying the build process on multiple computers.
command.repositories.installnow strips known file suffixes during installation. This way
os.state.interfacerepos can now state their file endings and thereby have better IDE support in such repos.
Comparatorsmore consistent to
equals, in order to improve Code quality score in lgtm.com.
Local Path Contextin default web layout.
Local Path Contextfor CommonMark documents.
/net/splitcells/website/layout/buildin server, in order to refresh project layout.
repo.repairin order to prevent duplicate verification calls.
~/.config/net.splitcells.os.state.interface/project.repositories. In other words:
command.managed.install.project.commandsnow each have their own repo list. The reason for this is the fact, that repos for projects cannot be installed like repos for commands in OSSI. The reason for this, is the fact, that files located in the src folder of the project repo, may not work as an independent command.
command.repositories.install. This way it is easier to understand the Ossi config files.
processLinesBeforeRemovalin order to unify naming.
registerBeforeRemovalin order to unify naming.
registerAdditionsin order to unify naming.
processLineAdditionin order to unify naming.
net.splitcells.gel.data.database.DatabaseIand mark these as protected. These constructors will be made private in the future.
net.splitcells.gel.problem.Problem#toSolution(), because it is not used and was not implemented yet.
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 command by exiting a command, when uncommitted changes are present.