From ed21d7f94bb346b5ba98e846bd71cd59782b453a Mon Sep 17 00:00:00 2001 From: "Patrik J. Braun" Date: Sat, 24 Jan 2026 21:10:47 +0100 Subject: [PATCH] Update man page doc --- docs/user-guide/configuration.md | 100 ++++++++++++++++++++++++++----- gulpfile.ts | 6 +- 2 files changed, 87 insertions(+), 19 deletions(-) diff --git a/docs/user-guide/configuration.md b/docs/user-guide/configuration.md index c3413ceb..5dec635f 100644 --- a/docs/user-guide/configuration.md +++ b/docs/user-guide/configuration.md @@ -28,7 +28,7 @@ Default values can be also overwritten by prefixing the options with 'default-', App CLI options: --Server-applicationTitle (default: 'PiGallery 2') --Server-publicUrl If you access the page from local network it's good to know the public url for creating sharing link. (default: '') - --Server-urlBase If you access the gallery under a sub url (like: http://mydomain.com/myGallery), set it here. If it is not working you might miss the '/' from the beginning of the url. (default: '') + --Server-urlBase If you access the gallery under a sub url (like: https://mydomain.com/myGallery), set it here. If it is not working you might miss the '/' from the beginning of the url. (default: '') --Server-apiPath PiGallery api path. (default: '/pgapi') --Server-customHTMLHead Injects the content of this between the HTML tags of the app. (You can use it to add analytics or custom code to the app). (default: '') --Server-svgIcon-viewBox SVG path viewBox. See: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox (default: '0 0 512 512') @@ -44,9 +44,20 @@ App CLI options: --Server-Log-logServerTiming If enabled, the app adds "Server-Timing" http header to the response. (default: false) --Users-authenticationRequired Enables user management with login to password protect the gallery. (default: true) --Users-unAuthenticatedUserRole Default user right when password protection is disabled. (default: 'Admin') + --Users-oidc-enabled (default: false) + --Users-oidc-displayName Shown on the login button (client-visible). (default: '') + --Users-oidc-issuerUrl OIDC provider Issuer URL (default: '') + --Users-oidc-clientId (default: '') + --Users-oidc-clientSecret (default: '') + --Users-oidc-redirectUri Full callback URL registered at the provider (e.g.: https://example.com/pgapi/auth/oidc/callback) (default: '') + --Users-oidc-scopes (default: ["openid","profile","email"]) + --Users-oidc-usernameClaim JWT claim to use for matching user name. Defaults to preferred_username; fallbacks to email if empty. (default: 'preferred_username') + --Users-oidc-emailClaim (default: 'email') + --Users-oidc-allowedDomains If set, only identities with emails in these domains will be accepted. (default: []) + --Users-oidc-autoCreateUser If enabled, unknown users will be created with Guest role on first login. If disabled, only existing app users can log in. (default: false) --Users-enforcedUsers Creates these users in the DB during startup if they do not exist. If a user with this name exist, it won't be overwritten, even if the role is different. (default: []) - --Users-allowQuery Setting a non empty search query here will make the app to only SHOW photos and videos that match the query. You can override this at every user separately. (default: {"type":100,"text":""}) - --Users-blockQuery Setting a non empty search query here will make the app to HIDE photos and videos that match the query. You can override this at every user separately. (default: {"type":100,"text":""}) + --Users-allowQuery Setting a non empty search query here will make the app to only SHOW photos and videos that match the query. You can override this at every user separately. (default: {"type":100,"value":""}) + --Users-blockQuery Setting a non empty search query here will make the app to HIDE photos and videos that match the query. You can override this at every user separately. (default: {"type":100,"value":""}) --Users-suppressDefUserWarn if true, the app won't show a warning for using the default user. (default: false) --Gallery-enableCache Caches directory contents and search results for better performance. (default: true) --Gallery-enableOnScrollRendering Those thumbnails get higher priority that are visible on the screen. (default: true) @@ -84,7 +95,7 @@ App CLI options: --Gallery-Themes-enabled Enable themes and color modes. (default: true) --Gallery-Themes-defaultMode Sets the default theme mode that is used for the application. (default: 'auto') --Gallery-Themes-selectedTheme Selected theme to use on the site. (default: 'classic') - --Gallery-Themes-availableThemes Adds these css settings as it is to the end of the body tag of the page. (default: [{"name":"classic","theme":":root nav.navbar {\n--bs-navbar-color: rgba(255, 255, 255, 0.55);\n--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n--bs-navbar-active-color: #fff;\n--bs-navbar-brand-color: #fff;\n--bs-navbar-brand-hover-color: #fff;\n--bs-bg-opacity: 1;\nbackground-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}"}]) + --Gallery-Themes-availableThemes Adds these CSS settings as it is to the end of the body tag of the page. (default: [{"name":"classic","theme":":root nav.navbar {\n--bs-navbar-color: rgba(255, 255, 255, 0.55);\n--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n--bs-navbar-active-color: #fff;\n--bs-navbar-brand-color: #fff;\n--bs-navbar-brand-hover-color: #fff;\n--bs-bg-opacity: 1;\nbackground-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}"}]) --Gallery-InlineBlogStartsOpen Makes inline blog (*.md files content) auto-open. (default: false) --Gallery-TopBlogStartsOpen Makes top blog (*.md files content) auto-open. (default: false) --Gallery-AutoUpdate-enable Enable auto polling for new photos and videos in the gallery. (default: false) @@ -154,6 +165,8 @@ App CLI options: --Map-MapPathGroupConfig Markers are grouped and themed by these settings (default: [{"name":"Transportation","matchers":[{"matchers":["flight","flying"],"theme":{"color":"var(--bs-orange)","dashArray":"4 8","svgIcon":{"viewBox":"0 0 567 512","items":""}}},{"matchers":["drive","driving"],"theme":{"color":"var(--bs-orange)","dashArray":"4 8","svgIcon":{"viewBox":"0 0 640 512","items":""}}},{"matchers":["ship","sailing","cruise"],"theme":{"color":"var(--bs-orange)","dashArray":"4 8","svgIcon":{"viewBox":"0 0 576 512","items":""}}}]},{"name":"Sport","matchers":[{"matchers":["(\b|_|-)run"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 417 512","items":""}}},{"matchers":["(\b|_|-)walk"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 320 512","items":""}}},{"matchers":["(\b|_|-)hike","(\b|_|-)hiking"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 384 512","items":""}}},{"matchers":["(\b|_|-)bike","(\b|_|-)biking","(\b|_|-)cycling"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 640 512","items":""}}},{"matchers":["(\b|_|-)skiing","(\b|_|-)ski"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 512 512","items":""}}}]},{"name":"Other paths","matchers":[{"matchers":[],"theme":{"color":"var(--bs-secondary)","dashArray":"","svgIcon":{"viewBox":"","items":""}}}]}]) --Map-bendLongPathsTrigger Map will bend the path if two points are this far apart on latitude axes. This intended to bend flight if only the end and the start points are given. (default: 0.5) --Faces-enabled (default: true) + --Faces-sorting-method (default: 'PersonCount') + --Faces-sorting-ascending (default: true) --Faces-keywordsToPersons If a photo has the same face (person) name and keyword, the app removes the duplicate, keeping the face only. (default: true) --Faces-writeAccessMinRole Required minimum right to star (favourite) a face. (default: 'Admin') --Faces-readAccessMinRole Required minimum right to show the faces tab. (default: 'User') @@ -162,6 +175,9 @@ App CLI options: --Extensions-repositoryUrl Repository url that points to a list of extensions in .md format. (default: 'https://raw.githubusercontent.com/bpatrik/pigallery2/master/extension/REPOSITORY.md') --Extensions-folder Folder where the app stores all extensions. Individual extensions live in their own sub-folders. (default: 'extensions') --Extensions-cleanUpUnusedTables Automatically removes all tables from the DB that are not used anymore. (default: true) + --Upload-enabled (default: false) + --Upload-minimumRole Minimum user role to enable file upload. (default: 'Admin') + --Upload-enforcedDirectoryConfig Only enable upload in folder where an ".uploader.pg2conf" is present in the folder. (default: false) --Database-type SQLite is recommended. (default: 'sqlite') --Database-dbFolder All file-based data will be stored here (sqlite database, job history data). (default: 'db') --Database-sqlite-DBFileName Sqlite will save the db with this filename. (default: 'sqlite.db') @@ -174,7 +190,7 @@ App CLI options: --Indexing-reIndexingSensitivity Set the reindexing sensitivity. High value check the folders for change more often. Setting to never only indexes if never indexed or explicit running the Indexing Job. (default: 'low') --Indexing-excludeFolderList Folders to exclude from indexing. If an entry starts with '/' it is treated as an absolute path. If it doesn't start with '/' but contains a '/', the path is relative to the image directory. If it doesn't contain a '/', any folder with this name will be excluded. (default: [".Trash-1000",".dtrash","$RECYCLE.BIN"]) --Indexing-excludeFileList Files that mark a folder to be excluded from indexing. Any folder that contains a file with this name will be excluded from indexing. (default: []) - --AlbumCover-SearchQuery Filters the sub-folders with this search query. If filter results no photo, the app will search again without the filter. (default: {"type":100,"text":""}) + --AlbumCover-SearchQuery Filters the sub-folders with this search query. If filter results no photo, the app will search again without the filter. (default: {"type":100,"value":""}) --AlbumCover-Sorting If multiple cover is available sorts them by these methods and selects the first one. Using random sorting does not allow to use any other sorting method. (default: [{"method":30,"ascending":false},{"method":20,"ascending":false},{"method":40,"ascending":false}]) --Duplicates-listingLimit Maximum number of duplicates to list. (default: 1000) --Messaging-Email-emailFrom Some services do not allow sending from random e-mail addresses. Set this accordingly. (default: 'noreply@pigallery2.com') @@ -191,7 +207,7 @@ App CLI options: Environmental variables: Server-applicationTitle (default: 'PiGallery 2') Server-publicUrl If you access the page from local network it's good to know the public url for creating sharing link. (default: '') - Server-urlBase If you access the gallery under a sub url (like: http://mydomain.com/myGallery), set it here. If it is not working you might miss the '/' from the beginning of the url. (default: '') + Server-urlBase If you access the gallery under a sub url (like: https://mydomain.com/myGallery), set it here. If it is not working you might miss the '/' from the beginning of the url. (default: '') Server-apiPath PiGallery api path. (default: '/pgapi') Server-customHTMLHead Injects the content of this between the HTML tags of the app. (You can use it to add analytics or custom code to the app). (default: '') Server-svgIcon-viewBox SVG path viewBox. See: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox (default: '0 0 512 512') @@ -208,9 +224,20 @@ Environmental variables: Server-Log-logServerTiming If enabled, the app adds "Server-Timing" http header to the response. (default: false) Users-authenticationRequired Enables user management with login to password protect the gallery. (default: true) Users-unAuthenticatedUserRole Default user right when password protection is disabled. (default: 'Admin') + Users-oidc-enabled (default: false) + Users-oidc-displayName Shown on the login button (client-visible). (default: '') + Users-oidc-issuerUrl OIDC provider Issuer URL (default: '') + Users-oidc-clientId (default: '') + Users-oidc-clientSecret (default: '') + Users-oidc-redirectUri Full callback URL registered at the provider (e.g.: https://example.com/pgapi/auth/oidc/callback) (default: '') + Users-oidc-scopes (default: ["openid","profile","email"]) + Users-oidc-usernameClaim JWT claim to use for matching user name. Defaults to preferred_username; fallbacks to email if empty. (default: 'preferred_username') + Users-oidc-emailClaim (default: 'email') + Users-oidc-allowedDomains If set, only identities with emails in these domains will be accepted. (default: []) + Users-oidc-autoCreateUser If enabled, unknown users will be created with Guest role on first login. If disabled, only existing app users can log in. (default: false) Users-enforcedUsers Creates these users in the DB during startup if they do not exist. If a user with this name exist, it won't be overwritten, even if the role is different. (default: []) - Users-allowQuery Setting a non empty search query here will make the app to only SHOW photos and videos that match the query. You can override this at every user separately. (default: {"type":100,"text":""}) - Users-blockQuery Setting a non empty search query here will make the app to HIDE photos and videos that match the query. You can override this at every user separately. (default: {"type":100,"text":""}) + Users-allowQuery Setting a non empty search query here will make the app to only SHOW photos and videos that match the query. You can override this at every user separately. (default: {"type":100,"value":""}) + Users-blockQuery Setting a non empty search query here will make the app to HIDE photos and videos that match the query. You can override this at every user separately. (default: {"type":100,"value":""}) Users-suppressDefUserWarn if true, the app won't show a warning for using the default user. (default: false) Gallery-enableCache Caches directory contents and search results for better performance. (default: true) Gallery-enableOnScrollRendering Those thumbnails get higher priority that are visible on the screen. (default: true) @@ -248,7 +275,7 @@ Environmental variables: Gallery-Themes-enabled Enable themes and color modes. (default: true) Gallery-Themes-defaultMode Sets the default theme mode that is used for the application. (default: 'auto') Gallery-Themes-selectedTheme Selected theme to use on the site. (default: 'classic') - Gallery-Themes-availableThemes Adds these css settings as it is to the end of the body tag of the page. (default: [{"name":"classic","theme":":root nav.navbar {\n--bs-navbar-color: rgba(255, 255, 255, 0.55);\n--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n--bs-navbar-active-color: #fff;\n--bs-navbar-brand-color: #fff;\n--bs-navbar-brand-hover-color: #fff;\n--bs-bg-opacity: 1;\nbackground-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}"}]) + Gallery-Themes-availableThemes Adds these CSS settings as it is to the end of the body tag of the page. (default: [{"name":"classic","theme":":root nav.navbar {\n--bs-navbar-color: rgba(255, 255, 255, 0.55);\n--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n--bs-navbar-active-color: #fff;\n--bs-navbar-brand-color: #fff;\n--bs-navbar-brand-hover-color: #fff;\n--bs-bg-opacity: 1;\nbackground-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}"}]) Gallery-InlineBlogStartsOpen Makes inline blog (*.md files content) auto-open. (default: false) Gallery-TopBlogStartsOpen Makes top blog (*.md files content) auto-open. (default: false) Gallery-AutoUpdate-enable Enable auto polling for new photos and videos in the gallery. (default: false) @@ -318,6 +345,8 @@ Environmental variables: Map-MapPathGroupConfig Markers are grouped and themed by these settings (default: [{"name":"Transportation","matchers":[{"matchers":["flight","flying"],"theme":{"color":"var(--bs-orange)","dashArray":"4 8","svgIcon":{"viewBox":"0 0 567 512","items":""}}},{"matchers":["drive","driving"],"theme":{"color":"var(--bs-orange)","dashArray":"4 8","svgIcon":{"viewBox":"0 0 640 512","items":""}}},{"matchers":["ship","sailing","cruise"],"theme":{"color":"var(--bs-orange)","dashArray":"4 8","svgIcon":{"viewBox":"0 0 576 512","items":""}}}]},{"name":"Sport","matchers":[{"matchers":["(\b|_|-)run"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 417 512","items":""}}},{"matchers":["(\b|_|-)walk"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 320 512","items":""}}},{"matchers":["(\b|_|-)hike","(\b|_|-)hiking"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 384 512","items":""}}},{"matchers":["(\b|_|-)bike","(\b|_|-)biking","(\b|_|-)cycling"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 640 512","items":""}}},{"matchers":["(\b|_|-)skiing","(\b|_|-)ski"],"theme":{"color":"var(--bs-primary)","dashArray":"","svgIcon":{"viewBox":"0 0 512 512","items":""}}}]},{"name":"Other paths","matchers":[{"matchers":[],"theme":{"color":"var(--bs-secondary)","dashArray":"","svgIcon":{"viewBox":"","items":""}}}]}]) Map-bendLongPathsTrigger Map will bend the path if two points are this far apart on latitude axes. This intended to bend flight if only the end and the start points are given. (default: 0.5) Faces-enabled (default: true) + Faces-sorting-method (default: 'PersonCount') + Faces-sorting-ascending (default: true) Faces-keywordsToPersons If a photo has the same face (person) name and keyword, the app removes the duplicate, keeping the face only. (default: true) Faces-writeAccessMinRole Required minimum right to star (favourite) a face. (default: 'Admin') Faces-readAccessMinRole Required minimum right to show the faces tab. (default: 'User') @@ -326,6 +355,9 @@ Environmental variables: Extensions-repositoryUrl Repository url that points to a list of extensions in .md format. (default: 'https://raw.githubusercontent.com/bpatrik/pigallery2/master/extension/REPOSITORY.md') Extensions-folder Folder where the app stores all extensions. Individual extensions live in their own sub-folders. (default: 'extensions') Extensions-cleanUpUnusedTables Automatically removes all tables from the DB that are not used anymore. (default: true) + Upload-enabled (default: false) + Upload-minimumRole Minimum user role to enable file upload. (default: 'Admin') + Upload-enforcedDirectoryConfig Only enable upload in folder where an ".uploader.pg2conf" is present in the folder. (default: false) Database-type SQLite is recommended. (default: 'sqlite') Database-dbFolder All file-based data will be stored here (sqlite database, job history data). (default: 'db') Database-sqlite-DBFileName Sqlite will save the db with this filename. (default: 'sqlite.db') @@ -343,7 +375,7 @@ Environmental variables: Indexing-reIndexingSensitivity Set the reindexing sensitivity. High value check the folders for change more often. Setting to never only indexes if never indexed or explicit running the Indexing Job. (default: 'low') Indexing-excludeFolderList Folders to exclude from indexing. If an entry starts with '/' it is treated as an absolute path. If it doesn't start with '/' but contains a '/', the path is relative to the image directory. If it doesn't contain a '/', any folder with this name will be excluded. (default: [".Trash-1000",".dtrash","$RECYCLE.BIN"]) Indexing-excludeFileList Files that mark a folder to be excluded from indexing. Any folder that contains a file with this name will be excluded from indexing. (default: []) - AlbumCover-SearchQuery Filters the sub-folders with this search query. If filter results no photo, the app will search again without the filter. (default: {"type":100,"text":""}) + AlbumCover-SearchQuery Filters the sub-folders with this search query. If filter results no photo, the app will search again without the filter. (default: {"type":100,"value":""}) AlbumCover-Sorting If multiple cover is available sorts them by these methods and selects the first one. Using random sorting does not allow to use any other sorting method. (default: [{"method":30,"ascending":false},{"method":20,"ascending":false},{"method":40,"ascending":false}]) Duplicates-listingLimit Maximum number of duplicates to list. (default: 1000) Messaging-Email-emailFrom Some services do not allow sending from random e-mail addresses. Set this accordingly. (default: 'noreply@pigallery2.com') @@ -360,13 +392,13 @@ Environmental variables: ### `config.json` sample: -``` json +```json { "Server": { "applicationTitle": "PiGallery 2", "//[publicUrl]": "If you access the page from local network it's good to know the public url for creating sharing link.", "publicUrl": "", - "//[urlBase]": "If you access the gallery under a sub url (like: http://mydomain.com/myGallery), set it here. If it is not working you might miss the '/' from the beginning of the url.", + "//[urlBase]": "If you access the gallery under a sub url (like: https://mydomain.com/myGallery), set it here. If it is not working you might miss the '/' from the beginning of the url.", "urlBase": "", "//[apiPath]": "PiGallery api path.", "apiPath": "/pgapi", @@ -404,17 +436,41 @@ Environmental variables: "authenticationRequired": true, "//[unAuthenticatedUserRole]": "Default user right when password protection is disabled.", "unAuthenticatedUserRole": "Admin", + "//[oidc]": "Setup SSO with external authentication apps like Authentik or Authelia", + "oidc": { + "enabled": false, + "//[displayName]": "Shown on the login button (client-visible).", + "displayName": "", + "//[issuerUrl]": "OIDC provider Issuer URL", + "issuerUrl": "", + "clientId": "", + "clientSecret": "", + "//[redirectUri]": "Full callback URL registered at the provider (e.g.: https://example.com/pgapi/auth/oidc/callback)", + "redirectUri": "", + "scopes": [ + "openid", + "profile", + "email" + ], + "//[usernameClaim]": "JWT claim to use for matching user name. Defaults to preferred_username; fallbacks to email if empty.", + "usernameClaim": "preferred_username", + "emailClaim": "email", + "//[allowedDomains]": "If set, only identities with emails in these domains will be accepted.", + "allowedDomains": [], + "//[autoCreateUser]": "If enabled, unknown users will be created with Guest role on first login. If disabled, only existing app users can log in.", + "autoCreateUser": false + }, "//[enforcedUsers]": "Creates these users in the DB during startup if they do not exist. If a user with this name exist, it won't be overwritten, even if the role is different.", "enforcedUsers": [], "//[allowQuery]": "Setting a non empty search query here will make the app to only SHOW photos and videos that match the query. You can override this at every user separately.", "allowQuery": { "type": 100, - "text": "" + "value": "" }, "//[blockQuery]": "Setting a non empty search query here will make the app to HIDE photos and videos that match the query. You can override this at every user separately.", "blockQuery": { "type": 100, - "text": "" + "value": "" }, "//[suppressDefUserWarn]": "if true, the app won't show a warning for using the default user.", "suppressDefUserWarn": false @@ -523,7 +579,7 @@ Environmental variables: "defaultMode": "auto", "//[selectedTheme]": "Selected theme to use on the site.", "selectedTheme": "classic", - "//[availableThemes]": "Adds these css settings as it is to the end of the body tag of the page.", + "//[availableThemes]": "Adds these CSS settings as it is to the end of the body tag of the page.", "availableThemes": [ { "//[name]": "Name of the theme", @@ -957,6 +1013,11 @@ Environmental variables: }, "Faces": { "enabled": true, + "//[sorting]": "Default sorting on the faces page", + "sorting": { + "method": "PersonCount", + "ascending": true + }, "//[keywordsToPersons]": "If a photo has the same face (person) name and keyword, the app removes the duplicate, keeping the face only.", "keywordsToPersons": true, "//[writeAccessMinRole]": "Required minimum right to star (favourite) a face.", @@ -979,6 +1040,13 @@ Environmental variables: "//[cleanUpUnusedTables]": "Automatically removes all tables from the DB that are not used anymore.", "cleanUpUnusedTables": true }, + "Upload": { + "enabled": false, + "//[minimumRole]": "Minimum user role to enable file upload.", + "minimumRole": "Admin", + "//[enforcedDirectoryConfig]": "Only enable upload in folder where an \".uploader.pg2conf\" is present in the folder.", + "enforcedDirectoryConfig": false + }, "Database": { "//[type]": "SQLite is recommended.", "type": "sqlite", @@ -1015,7 +1083,7 @@ Environmental variables: "//[SearchQuery]": "Filters the sub-folders with this search query. If filter results no photo, the app will search again without the filter.", "SearchQuery": { "type": 100, - "text": "" + "value": "" }, "//[Sorting]": "If multiple cover is available sorts them by these methods and selects the first one. Using random sorting does not allow to use any other sorting method.", "Sorting": [ diff --git a/gulpfile.ts b/gulpfile.ts index ff6470c0..e1cab2d8 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -390,9 +390,9 @@ gulp.task('generate-man', async (cb): Promise => { '```\n' + ConfigClassBuilder.attachPrivateInterface(defCFG).__printMan() + '```'; - txt += '\n\n ### `config.json` sample:\n'; - txt += '```json\n' + JSON.stringify(defCFG, null, 4) + '```'; - await fsp.writeFile('MANPAGE.md', txt); + txt += '\n\n ### `config.json` sample:\n\n'; + txt += '```json\n' + JSON.stringify(defCFG, null, 4) + '\n```\n'; + await fsp.writeFile(path.join(__dirname, 'docs', 'user-guide', 'configuration.md'), txt); cb(); });