+ # local installs of cgit from source have
+ # CGIT_SCRIPT_PATH==CGIT_DATA_PATH by default,
+ # so we can usually infer the cgit_data path from cgit_bin
+ if (defined($cgit_bin) && $cgit_bin =~ m!\A(.+?)/[^/]+\z!) {
+ unshift @dirs, $1 if -d $1;
+ }
+ foreach my $d (@dirs) {
+ my $f = "$d/cgit.css";
+ next unless -f $f;
+ $cgit_data = $d;
+ last;
+ }
+ }
+ ($cgit_bin, $cgit_data);
+}
+
+sub new {
+ my ($class, $pi_cfg) = @_;
+ my ($cgit_bin, $cgit_data) = locate_cgit($pi_cfg);
+ # TODO: support gitweb and other repository viewers?
+ if (defined(my $cgitrc = $pi_cfg->{-cgitrc_unparsed})) {
+ $pi_cfg->parse_cgitrc($cgitrc, 0);
+ }