X-Git-Url: https://git.proxmox.com/?p=pve-docs.git;a=blobdiff_plain;f=asciidoc-pve.in;h=b578556cda41883b12f0f47d8e1f8d4d41e03f04;hp=ab6edef67e21afe580fa097bccfd9f610ac1f687;hb=a22a4a80ad9b117e1bb78ec84ee0678bd3b38144;hpb=459308313d45bc7889792dc08c100375100e5a25 diff --git a/asciidoc-pve.in b/asciidoc-pve.in index ab6edef..b578556 100644 --- a/asciidoc-pve.in +++ b/asciidoc-pve.in @@ -61,6 +61,11 @@ sub pop_environment { } } +sub cleanup { + + # TODO: anything ? +} + sub replace_wiki_xref { my ($blockid, $text) = @_; @@ -72,11 +77,23 @@ sub replace_wiki_xref { $text = $reftext if !length($text); + die "xref: no text for '$blockid'\n" if !$text; + return "$link\[$text\]"; } +sub replace_xref { + my ($env, $blockid, $text) = @_; + + if ($env eq 'wiki') { + return replace_wiki_xref($blockid, $text); + } else { + die "implement me"; + } +} + sub prepare_adoc_file { - my ($filename, $attributes) = @_; + my ($target_env, $filename, $attributes) = @_; return if $prepared_files->{$filename}; @@ -117,13 +134,14 @@ sub prepare_adoc_file { if ($line =~ m/^include::(\S+)(\[.*\]\s*)$/) { my ($fn, $rest) = ($1, $2); print "INCLUDE: $fn\n"; - my $new_fn = prepare_adoc_file($fn, $attributes); + my $new_fn = prepare_adoc_file($target_env, $fn, $attributes); $line = "include::${new_fn}$rest\n"; } # fix xrefs - $line =~ s/xref:([^\s\[\]]+)\[([^\]]*)\]/replace_wiki_xref($1,$2)/ge; + $line =~ s/xref:([^\s\[\]]+)\[([^\]]*)\]/replace_xref(${target_env},$1,$2)/ge; + $line =~ s/<<([^\s,\[\]]+)(?:,(.*?))?>>/replace_xref(${target_env},$1,$2)/ge; print $outfh $line; } @@ -131,11 +149,11 @@ sub prepare_adoc_file { return $outfilename; } -sub compile_wiki { +sub compile_asciidoc { + my ($env) = @_; my $verbose; my $outfile; - my $target_env; GetOptions ("outfile=s" => \$outfile, "verbose" => \$verbose) or @@ -147,22 +165,22 @@ sub compile_wiki { scalar(@ARGV) == 0 or die "too many arguments...\n"; - my $env = 'wiki'; + if ($env eq 'wiki') { + } else { + die "unknown environment '$env'"; + } + my $title = $fileinfo->{titles}->{$env}->{$infile} or die "unable to get title for '$infile'\n"; - print "compile: $title\n"; my $leveloffset = 0; - if ($clicmd eq 'compile-wiki-chapter') { - $leveloffset = 0; - } elsif ($clicmd eq 'compile-wiki-section') { - $leveloffset = -1; - } + my $doctype = $fileinfo->{doctype}->{$env}->{$infile} // 0; + $leveloffset = - $doctype; my $date = `date`; chomp $date; @@ -176,6 +194,10 @@ sub compile_wiki { revnumber => $release, }; + if (!($env eq 'wiki') || ($env ne 'manvolnum')) { + $attributes->{toc} = undef; + } + my $cmd = ['asciidoc', '-s']; foreach my $key (keys %$attributes) { @@ -197,7 +219,7 @@ sub compile_wiki { push @$cmd, '--out-file', $outfile; - my $new_infile = prepare_adoc_file($infile, $attributes); + my $new_infile = prepare_adoc_file($env, $infile, $attributes); push @$cmd, $new_infile; @@ -207,13 +229,13 @@ sub compile_wiki { die "aciidoc error"; } -if ($clicmd eq 'compile-wiki-chapter' || - $clicmd eq 'compile-wiki-section') { - eval { compile_wiki(); }; +if ($clicmd eq 'compile-wiki') { + + eval { compile_asciidoc('wiki'); }; my $err = $@; - # cleanup + cleanup(); die $err if $err;