Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Beamer TPT NG
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
latex
Beamer TPT NG
Commits
54840a1a
Commit
54840a1a
authored
4 years ago
by
Cédric Ware
Browse files
Options
Downloads
Patches
Plain Diff
Start implementing "make release".
parent
a3a25c25
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Makefile
+13
-3
13 additions, 3 deletions
Makefile
debian/make-release
+161
-0
161 additions, 0 deletions
debian/make-release
with
174 additions
and
3 deletions
Makefile
+
13
−
3
View file @
54840a1a
...
...
@@ -5,6 +5,8 @@ TOP ?= model.pdf
TOP_NAME
=
$(
patsubst %.pdf,%,
$(
TOP
))
EXT
=
pdf log aux out bbl blg toc snm nav fdb_latexmk fls
STYS
=
$(
wildcard texinputs/
*
.sty
)
FIGS
=
$(
wildcard figs/
*
.fig
)
FIGS_PDF
=
$(
patsubst %.fig,%.pdftex,
$(
FIGS
))
FIGS_PDF_T
=
$(
patsubst %.fig,%.pdftex_t,
$(
FIGS
))
...
...
@@ -19,6 +21,7 @@ NEEDED = $(FIGS_PDF) $(FIGS_PDF_T) $(SVGS_PDF) $(ODGS_PDF)
# Only for package documentation.
NEEDED_DOC
=
$(
TOP_NAME
)
-slide2
.pdf
RELEASE_SCRIPT
=
debian/make-release
PREVIEW_OPTS
=
\R
equirePackage[active,delayed,tightpage,graphics,pdftex]
{
preview
}
PREVIEW_OPTS
+=
\P
reviewMacro[
{
*
[][]{}}]{
\i
ncode
}
...
...
@@ -27,7 +30,7 @@ export TEXINPUTS := ./texinputs/:$(TEXINPUTS)
#.SECONDARY: $(FIGS_PDF)
.PHONY
:
all clean dep preview
.PHONY
:
all clean dep preview
release
all
:
$(TOP)
...
...
@@ -35,8 +38,8 @@ $(TOP) : dep
dep
:
$(NEEDED) $(NEEDED_DOC)
%.pdf
:
%.tex
texinputs/beamerthemetptnew.sty
@
echo
"La
tex
search path
$(
TEXINPUTS
)
"
%.pdf
:
%.tex
$(STYS)
@
echo
"La
TeX
search path
$(
TEXINPUTS
)
"
@
latexmk
-pdf
$<
preview
:
dep
...
...
@@ -66,3 +69,10 @@ clean:
# Only for package documentation.
$(TOP_NAME)-slide2.tex
:
$(TOP_NAME).tex
@
perl
-pE
'if (m{^%+ Stop ici}i) { say "\\end{document}"; last; }'
$<
>
$@
# Only for package installation and packaging.
# Usage: make release V=-v<x>.<y>.<z>. If V is not given,
# it will be calculated from the latest version-like tag
# (and incremented unless working copy is clean and at the tag).
release
:
perl
-i
.orig
$(
RELEASE_SCRIPT
)
$(
V
)
$(
STYS
)
$(
TOP_NAME
)
.tex
This diff is collapsed.
Click to expand it.
debian/make-release
0 → 100755
+
161
−
0
View file @
54840a1a
#! /usr/bin/env perl
#
# Filter calls to some LaTeX macros:
# \date{...} -> \date{date}
# \ProvidesPackage{...}[...] -> \ProvidesPackage{...}[date version]
#
# If you want to filter and replace files instead of stdin,
# invoke with perl -i.
#
# Version and date are either specified on the command line (-v, -d)
# or determined from Git tags and/or today's date. If the Git
# working copy in the current directory is clean and exactly at a
# version tag, use that version and commit date. Otherwise use
# a version number incremented from the last version tag,
# and today's date.
#
use
5.012
;
use
strict
;
use
warnings
;
use
FindBin
;
use
Date::
Simple
qw(date today)
;
use
Getopt::
Long
qw(:config bundling)
;
# Function prototypes and global variables.
sub
parse_options
();
sub
get_version_from_git
();
sub
get_date_from_git
();
sub
next_version
($);
our
(
$version
,
$date
);
#
# Program logic.
#
# Get options and version from Git tags.
# Increase version from Git tag unless working copy is exactly at this tag,
# in which case also get commit date of this tag.
parse_options
();
my
(
$v
,
$c
)
=
get_version_from_git
()
unless
$version
;
$v
=
next_version
(
$v
)
if
(
$v
&&
!
$c
);
$version
//
=
$v
;
$version
=~
s{^v?}{v}
;
# Make sure version starts with "v".
$date
//
=
$c
?
get_date_from_git
()
:
today
();
say
STDERR
"
Updating to version
$version
, date
$date
.
";
# Standard LaTeX date isn't ISO but uses slashes.
my
$date_l
=
"
$date
";
$date_l
=~
y{-}{/}
;
# Filter.
while
(
<>
)
{
s{(\\date\s*)\{([^{}
]*)
\}}{${1}\
{
$date
\
}}
g
;
s{(\\ProvidesPackage\s*\{([^{}
]*)
\}\s
*
)
\
[([
^\
[
\
]]
*
)
\
]
}{
$
1
\
[
$date_l
$version
\
]}
gx
;
print
;
}
# If working copy was previously in a clean state, check whether it still is.
# In which case everything is already up to date.
if
(
$c
)
{
my
(
$v
,
$d
,
$c
)
=
get_version_from_git
();
if
(
$c
)
{
say
STDERR
"
Everything already up to date.
";
exit
0
;
}
else
{
sat
STDERR
"
Bad version tag. Re-run script.
";
exit
3
;
}
}
# Say what to do now.
say
STDERR
<<EOT;
Now check that the version is correct, commit, and apply version tag:
\tgit status
\tgit commit -a
\tgit tag $version
\tgit push origin $version
EOT
exit
0
;
#
# Functions.
#
sub
parse_options
()
{
my
$usage
;
my
$date_t
;
GetOptions
('
help|h|?
'
=>
sub
{
$usage
=
1
;
die
('
!FINISH
');
},
'
version|v=s
'
=>
\
$version
,
'
date|d=s
'
=>
\
$date_t
)
or
$usage
=
1
;
if
(
$version
&&
$version
!~
m{^v?\d([\d\w.-])*$}
)
{
say
STDERR
"
Illegal version: '
$version
'
";
$usage
=
2
;
}
if
(
$date_t
)
{
$date
=
date
(
$date_t
);
if
(
!
$date
)
{
say
STDERR
"
Illegal date: '
$date_t
'
";
$usage
=
2
;
}
}
if
(
$usage
)
{
say
STDERR
"
Usage:
$FindBin
::Script [-v <version>] [-d <YYYY-MM-DD>]
";
exit
$usage
;
}
}
# Get version from Git tags.
# Returns ($version, $clean_at_tag).
sub
get_version_from_git
()
{
#
# Last tag and working copy state. Use "git describe" to get
# latest tag matching "v<number>". If the working copy is not
# at this tag, it appends -<number of commits>-g<last commit hash>;
# it it is dirty, it appends "-*". Remove these parts, but note
# that the working copy is not at the tag.
#
my
$clean_at_tag
;
my
$tag
=
`
git describe --tags --always --dirty='-*' --match 'v[0-9]*'
`;
chomp
$tag
;
if
(
$tag
=~
m{-+(\*|\d+-g[0-9a-f]+)$}
)
{
$tag
=
$`
;
}
else
{
$clean_at_tag
=
1
;
}
return
(
$tag
,
$clean_at_tag
);
}
# Get date of Git last commit (as Date::Simple object).
sub
get_date_from_git
()
{
my
$commit_date
=
`
git --no-pager log -1 --date=short --pretty=format:
\
%cd HEAD
`;
my
$d
=
date
(
$commit_date
)
or
die
("
Git returned invalid date '
$commit_date
'
");
return
$d
;
}
#
# Increase version number.
#
sub
next_version
($)
{
my
(
$v
)
=
@_
;
my
@items
=
split
(
m{\b}
,
$v
);
# Increment the last part of the version.
$items
[
-
1
]
++
;
# Make sure the version has at least 2 parts, and starts with "v".
push
@items
,
"
.
",
"
0
"
if
(
$#items
<
2
);
$v
=
join
"",
@items
;
$v
=~
s{^v?}{v}
;
return
$v
;
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment