File segment fetching and replacing for configuration files
Simply install by running npm install fileseg --save
.
fileseg
allows for configuration block management within files. For instance you may want to control a custom block of ignored paths in a .gitignore
file:
node_modules
*.log
.vscode
# __fileseg__ BEGIN:customConfig
some-application-path
another/path
# __fileseg__ END:customConfig
Reading and editing this configuration section is easy with fileseg
:
const createAdapter = require("fileseg");
const adapter = createAdapter(".gitignore");
adapter
.read("customConfig")
.then(function(config) {
const newConfig = [
...config.split("\n"),
"somefile.exe"
];
return adapter.write("customConfig", newConfig.join("\n"));
});
The result within .gitignore
would be:
node_modules
*.log
.vscode
# __fileseg__ BEGIN:customConfig
some-application-path
another/path
somefile.exe
# __fileseg__ END:customConfig
A file can have any number of blocks managed by fileseg
. A file is created automatically when writing to a path that doesn't exist. Reading a block from a non-existent file will return null
by default (this can be overidden in the options).
fileseg
can be configured by passing in a configuration object when creating the adapter:
const createAdapter = require("fileseg");
const adapter = createAdapter(".gitignore", {
commentPrefix: "#",
blockPrefix: " __fileseg__ ",
beginText: "BEGIN:",
endText: "END:",
newLine: "\n",
noSegment: null
});
You can override the default behaviour:
-
commentPrefix
is the string used to prefix block delimiters. The default#
character is quite common in configuration files, but it can be changed to other comment characters for other markups and languages. -
blockPrefix
is a library-specific identifier to increase the uniqueness of the block. -
beginText
andendText
configure the values to delimit the start and end of a block. These must never be the same and should usually not be changed. -
newLine
controls the new line characters (both recognised and replaced). This could be set, for example, to"\r\n"
in a pure Windows project. -
noSegment
is the default return value for when a segment is not found (includes non-existent files).