-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathupdate-site
More file actions
executable file
·258 lines (226 loc) · 8.72 KB
/
update-site
File metadata and controls
executable file
·258 lines (226 loc) · 8.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
#! /usr/bin/perl
sub message {
my $msg = shift;
printf("###\n### %s\n###\n", $msg);
}
sub sys {
my $cmd = shift;
# print "$cmd\n";
return system($cmd);
}
sub write_release_notes_file {
my $release_number = shift;
my $infile = shift;
my $outfile = shift;
open(OUT, ">$outfile");
print OUT <<EOF
---
siteroot: ..
layout: master
menu-download: selected
title: Multigraph - Release Notes for version $release_number
---
Release Notes
=============
EOF
;
open(IN, "<$infile");
while (my $line = <IN>) {
print OUT $line;
}
close(IN);
close(OUT);
}
if (! `which git`) {
die "git is not installed on this system; update-releases requires it.\n";
}
#
# make sure js-multigraph repo in lib/js-multigraph has latest commits
#
message("updating lib/js-multigraph with the latest commits");
sys("(cd lib/js-multigraph ; git checkout master; git pull )");
#
# save copy of LICENSE.txt file from HEAD of master, just in case most
# recent release doesn't have one; we can get rid of this once we eliminate
# all releases prior to addition of LICENSE.txt file to js-multigraph
#
sys("cp lib/js-multigraph/LICENSE /tmp/LICENSE.txt");
#
# build list of release tags by running ./lib/js-multigraph/tags script
#
message("building list of release tags");
@releases = ();
open(TAGS, "(cd lib/js-multigraph ; ./tags) |");
while (chomp(my $line = <TAGS>)) {
if ( ($tag, $date) = ($line =~ m|\s*(\S+)\s+(.*)$|) ) {
$tag =~ s/^\s+//;
$tag =~ s/\s+$//;
$date =~ s/^\s+//;
$date =~ s/\s+$//;
push(@releases, { 'tag' => $tag, 'date' => $date });
}
}
close(TAGS);
#
# sort releases in reverse cronological order
#
@releases = sort { $b->{date} cmp $a->{date} } @releases;
sub write_download_js {
my $src = shift;
my $release_number = shift;
my $dst = shift;
open(OUT, ">download/$dst");
printf(OUT "/*%s*/\n", $dst);
open(IN, "<$src");
while (<IN>) { print OUT $_; }
close(IN);
printf(OUT "\n;");
printf(OUT "window.multigraph.version=\"%s\";", $release_number);
printf(OUT "window.multigraph.file=\"%s\";\n", $dst);
close(OUT);
}
#
# copy built js files, and ReleaseNotes files, for each release, from js-multigraph to downloads
#
message("copying js and ReleaseNotes files for releases from lib/js-multigraph to downloads directory");
foreach my $release (@releases) {
$release_tag = $release->{tag};
$release_date = $release->{date};
$release_number = $release_tag;
$release_number =~ s/^v//;
printf(" release $release_tag:\n");
sys("(cd lib/js-multigraph ; git checkout $release_tag) > /dev/null 2>&1");
if (-f "lib/js-multigraph/build/multigraph.js") {
printf(" lib/js-multigraph/build/multigraph.js => ./download/multigraph-${release_number}.js\n");
write_download_js("lib/js-multigraph/build/multigraph.js", ${release_number}, "multigraph-${release_number}.js");
#sys("cp lib/js-multigraph/build/multigraph.js ./download/multigraph-${release_number}.js");
} else {
printf(" WARNING: lib/js-multigraph/build/multigraph.js not found for this release\n");
}
if (-f "lib/js-multigraph/build/multigraph-min.js") {
printf(" lib/js-multigraph/build/multigraph-min.js => ./download/multigraph-min-${release_number}.js\n");
write_download_js("lib/js-multigraph/build/multigraph-min.js", ${release_number}, "multigraph-min-${release_number}.js");
#sys("cp lib/js-multigraph/build/multigraph-min.js ./download/multigraph-min-${release_number}.js");
} else {
printf(" WARNING: lib/js-multigraph/build/multigraph-min.js not found for this release\n");
}
if (-f "lib/js-multigraph/build/multigraph-nojq.js") {
printf(" lib/js-multigraph/build/multigraph-nojq.js => ./download/multigraph-nojq-${release_number}.js\n");
write_download_js("lib/js-multigraph/build/multigraph-nojq.js", ${release_number}, "multigraph-nojq-${release_number}.js");
#sys("cp lib/js-multigraph/build/multigraph-nojq.js ./download/multigraph-nojq-${release_number}.js");
}
if (-f "lib/js-multigraph/build/multigraph-nojq-min.js") {
printf(" lib/js-multigraph/build/multigraph-nojq-min.js => ./download/multigraph-nojq-min-${release_number}.js\n");
write_download_js("lib/js-multigraph/build/multigraph-nojq-min.js", ${release_number}, "multigraph-nojq-min-${release_number}.js");
#sys("cp lib/js-multigraph/build/multigraph-nojq-min.js ./download/multigraph-nojq-min-${release_number}.js");
}
if (-f "lib/js-multigraph/ReleaseNotes.md") {
printf(" lib/js-multigraph/ReleaseNotes.md => ./download/ReleaseNotes-${release_number}.md\n");
write_release_notes_file($release_number,
"lib/js-multigraph/ReleaseNotes.md",
"./download/ReleaseNotes-${release_number}.md");
} else {
printf(" WARNING: lib/js-multigraph/ReleaseNotes.md not found for this release\n");
}
}
sub file_exists {
# takes a dir, and a file (both strings), and checks to see if the given file
# exists in the dir. If it does, returns the file argument. If it does not
# exist, returns the empty string.
my $dir = shift;
my $file = shift;
if (-f "$dir/$file") { return $file; }
return "";
}
@rs = ();
foreach my $release (@releases) {
$release_tag = $release->{tag};
$release_date = $release->{date};
$release_number = $release_tag;
$release_number =~ s/^v//;
$release_notes = "ReleaseNotes-${release_number}.md";
$download_min = file_exists("download", sprintf("multigraph-min-%s.js", $release_number));
$download = file_exists("download", sprintf("multigraph-%s.js", $release_number));
$download_nojq_min = file_exists("download", sprintf("multigraph-nojq-min-%s.js", $release_number));
$download_nojq = file_exists("download", sprintf("multigraph-nojq-%s.js", $release_number));
push(@rs, sprintf('{"number":"%s","date":"%s","notes":"%s","download_min":"%s","download":"%s","download_nojq_min":"%s","download_nojq":"%s"}',
$release_number, $release_date, $release_notes,
$download_min,
$download,
$download_nojq_min,
$download_nojq,
));
}
open(OUT, ">download/releases.json");
printf(OUT "[%s]", join(",", @rs));
close(OUT);
#
# make copies of most recent release files as multigraph.js, multigraph-min.js
#
message("creating copies of $latest_release_tag files as multigraph.js, multigraph-min.js, ReleaseNotes.md");
$latest_release_date = $releases[0]->{date};
$latest_release_tag = $releases[0]->{tag};
$latest_release_number = $latest_release_tag;
$latest_release_number =~ s/^v//;
sys("cp ./download/multigraph-${latest_release_number}.js ./download/multigraph.js");
sys("cp ./download/multigraph-min-${latest_release_number}.js ./download/multigraph-min.js");
sys("cp ./download/multigraph-nojq-${latest_release_number}.js ./download/multigraph-nojq.js");
sys("cp ./download/multigraph-nojq-min-${latest_release_number}.js ./download/multigraph-nojq-min.js");
#
# leave the lib/js-multigraph repo with the latest tag checked out
#
message("registering submodule lib/js-multigraph to be positioned at $latest_release_tag");
sys("(cd lib/js-multigraph ; git checkout $latest_release_tag) > /dev/null 2>&1");
###NO: this seems to undo the above line!:
###sys("git submodule update --recursive");
#
# copy mugl files into place for examples
#
message("copying example mugl files");
sys("/bin/rm -rf examples/graphs/*");
sys("cp -r lib/js-multigraph/spec/mugl/* examples/graphs");
sys("cp lib/js-multigraph/spec/graphs/graphs.json examples/graphs");
#
# copy the mugl-schema xsd file for this release into place
#
message("copying lib/js-multigraph/mugl-schema/mugl.xsd");
sys("cp lib/js-multigraph/mugl-schema/mugl.xsd docs");
#
# copy the LICENSE.txt file for this release into place
#
message("copying LICENSE.txt file");
if (-f "/tmp/LICENSE.txt") {
open(OUT, ">docs/license.html");
print OUT <<EOF
---
title: License
other: selected
license: selected
permalink: /docs/license/
layout: master
---
<h3>License</h3>
<p>Multigraph is free software; you may use it under the terms of the MIT License:</p>
<pre><code>
EOF
;
open(IN, "</tmp/LICENSE.txt");
while (<IN>) {
print OUT $_;
}
close(IN);
print OUT <<EOF
</code>
</pre>
<p><a href="http://en.wikipedia.org/wiki/MIT_license">More information about the MIT License</a></p>
EOF
;
close(OUT);
} else {
message("WARNING: could not find license file");
}
#
# update the annotated mugl file
#
message("updating docs/annotated-mugl/index.html");
sys("./update-annotated-mugl");