Init Job
Monteur has an Init Job to keep its setup in your repository seamlessly guided
and simple. The aim is to make development easier and happier from the get go!
Init API is only available starting from Monteur version
v0.0.2
.
Initialize Your Repository
To initialize your repository, please:
Go to your repository's root directory.
Issue the following command:
1
monteur init
Naming Your Project Metadata
Once done, the next thing to do is to fill up your project/app
metadata. These information are crucial for documents
generations, packaging metadata usage, and even release your
product or publish your documents. You usually need to set
them up once.
These configuration files were intentionally designed to be
i18n
compatible. For simplicity sake, this
specification shall explain in en
for English.
There are a bunch of configurations to deal with so sit tight
and let's go over each of them one-by-one.
App metadata.toml
This file is located in
.configs/monteur/app/config/en/metadata.toml
.
These are the main metadata used across various
composer, writer, builder, packager, and publisher via
Monteur's CI Jobs. The goal is to ensure all these
outputs only source from 1 unified input (here) in order
to maintain metadata consistency for your project/app.
Here are the list of information you need to update
matching your project's metadata:
|
|
Software.Name
COMPULSORY - used as the documented product name.
Monteur automatically takes the directory name as project/app name. Please alter them accordingly.
Available since Monteur version
v0.0.2
.
Software.Command
COMPULSORY - used as the program name for invoking its command usage.
Whenever possible, try to keep it to 1 short sensible word only dash (
-
), alphanumeric characters, avoid space (Available since Monteur version
v0.0.2
.
Software.ID
COMPULSORY - used as the stock keeping unit (SKU) identifier.
Monteur automatically takes the directory name as the project/app ID. Please alter them accordingly.
Whenever possible, try to keep it below
64
characters long using only dash (-
), alphanumeric characters, avoid space (Available since Monteur version
v0.0.2
.
Software.Version
COMPULSORY - indicate the current version of development.
Whenever possible, try to keep it as compliant to Semantic Versioning as possible.
This is the central control of the version number where it will be used for generating all necessary version files across the repository.
Available since Monteur version
v0.0.2
.
Software.Category
COMPULSORY - indicate the name of the catalog the project/app is belonged to.
Useful for packaging jobs like
.deb
.Available since Monteur version
v0.0.2
.
Software.Suite
OPTIONAL - indicate the name of the software suite the project/app is belonged to.
For incompatible project/app, just leave the field blank (
''
).Example:
Microsoft Word
inMicrosoft Office
(Suite).Useful for packaging jobs like
.deb
.Available since Monteur version
v0.0.2
.
Software.Abstract
COMPULSORY - a short, no article ("a", "an", "the") description with max 70 characters. Make it a pitch of your project/app.
Useful for packaging jobs like
.deb
.Available since Monteur version
v0.0.2
.
Software.Description
COMPULSORY - a longer description joining after the abstract starting with a new paragraph.
Useful for packaging jobs like
.deb
.Available since Monteur version
v0.0.2
.
Software.Website
OPTIONAL - the homepage of the project/app.
For incompatible project/app, just leave the field blank (
''
).Useful for packaging jobs like
.deb
.Available since Monteur version
v0.0.2
.
Software.Contact.Name
COMPULSORY - the contact entity's name (e.g. a person or company name) for project/app general inquiry purposes.
Useful for packaging jobs like
.deb
.Available since Monteur version
v0.0.2
.
Software.Contact.Email
COMPULSORY - the contact entity's email addresses for project/app general inquiry purposes.
The first email address shall be given priority during a single email address selection.
Useful for packaging jobs like
.deb
.Available since Monteur version
v0.0.2
.
Software.Maintainers.[ID]
COMPULSORY - a maintainer's identity. Details of the entity's fields are described in
Software.[TYPE].[ID]
section later.This list is for the project/app maintainers, usually those who has power for maintaining the upkeep.
The
[ID]
can be anything and was meant for grouping the entity's information properly. To add more maintainers, simply duplicate the fields and provide another unique[ID]
for it. In any cases, the[ID]
MUST be the same if the same entity is also contributing other role like sponsors.Use for assembling and rendering the project's/app's copyrights and citation list.
Available since Monteur version
v0.0.2
.
Software.Contributors.[ID]
COMPULSORY - a contributor's identity. Details of the entity's fields are described in
Software.[TYPE].[ID]
section later.This list is for the project/app contributors, usually those who contribute once or twice in a blue moon into the project/app.
The
[ID]
can be anything and was meant for grouping the entity's information properly. To add more contributors, simply duplicate the fields and provide another unique[ID]
for it. In any cases, the[ID]
MUST be the same if the same entity is also contributing in another role like sponsors.Use for assembling and rendering the project's/app's copyrights and citation list.
Available since Monteur version
v0.0.2
.
Software.Sponsors.[ID]
COMPULSORY - a financial sponsor's identity. Details of the entity's fields are described in
Software.[TYPE].[ID]
section later.This list is for the project/app financial contributors, who contribute once/twice in a blue moon OR periodically into the project/app.
The
[ID]
can be anything and was meant for grouping the entity's information properly. To add more sponsors, simply duplicate the fields and provide another[ID]
for it. In any cases, the[ID]
MUST be the same if the same entity is also contributing in another role like maintainers.Use for assembling and rendering the project's/app's copyrights and citation list.
Available since Monteur version
v0.0.2
.
Software.[TYPE].[ID].Name
COMPULSORY - name of a legal entity.
The
[TYPE]
refers to theMaintainers
,Contributors
, andSponsors
above.Available since Monteur version
v0.0.2
.
Software.[TYPE].[ID].Email
COMPULSORY - list of emails of a legal entity.
The
[TYPE]
refers to theMaintainers
,Contributors
, andSponsors
above.The first email is given the highest priority in a single email address selection.
Available since Monteur version
v0.0.2
.
Software.[TYPE].[ID].JointTime.Year
COMPULSORY - the year where an legal entity participated by giving into the project/app.
The
[TYPE]
refers to theMaintainers
,Contributors
, andSponsors
above.Available since Monteur version
v0.0.2
.
App help.toml
This file is located in
.configs/monteur/app/config/en/help.toml
.
By default, Montuer created a default help guide data
stored inside help.toml
which contains all
the known help file rendering templates. Some software
distributors (e.g. .deb
) requires the
obselete help file made available in their packages. If
you are not using it, please skip step.
Here are the list of information you need to update
matching your project's metadata:
[Help]
Command = '$ {{ .App.Command }} help'
Description = '{{ .App.Abstract }}'
Resources = 'Visit {{ .App.Website }} for detailed documentations.'
[Help.Manpage]
Lv1 = """
.\\" {{ .App.Name }} - Lv1 Manpage
.\\" Contact {{ index .App.Contact.Email 0 }} for errors or typos.
.TH man 1 "{{- .App.Time.Day }} {{ .App.Time.Month }} {{ .App.Time.Year -}}" "{{- .App.Version -}}" "{{- .App.ID }} man page"
.SH NAME
{{ .App.Name }} - {{ .App.Abstract }}
.SH SYNOPSIS
{{ .App.Help.Command }}
.SH DESCRIPTION
{{ .App.Description -}}
.SH OPTIONS
{{ .App.Help.Description }}
.SH SEE ALSO
{{ .App.Help.Resources }}
#.SH AUTHORS
#{{ range $index, $owner := .App.Maintainers -}}
# {{- $owner.Name }} ({{- index $owner.Email 0 -}})
#{{ end -}}
"""
Help.Command
COMPULSORY - the one-line command to call out its help display.
Use to guide users to call for help from the project/app (e.g.
program --help
orprogram help
).Available since Monteur version
v0.0.2
.
Help.Description
COMPULSORY - the description of the project/app.
By default, it is mapped to your
Software.Abstract
from themetadata.toml
above.Available since Monteur version
v0.0.2
.
Help.Resources
COMPULSORY - the instruction to obtain more details or for the project/app.
By default, it is mapped to visit
Software.Website
from themetadata.toml
above.Available since Monteur version
v0.0.2
.
Help.Manpage.[LEVEL]
COMPULSORY - the instruction to generate all corresponding
[LEVEL]
man pages for the project/app.By default, Monteur generates level 1 (
.1
) man page that briefly describes the project/app and the help command (Help.Command
above) to obtain actual help.The
[LEVEL]
can be anything but generally advised to be numeric number starting from1
and usually ends at8
. Please consult your operating system's specifications about each levels.The
[LEVEL]
s are usually being used as the file extension depending on the CI Job recipe. Please consult the CI Job recipe for its modifications' compatibility.Available since Monteur version
v0.0.2
.
App [LICENSE].toml
This file is located in
.configs/monteur/app/copyrights/[LICENSE].toml
.
The [LICENSE]
is a placeholder filename
which can be anything useful for own referencing usage.
Montuer is designed to manage and generate
multi-licenses project/app work environment. Hence you
can include multiple licenses whenever applicable like
dual-licensing or multiple licenses (e.g. media license
+ software license).
These license data files are the template and input data
for rendering the publishable license file during a
build or CI Job. It uses other metadata like the
copyright holders to fill in the gap while still
permitting project/app developer to overwrite them.
By default, Monteur generates
Apache 2.0 Open Source License
for maximum permissive and commercial friendly usage.
This default file is meant for example referencing
usage. Please remove it when it is incompatible to the
project/app after creating your own license data file.
Here are the list of information you need for creating
a [LICENSE].toml
data file:
|
|
Copyright.Name
COMPULSORY - name of the license for human comprehension.
Available since Monteur version
v0.0.2
.
Copyright.ID
COMPULSORY - ID of the license for tracking and identifcation use.
For open source licenses, please consult SPDX Licenses List for maximum compatibility identifier.
Available since Monteur version
v0.0.2
.
Copyright.Comment
OPTIONAL - comment for the license to appear in the rendering.
Please leave it empty (
""
) if it is no comment.Available since Monteur version
v0.0.2
.
Copyright.Materials
COMPULSORY - list out all the files or the naming patterns of the materials where the license is applicable.
General symbols is allowed like
*
stands for any or all pattern of. Example:*.jpg
refers to all files with.jpg
file extension, regardless of its location in the repository, is subjected this this license.To apply the license to ALL files, simple just retain the
'*'
which stands for all files regardless name or extensions.Available since Monteur version
v0.0.2
.
Copyright.Holders
OPTIONAL - list out all the copyright holders of this license, overriding the default rendering completely.
The format MUST be:
NOTE: The tailing comma (1 2
Format : '[YEAR] [FULL NAME] <[EMAIL]>', Example: '2021 John S. Smith <[email protected]>',
,
) is removed for the last entry.If left empty, all maintainers, contributors, and sponsors from
metadata.toml
above shall be assembled and formatted automatically to fill in the gap.Available since Monteur version
v0.0.2
.
Copyright.Notice
COMPULSORY - a short copyright notice usually preprended in front of a source codes, emit into command-line request, or an IP document.
Available since Monteur version
v0.0.2
.
Copyright.Text
COMPULSORY - full license body in plaintext without the copyright holders prepend to it.
Available since Monteur version
v0.0.2
.
App debian.toml
This file is located in
.configs/monteur/app/config/en/debian.toml
.
These are .deb
package specific information
meant for Debian-based Linux operating system. The
fields and data here are meant for offical
dehelper
packager to systematically work
out a signed .deb
package file. Depending
on which packaging software you're using (e.g.
debuild
), certain information are
COMPULSORY. Monteur itself is using this packager
complying to the Debian Policy itself to ensure maximum
compatiblity with the ecosystem.
If you're not deploying a .deb
package
distribution, please skip this configuration file.
Here are the list of information you need to update
matching your project's metadata:
|
|
DEB.Compat
COMPULSORY - generates the
DEBIAN/compat
file.The values must be compliant to debhelper Compatibility Level .
Only used if you are using debhelper to build the
.deb
package.Available since Monteur version
v0.0.2
.
DEB.Rules
COMPULSORY - generates the
DEBIAN/rules
file.The values must be compliant to Debian Rules Policy .
Available since Monteur version
v0.0.2
.
DEB.Control
COMPULSORY - generates the
DEBIAN/control
file.The generated file is compliant to Control Fields Policy .
Available since Monteur version
v0.0.2
.
DEB.Control.Essential
COMPULSORY - set the
.deb
not to be uninstalled if marked as essential packages.Accepts only
true
orfalse
as complying to Essential Policy .Available since Monteur version
v0.0.2
.
DEB.Control.PackageType
COMPULSORY - set the
.deb
not to be uninstalled.Accepts only
deb
orudeb
complying to Package Type Policy .Available since Monteur version
v0.0.2
.
DEB.Control.Priority
COMPULSORY - set the
.deb
package's installation priority nature.Only accepts value from Package Installation Priority .
Available since Monteur version
v0.0.2
.
DEB.Control.RulesRequiresRoot
COMPULSORY - set the
.deb
package to be handled by the level of root permissions.Accepts only values from Rules Requires Root Policy .
Available since Monteur version
v0.0.2
.
DEB.Control.Standards
COMPULSORY - set the package validator standards.
Accepts only the semantic versioning ID as value from Debian Policy Checklist.
Available since Monteur version
v0.0.2
.
DEB.Control.Section
COMPULSORY - set the package catagory.
Accepts only the standards ID from Debian Archive Subsection.
Available since Monteur version
v0.0.2
.
DEB.Relationships.[TYPE]
COMPULSORY - generates all the project/app relationship with other packages inside the
DEBIAN/control
file.The
[TYPE]
MUST be the exact name of the relationship type stated in Debian Package Relationship likeBuild-Depends
,Build-Depends-Indep
,Build-Depends-Arch
, and etc.The value MUST be a list of corresponding
.deb
packages.Available since Monteur version
v0.0.2
.
DEB.VCS
COMPULSORY - generates the VCS field inside
DEBIAN/control
file.More info: Debian Archive Subsection .
Available since Monteur version
v0.0.2
.
DEB.VCS.Type
COMPULSORY - specify the version control type used to manage the repository.
Accepts only the value from: Debian Control VCS Fields .
Available since Monteur version
v0.0.2
.
DEB.VCS.URL
COMPULSORY - specify the URL source to obtain a copy of the project/app code repository.
Accepts only the value from: Debian Control VCS Fields .
Available since Monteur version
v0.0.2
.
DEB.VCS.Branch
COMPULSORY - specify the version control branch responsible for this packaging from the repository.
Accepts only the value from: Debian Control VCS Fields .
Available since Monteur version
v0.0.2
.
DEB.VCS.Path
OPTIONAL - specify the directory pathing of the version control repository.
Accepts only the value from: Debian Control VCS Fields .
Leave the field absent or commented if unused.
Available since Monteur version
v0.0.2
.
DEB.VCS.Testsuite.Paths
OPTIONAL - list out the test suite files for testing the
.deb
package.Leave the list empty if unused.
Accepts only the value from: Debian Control Testsuite Fields .
Available since Monteur version
v0.0.2
.
DEB.Copyright
COMPULSORY - generates the
DEBIAN/copyright
file.The actual copyright entries are generated internally using app
copyright.toml
data above. These are additional data requirements specific to.deb
packaging.Available since Monteur version
v0.0.2
.
DEB.Copyright.Format
COMPULSORY - states the copyright format version.
Accepts only the format version in full URL from: Debian Copyright Format .
Available since Monteur version
v0.0.2
.
DEB.Copyright.Disclaimer
COMPULSORY - states your copyright disclaimers.
Accepts only the value complying to the selected standards format from: Debian Copyright Format .
Available since Monteur version
v0.0.2
.
DEB.Copyright.Comment
COMPULSORY - states your copyright comments.
Accepts only the value complying to the selected standards format from: Debian Copyright Format .
Available since Monteur version
v0.0.2
.
DEB.Changelog
COMPULSORY - generate the necessary data for
DEBIAN/changelog
file.The actual changelog entries are generated via Prepare CI Job recipe. These fields act as supplimentary where the data is not suitable to be placed in the recipe file itself.
Available since Monteur version
v0.0.2
.
DEB.Changelog.Urgency
COMPULSORY - states the current changelog entry's urgency.
Only accepts values from Changelog Urgency .
Available since Monteur version
v0.0.2
.
DEB.Source
COMPULSORY - generates all files in
DEBIAN/source
directory.Available since Monteur version
v0.0.2
.
DEB.Source.Format
COMPULSORY - defines the
.deb
package format by generatingDEBIAN/source/format
file.Only accepts values from Source Format .
When in doubt, use
3.0 (native)
instead.Available since Monteur version
v0.0.2
.
DEB.Source.LocalOptions
COMPULSORY - generates
DEBIAN/source/local-options
file.Only accepts values from Source Local Options .
Available since Monteur version
v0.0.2
.
DEB.Source.Options
COMPULSORY - generates
DEBIAN/source/local-options
file.Only accepts values from Source Options .
Available since Monteur version
v0.0.2
.
DEB.Source.LintianOverrides
COMPULSORY - generates
DEBIAN/source/lintian-overrides
file.Only accepts values from Source Lintian Overrides .
Available since Monteur version
v0.0.2
.
DEB.Install
COMPULSORY - generates
DEBIAN/install
file.The values are a set of
key = value
data, where the:Key - designate the installation path where it should be relative without the starting root (
/
) path.Value - designate the pathing to the installation target.
Example:
will install a packaged1 2
[DEB.Install] 'usr/bin' = 'monteur'
monteur
executable file intousr/bin
directory of an operating system.Available since Monteur version
v0.0.2
.
Assemble Monteur's CI Jobs
Now that the repository with Monteur ready, it's time to
assemble the CI Jobs compatible to your project/app. Montuer
is designed to make different jobs portable yet maintainable
across its ecosystem so don't you worry.
For starter, please head over to the
CI Jobs' Galleries
and shop for existing continuously improved recipes. That
will save you tons of times and get to work.
Alternatively, you can develop your on CI Job recipe. Each
recipe has its own configurations so please go through them
accordingly.
Epilogue
That's all for initializing Monteur into your project/app repository. If you have any question, please feel free to raise your question at our Issues Section.