Package com.mooltiverse.oss.nyx.command
Class Make
- java.lang.Object
-
- com.mooltiverse.oss.nyx.command.Make
-
-
Field Summary
Fields Modifier and Type Field Description static String
DEFAULT_TEMPLATE_RESOURCE_NAME
The name of the resource to load for the default template.
-
Constructor Summary
Constructors Constructor Description Make(State state, Repository repository)
Standard constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected File
getChangelogFile()
Returns the reference to the configured changelog file, if configured, ornull
of no destination file has been set by the configuration.protected String
getCurrentBranch()
Returns the name of the current branch or a commit SHA-1 if the repository is in the detached head state.protected String
getInternalAttribute(String attributeName)
Retrieves the attribute with the given name from the internal attributes map.protected String
getLatestCommit()
Returns the SHA-1 identifier of the last commit in the current branch.protected boolean
isInternalAttributeUpToDate(String attributeName, Object expectedValue)
Returnstrue
if the internal attributes map contains an attribute with the given name and its value equals the given expected value.protected boolean
isRepositoryClean()
Returnstrue
if the repository is in a clean state (no uncommitted changes).boolean
isUpToDate()
Returnstrue
if this command is up to date, which means that the internal state (Command.state()
) would not change by running (Command.run()
) the command again.protected void
putInternalAttribute(String attributeName, Object attributeValue)
Stores the attribute with the given name to the internal attributes map.protected String
renderTemplate(String template)
Renders the given template using the internalState
object as the context.protected Boolean
renderTemplateAsBoolean(String template)
Renders the given template using the internalState
object as the context, returning the boolean value, according toTemplates.toBoolean(String)
.protected Integer
renderTemplateAsInteger(String template)
Renders the given template using the internalState
object as the context, returning the integer value, according toTemplates.toInteger(String)
.Repository
repository()
Returns the repository object.protected ReleaseService
resolveReleaseService(String name)
Returns theReleaseService
with the given configuration name and also resolves its configuration option templates.protected ReleaseType
resolveReleaseType()
Selects the right release type among those configured based on their matching attributes.protected Map<String,String>
resolveServiceOptions(Map<String,String> options)
Resolves the given options by rendering each value of the given map as a template.State
run()
Runs the command and returns the updated reference to the state object.State
state()
Returns the state object.
-
-
-
Field Detail
-
DEFAULT_TEMPLATE_RESOURCE_NAME
public static final String DEFAULT_TEMPLATE_RESOURCE_NAME
The name of the resource to load for the default template. Value: "changelog.tpl".- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Make
public Make(State state, Repository repository)
Standard constructor.- Parameters:
state
- the state referencerepository
- the repository reference- Throws:
NullPointerException
- if a given argument isnull
-
-
Method Detail
-
getChangelogFile
protected File getChangelogFile() throws DataAccessException, IllegalPropertyException
Returns the reference to the configured changelog file, if configured, ornull
of no destination file has been set by the configuration.- Returns:
- the reference to the configured changelog file, if configured
- Throws:
DataAccessException
- in case the configuration can't be loaded for some reason.IllegalPropertyException
- in case the configuration has some illegal options.
-
isUpToDate
public boolean isUpToDate() throws DataAccessException, IllegalPropertyException, GitException
Returnstrue
if this command is up to date, which means that the internal state (Command.state()
) would not change by running (Command.run()
) the command again. It other words, when this method returnstrue
any invocation of the (Command.run()
) method is needless and idempotent about the state. This method uses the quickest method to verify whether the state is up to date or not. This method must not rely on dependencies and it must always evaluate its own status independently. As a general rule this method checks if its inputs (i.e. from the configuration) have changed since the last run.- Returns:
true
if this command is up to date- Throws:
DataAccessException
- in case the configuration can't be loaded for some reason.IllegalPropertyException
- in case the configuration has some illegal options.GitException
- in case of unexpected issues when accessing the Git repository.- See Also:
Command.state()
,Command.run()
-
run
public State run() throws DataAccessException, IllegalPropertyException, GitException, ReleaseException
Runs the command and returns the updated reference to the state object. In order to improve performances you should only invoke this method whenCommand.isUpToDate()
returnsfalse
.- Returns:
- the updated reference to the state object. The returned object is the same instance passed in the constructor
or
null
if the command has cleared the state. - Throws:
DataAccessException
- in case the configuration can't be loaded for some reason.IllegalPropertyException
- in case the configuration has some illegal options.GitException
- in case of unexpected issues when accessing the Git repository.ReleaseException
- if the task is unable to complete for reasons due to the release process.- See Also:
Command.isUpToDate()
,Command.state()
-
state
public final State state()
Returns the state object.- Specified by:
state
in interfaceCommand
- Returns:
- the state object that was passed in the constructor (never
null
, even when or afterCommand.run()
returnsnull
).
-
repository
public final Repository repository()
Returns the repository object.- Returns:
- the repository object.
-
getCurrentBranch
protected String getCurrentBranch() throws GitException
Returns the name of the current branch or a commit SHA-1 if the repository is in the detached head state.- Returns:
- the name of the current branch or a commit SHA-1 if the repository is in the detached head state.
- Throws:
GitException
- in case of unexpected issues when accessing the Git repository.- See Also:
repository()
-
getLatestCommit
protected String getLatestCommit() throws GitException
Returns the SHA-1 identifier of the last commit in the current branch.- Returns:
- the SHA-1 identifier of the last commit in the current branch or
code
if the repository has no commits yet. - Throws:
GitException
- in case of unexpected issues when accessing the Git repository.- See Also:
repository()
-
isRepositoryClean
protected boolean isRepositoryClean() throws GitException
Returnstrue
if the repository is in a clean state (no uncommitted changes).- Returns:
true
if the repository is in a clean state (no uncommitted changes).- Throws:
GitException
- in case of unexpected issues when accessing the Git repository.- See Also:
repository()
-
isInternalAttributeUpToDate
protected boolean isInternalAttributeUpToDate(String attributeName, Object expectedValue)
Returnstrue
if the internal attributes map contains an attribute with the given name and its value equals the given expected value. The comparison is always performed using theObject.toString()
method of the expected value.- Parameters:
attributeName
- the name of the attribute to check. It can't benull
expectedValue
- the expected value of the attribute. It may benull
- Returns:
true
if the internal attributes map contains an attribute with the given name and its value equals the given expected value.
-
getInternalAttribute
protected String getInternalAttribute(String attributeName)
Retrieves the attribute with the given name from the internal attributes map. The returned value is always theObject.toString()
representation of the stored value.- Parameters:
attributeName
- the name of the attribute to store. It can't benull
- Returns:
- the value of the attribute, if available, otherwise
null
-
putInternalAttribute
protected void putInternalAttribute(String attributeName, Object attributeValue)
Stores the attribute with the given name to the internal attributes map. The stored value is always performed theObject.toString()
of the given value.- Parameters:
attributeName
- the name of the attribute to store. It can't benull
attributeValue
- the value of the attribute. It may benull
-
renderTemplate
protected String renderTemplate(String template) throws IllegalPropertyException
Renders the given template using the internalState
object as the context.- Parameters:
template
- the string template to render.- Returns:
- the rendered template. It is
null
if the given template isnull
. - Throws:
IllegalPropertyException
- in case the given template can't be rendered.
-
renderTemplateAsBoolean
protected Boolean renderTemplateAsBoolean(String template) throws IllegalPropertyException
Renders the given template using the internalState
object as the context, returning the boolean value, according toTemplates.toBoolean(String)
.- Parameters:
template
- the string template to render.- Returns:
- the rendered template as boolean. It is
false
if the given template isnull
. - Throws:
IllegalPropertyException
- in case the given template can't be rendered.
-
renderTemplateAsInteger
protected Integer renderTemplateAsInteger(String template) throws IllegalPropertyException
Renders the given template using the internalState
object as the context, returning the integer value, according toTemplates.toInteger(String)
.- Parameters:
template
- the string template to render.- Returns:
- the rendered template as integer. It is
0
if the given template isnull
. - Throws:
IllegalPropertyException
- in case the given template can't be rendered.
-
resolveServiceOptions
protected Map<String,String> resolveServiceOptions(Map<String,String> options) throws IllegalPropertyException
Resolves the given options by rendering each value of the given map as a template. Keys are left unchanged.- Parameters:
options
- the options to resolve.- Returns:
- a new map with the same keys as the input map but values resolved as templates.
- Throws:
IllegalPropertyException
- in case the given values can't be rendered as templates.
-
resolveReleaseService
protected ReleaseService resolveReleaseService(String name) throws DataAccessException, IllegalPropertyException, ReleaseException, UnsupportedOperationException
Returns theReleaseService
with the given configuration name and also resolves its configuration option templates.- Parameters:
name
- the name of the service configuration.- Returns:
- the resolved service. Returns
null
if no service with such configuration name exists. - Throws:
DataAccessException
- in case the configuration can't be loaded for some reason.IllegalPropertyException
- in case the configuration has some illegal options.ReleaseException
- if the task is unable to complete for reasons due to the release process.UnsupportedOperationException
- if the service configuration exists but the service class does notsupport
theService.Feature.RELEASES
feature.
-
resolveReleaseType
protected ReleaseType resolveReleaseType() throws DataAccessException, IllegalPropertyException, GitException, ReleaseException
Selects the right release type among those configured based on their matching attributes.- Returns:
- the resolved release type. Never
null
. - Throws:
DataAccessException
- in case the configuration can't be loaded for some reason.IllegalPropertyException
- in case the configuration has some illegal options.GitException
- in case of unexpected issues when accessing the Git repository.ReleaseException
- if the task is unable to complete for reasons due to the release process.
-
-