]> code.delx.au - gnu-emacs-elpa/blob - packages/notes-mode/mkconfig
Merge commit '0cda39255827f283e7578cd469ae42daad9556a2' from js2-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 'int_form' => ['form', '%Y%m'],
36 'file_form' => ['form', '%y%m%d'],
37 );
38 $defaults{'bin_dir'} = ['path', "$ENV{'NOTES_BIN_DIR'}"]
39 if defined($ENV{'NOTES_BIN_DIR'});
40
41 my($key, $value, %notes);
42 while (($key, $value) = each %defaults) {
43 $notes{$key} = $value->[1];
44 }
45
46 #
47 # open the file
48 #
49 my($notesrc) = "$home_dir/.notesrc";
50 $notesrc = $ENV{'NOTESRC'} if (defined($ENV{'NOTESRC'}));
51
52 if (open (CONFIG, "<$notesrc")) {
53 while (<CONFIG>) {
54 next if (/^\s*#/);
55 next if (/^\s*$/);
56 next if (/^\s*exec/);
57 ($key, $value) = /^\s*([^:]+):\s*(.*)$/;
58 $notes{$key} = $value;
59 die("$0: file_form cannot be changed from %y%m%d.\n")
60 if ($key eq 'file_form' && $value ne '%y%m%d');
61 };
62 close CONFIG;
63 };
64
65 #
66 # generate extra forms
67 #
68 my(%old_notes) = %notes;
69 while (($key, $value) = each %old_notes) {
70 next if ($key eq '');
71
72 # fix forms
73 if ($defaults{$key}->[0] eq 'form') {
74 my($oldkey, $oldvalue) = ($key, $value);
75 $key =~ s/_form/_glob/;
76 $value =~ s/%Y/[12][90][0-9][0-9]/g;
77 $value =~ s/%(y|m|d)/[0-9][0-9]/g;
78 $notes{$key} = $value;
79
80 my($key, $value) = ($oldkey, $oldvalue);
81 $key =~ s/_form/_regexp/;
82 $value =~ s/%Y/[12][90]([0-9][0-9])/g;
83 $value =~ s/%(y|m|d)/([0-9][0-9])/g;
84 $notes{$key} = $value;
85 };
86 };
87 $notes{'url_prefix'} = "file:///$notes{'dir'}/";
88
89 #
90 # output
91 #
92 #if ($type eq 'perl') {
93 #} else {
94 #};
95 my($comment) = ($type eq 'perl' ? '# ' : '; ');
96 print "$comment automatically generated by $0\n";
97 while (($key, $value) = each %notes) {
98 next if ($key eq '');
99
100 # normalize stuff
101 if (defined($defaults{$key}) && $defaults{$key}->[0] eq 'path') {
102 # not absolute or ~, then it's in notes_dir.
103 $value = "$notes{'dir'}/$value" if ($value !~ m@^[~/]@);
104 # fix ~
105 $value =~ s@^~/@$home_dir/@;
106 };
107
108 if ($type eq 'perl') {
109 print "\$notes{'$key'} = '$value';\n";
110 } else {
111 $key =~ s/_/-/g;
112 $value =~ s/([()])/\\\\$1/g if ($key =~ /-regexp$/);
113 print "(defvar notes-$key \"$value\")\n";
114 };
115 };
116
117 exit 0;
118