]> code.delx.au - gnu-emacs-elpa/blob - packages/notes-mode/mkconfig
First cut at cleaning up notes-mode.
[gnu-emacs-elpa] / packages / notes-mode / mkconfig
1 #!/usr/bin/perl -w
2
3 #
4 # mkconfig
5 # $Id: mkconfig,v 1.10 2003/05/23 16:26:30 johnh Exp $
6 #
7 # Copyright (C) 1996,2012 Free Software Foundation, Inc.
8 # Comments to <johnh@isi.edu>.
9 #
10 # This file is under the Gnu Public License, version 2.
11 # For details see the COPYING which accompanies this distribution.
12 #
13
14 sub usage {
15 print STDOUT <<END;
16 usage: $0 [elisp|perl]
17 END
18 exit 1;
19 }
20
21 require 5.000;
22 use strict;
23
24 &usage if ($#ARGV != 0 || $ARGV[0] eq '-?');
25
26
27 my($type) = $ARGV[0];
28 &usage if ($type ne 'elisp' && $type ne 'perl');
29
30
31 my($home_dir) = ((getpwuid($<))[7]);
32
33 my(%defaults) = (
34 'dir' => ['path', '~/NOTES'],
35 'bin_dir' => ['path', "$ENV{'NOTES_BIN_DIR'}"],
36 'int_form' => ['form', '%Y%m'],
37 'file_form' => ['form', '%y%m%d'],
38 );
39
40 my($key, $value, %notes);
41 while (($key, $value) = each %defaults) {
42 $notes{$key} = $value->[1];
43 }
44
45 #
46 # open the file
47 #
48 my($notesrc) = "$home_dir/.notesrc";
49 $notesrc = $ENV{'NOTESRC'} if (defined($ENV{'NOTESRC'}));
50
51 if (open (CONFIG, "<$notesrc")) {
52 while (<CONFIG>) {
53 next if (/^\s*#/);
54 next if (/^\s*$/);
55 next if (/^\s*exec/);
56 ($key, $value) = /^\s*([^:]+):\s*(.*)$/;
57 $notes{$key} = $value;
58 die("$0: file_form cannot be changed from %y%m%d.\n")
59 if ($key eq 'file_form' && $value ne '%y%m%d');
60 };
61 close CONFIG;
62 };
63
64 #
65 # generate extra forms
66 #
67 my(%old_notes) = %notes;
68 while (($key, $value) = each %old_notes) {
69 next if ($key eq '');
70
71 # fix forms
72 if ($defaults{$key}->[0] eq 'form') {
73 my($oldkey, $oldvalue) = ($key, $value);
74 $key =~ s/_form/_glob/;
75 $value =~ s/%Y/[12][90][0-9][0-9]/g;
76 $value =~ s/%(y|m|d)/[0-9][0-9]/g;
77 $notes{$key} = $value;
78
79 my($key, $value) = ($oldkey, $oldvalue);
80 $key =~ s/_form/_regexp/;
81 $value =~ s/%Y/[12][90]([0-9][0-9])/g;
82 $value =~ s/%(y|m|d)/([0-9][0-9])/g;
83 $notes{$key} = $value;
84 };
85 };
86 $notes{'url_prefix'} = "file:///$notes{'dir'}/";
87
88 #
89 # output
90 #
91 #if ($type eq 'perl') {
92 #} else {
93 #};
94 my($comment) = ($type eq 'perl' ? '# ' : '; ');
95 print "$comment automatically generated by $0\n";
96 while (($key, $value) = each %notes) {
97 next if ($key eq '');
98
99 # normalize stuff
100 if (defined($defaults{$key}) && $defaults{$key}->[0] eq 'path') {
101 # not absolute or ~, then it's in notes_dir.
102 $value = "$notes{'dir'}/$value" if ($value !~ m@^[~/]@);
103 # fix ~
104 $value =~ s@^~/@$home_dir/@;
105 };
106
107 if ($type eq 'perl') {
108 print "\$notes{'$key'} = '$value';\n";
109 } else {
110 $key =~ s/_/-/g;
111 $value =~ s/([()])/\\\\$1/g if ($key =~ /-regexp$/);
112 print "(defvar notes-$key \"$value\")\n";
113 };
114 };
115
116 exit 0;
117