NAME
App::Cme::Command::run - Run a cme script
VERSION
version 1.021
SYNOPSIS
$ cat ~/.cme/scripts/remove-mia
doc: remove mia from Uploders. Require mia parameter
# declare app to configure
app: dpkg
# specify one or more instructions
load: ! control source Uploaders:-~/$mia$/
# commit the modifications with a message (git only)
commit: remove MIA dev $mia
$ cme run remove-mia -arg mia=longgone@d3bian.org
# cme run can also use environment variables
$ cat ~/.cme/scripts/add-me-to-uploaders
app: dpkg-control
load: source Uploaders:.push("$DEBFULLNAME <$DEBEMAIL>")
$ cme run add-me-to-uploaders
Reading package lists... Done
Building dependency tree
Reading state information... Done
Changes applied to dpkg-control configuration:
- source Uploaders:3: '<undef>' -> 'Dominique Dumont <dod@debian.org>'
# show the script documentation
$ cme run remove-mia -doc
remove mia from Uploders. require mia parameter
# list scripts
$ cme run -list
Available scripts:
- update-copyright
- add-me-to-uploaders
DESCRIPTION
Run a script written with cme DSL (Design specific language) or in plain Perl.
A script passed by name is searched in ~/.cme/scripts
, /etc/cme/scripts
or /usr/share/perl5/Config/Model/scripts
. E.g. with cme run foo
, cme
loads either ~/.cme/scripts/foo
, /etc/cme/scripts/foo
or /usr/share/perl5/Config/Model/scripts/foo
No search is done if the script is passed with a path (e.g. cme run ./foo
)
cme run
can also run plain Perl script. This is syntactic sugar to avoid polluting global namespace, i.e. there's no need to store a script using cme function in /usr/local/bin/
.
When run, this script:
opens the configuration file of
app
applies the modifications specified with
load
instructionssave the configuration files
commits the result if
commit
is specified.
See App::Cme::Command::run for details.
Syntax
The script accepts instructions in the form:
key: value
The script accepts the following instructions:
- app
-
Specify the target application. Must be one of the application listed by
cme list
command. Mandatory. Only oneapp
instruction is allowed. - var
-
Use Perl code to specify variables usable in this script. The Perl code must store data in
%var
hash. For instance:perl: my @l = localtime; $var{year} = $l[5]+1900;
The hash
%args
contains the variables passed with the-arg
option. Reading a value from%args
which is set by the user triggers an error. - load
-
Specify the modifications to apply using a string as specified in Config::Model::Loader
- commit
-
Specify that the change must be committed with the passed commit message. When this option is used,
cme
raises an error if used on a non-clean workspace. This option works only with git.
All instructions can use variables like $stuff
whose value can be specified with -arg
options, with a Perl variable (from var:
section explained above) or with an environment variable:
For instance:
cme run -arg var1=foo -arg var2=bar
transforms the instruction:
load: ! a=$var1 b=$var2
in
load: ! a=foo b=bar
Options
list
List available scripts and exits.
arg
Arguments for the cme scripts which are used to substitute variables.
doc
Show the script documentation. (Note that --help
options show the documentation of cme run
command)
Common options
Examples
update copyright years in debian/copyright
$ cat ~/.cme/scripts/update-copyright
app: dpkg-copyright
load: Files:~ Copyright=~"s/2016,?\s+$name/2017, $name/g"
commit: updated copyright year of $name
$ cme run update-copyright -arg "name=Dominique Dumont"
cme: using Dpkg::Copyright model
Changes applied to dpkg-copyright configuration:
- Files:"*" Copyright: '2005-2016, Dominique Dumont <dod@debian.org>' -> '2005-2017, Dominique Dumont <dod@debian.org>'
- Files:"lib/Dpkg/Copyright/Scanner.pm" Copyright:
@@ -1,2 +1,2 @@
-2014-2016, Dominique Dumont <dod@debian.org>
+2014-2017, Dominique Dumont <dod@debian.org>
2005-2012, Jonas Smedegaard <dr@jones.dk>
[master ac2e6410] updated copyright year of Dominique Dumont
1 file changed, 2 insertions(+), 2 deletions(-)
SEE ALSO
AUTHOR
Dominique Dumont
COPYRIGHT AND LICENSE
This software is Copyright (c) 2017 by Dominique Dumont.
This is free software, licensed under:
The GNU Lesser General Public License, Version 2.1, February 1999