2025-05-17 15:26:08 +02:00

3.8 KiB

Registers a new command-line action argument. For more information, see Command Line Arguments.

newaction { description }

Parameters

description is a table describing the new action. It may contain the following fields:

Field Description
trigger What the user would type on the command line to select the action, e.g. "vs2013".
shortname A short summary for the help text, e.g. "Visual Studio 2013".
description A description of the action's result, e.g. "Generate Visual Studio 2013 project files".
execute A function to be executed when the action is fired.
targetos If the toolset targets a specific OS, the identifier for that OS.
valid_kinds The list of project kinds supported by the action.
valid_languages The list of languages supported by the action.
valid_tools The list of tools supported by the action.
toolset Default tools.
onStart A callback marking the start of action processing.
onWorkspace A callback for each workspace specified in the user script.
onProject A callback for each project specified in the user script.
onRule A callback for each rule specified in the user script.
onEnd A callback marking the end of action processing.
onCleanWorkspace A callback for each workspace, when the clean action is selected.
onCleanProject A callback for each project, when the clean action is selected.
onCleanTarget A callback for each target, when the clean action is selected.
pathVars A map of Premake tokens to toolset specific identifiers.
aliases A list of action names to alias to this action.
deprecatedaliases A table containing a mapping of aliases to callbacks to invoke on action invocation and filters containing the deprecated alias. Each value in the deprecatedaliases table is a table optionally containing an "action" and "filter" key. The values in this table are functions taking zero arguments. See the example below.

The callbacks will fire in this order:

  1. onStart() 2a. onWorkspace() for each workspace 2b. onProject() for each project in each workspace
  2. onRule() for each rule
  3. execute()
  4. onEnd()

:::caution The following fields have been deprecated: :::

Field Description
os Deprecated, use targetos instead.
onSolution Deprecated, use onWorkspace instead.

Availability

Premake 5.0 and later.

Examples

Register a new action to install the software project.

newaction {
   trigger     = "install",
   description = "Install the software",
   execute     = function ()
      os.copyfile("bin/debug/myprogram", "/usr/local/bin/myprogram")
   end
}

Register a new action with aliases and deprecations.

newaction {
   trigger           = "myaction",
   description       = "Custom action",
   aliases           = { "myalias", "deprecatedalias" },
   deprecatedaliases = {
      ["deprecatedalias" ] = {
         [ "action" ] = function()
                           p.warn("Use myaction instead of deprecatedalias.") 
                        end,
         [ "filter" ] = function()
                           p.warn("deprecatedalias has been deprecated. Filter on myaction instead.") 
                        end
      }
   }
}

See Also