diff options
82 files changed, 229 insertions, 481 deletions
diff --git a/.travis.yml b/.travis.yml index bad676933..2c80b3534 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,16 +25,9 @@ before_install: install: - .travis/install before_script: - - psql -c 'create database fms;' -U postgres - - psql fms postgres < db/schema.sql - - psql fms postgres < db/alert_types.sql - - psql fms postgres < db/generate_secret.sql - - > - sed -r -e "s,(FMS_DB_USER:) 'fms',\\1 'postgres'," - conf/general.yml-example > conf/general.yml - - ./bin/cron-wrapper ./bin/make_po FixMyStreet-EmptyHomes - - ./bin/cron-wrapper ./bin/make_emptyhomes_welsh_po + - ./bin/make_po FixMyStreet-EmptyHomes + - ./bin/emptyhomes/make_welsh_po - commonlib/bin/gettext-makemo FixMyStreet -script: "bin/cron-wrapper perl /usr/bin/prove -rl t" +script: "bin/run-tests t" after_script: - .travis/after_script diff --git a/Vagrantfile b/Vagrantfile index 7cebebbf9..cc6832f9a 100755 --- a/Vagrantfile +++ b/Vagrantfile @@ -38,7 +38,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| echo "****************" echo "You can now ssh into your vagrant box: vagrant ssh" echo "The website code is found in: ~/fixmystreet" - echo "You can run the dev server with: bin/cron-wrapper script/fixmystreet_app_server.pl [-d] [-r] [--fork]" + echo "You can run the dev server with: script/fixmystreet_app_server.pl [-d] [-r] [--fork]" EOS # Create a private network, which allows host-only access to the machine diff --git a/bin/comment-backfill b/bin/comment-backfill deleted file mode 100755 index e296d7756..000000000 --- a/bin/comment-backfill +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env perl - -use strict; -use warnings; -require 5.8.0; -use DateTime; - -use FixMyStreet::App; - -use Open311; -use Open311::GetServiceRequestUpdates; - -my $start_time = DateTime->now->subtract( days => 1, hours => 1 ); -my $end_time = DateTime->now; - -my $updates = Open311::GetServiceRequestUpdates->new( - start_date => $start_time, - end_date => $end_time, -); - -$updates->fetch; diff --git a/bin/cron-wrapper b/bin/cron-wrapper index 127fd8d8a..c75f0289b 100755 --- a/bin/cron-wrapper +++ b/bin/cron-wrapper @@ -1,8 +1,10 @@ #!/usr/bin/env perl BEGIN { # set all the paths to the perl code - use FindBin; - require "$FindBin::Bin/../setenv.pl"; + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; } exec { $ARGV[0] } @ARGV or die $!; diff --git a/bin/canonicalise-eha b/bin/emptyhomes/canonicalise-eha index 1030982fa..1030982fa 100755 --- a/bin/canonicalise-eha +++ b/bin/emptyhomes/canonicalise-eha diff --git a/bin/make_emptyhomes_welsh_po b/bin/emptyhomes/make_welsh_po index f4f6850d6..568ccdcde 100755 --- a/bin/make_emptyhomes_welsh_po +++ b/bin/emptyhomes/make_welsh_po @@ -1,15 +1,17 @@ -#!/usr/bin/perl -w +#!/usr/bin/env perl + use strict; +use warnings; # Given a translation of the Empty Homes version of the FixMyStreet .po file, # fix it all up to go direct from FixMyStreet -> EH translation. use POSIX; use FindBin; -use lib "$FindBin::Bin/../perllib"; +use lib "$FindBin::Bin/../../perllib"; use PoChange; -chdir("$FindBin::Bin/../locale"); +chdir("$FindBin::Bin/../../locale"); # First read in translation and match up. open(INPO, 'cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po') or die $!; @@ -51,7 +53,7 @@ mkdir("cy_GB.UTF-8/LC_MESSAGES"); open(MAINPO, 'FixMyStreet.po') or die; open(OUTPO, ">cy_GB.UTF-8/LC_MESSAGES/FixMyStreet-EmptyHomes.po") or die; -print OUTPO "# AUTOMATICALLY GENERATED by make_emptyhomes_welsh_po, do not edit\n\n"; +print OUTPO "# AUTOMATICALLY GENERATED by make_welsh_po, do not edit\n\n"; my $buffer = ""; my $start = 0; @@ -60,7 +62,7 @@ while(<MAINPO>) { s/#, fuzzy/#/; } if (m/"Last-Translator: FULL NAME/) { - $_ = '"Last-Translator: mysociety/bin/make_emptyhomes_po\\n"'."\n"; + $_ = '"Last-Translator: mysociety/bin/emptyhomes/make_welsh_po\\n"'."\n"; } if (m/"PO-Revision-Date: YEAR-MO-DA/) { my $time = POSIX::strftime("%Y-%m-%d %H:%M%z", localtime(time())); diff --git a/bin/fetch-comments b/bin/fetch-comments index a276433e4..4eb9def14 100755 --- a/bin/fetch-comments +++ b/bin/fetch-comments @@ -8,6 +8,13 @@ use strict; use warnings; require 5.8.0; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use FixMyStreet::App; use CronFns; my ($verbose, $nomail) = CronFns::options(); diff --git a/bin/fetch-comments-24hs b/bin/fetch-comments-24hs index 602383d40..27853bcc1 100755 --- a/bin/fetch-comments-24hs +++ b/bin/fetch-comments-24hs @@ -7,9 +7,17 @@ use strict; use warnings; +require 5.8.0; + +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use DateTime; use DateTime::Format::W3CDTF; -require 5.8.0; use FixMyStreet::App; use CronFns; diff --git a/bin/export-norwegian-contacts b/bin/fiksgatami/export-norwegian-contacts index 0209c6512..0209c6512 100644 --- a/bin/export-norwegian-contacts +++ b/bin/fiksgatami/export-norwegian-contacts diff --git a/bin/load-norwegian-contacts b/bin/fiksgatami/load-norwegian-contacts index b73778848..b73778848 100755 --- a/bin/load-norwegian-contacts +++ b/bin/fiksgatami/load-norwegian-contacts diff --git a/bin/canonicalise-csv b/bin/fixmystreet.com/canonicalise-csv index c0a7fc60b..c0a7fc60b 100755 --- a/bin/canonicalise-csv +++ b/bin/fixmystreet.com/canonicalise-csv diff --git a/bin/generate_council_location b/bin/fixmystreet.com/generate_council_location index c7aea8074..c7aea8074 100755 --- a/bin/generate_council_location +++ b/bin/fixmystreet.com/generate_council_location diff --git a/bin/import-categories b/bin/fixmystreet.com/import-categories index e9008b93f..e9008b93f 100755 --- a/bin/import-categories +++ b/bin/fixmystreet.com/import-categories diff --git a/bin/load-contacts b/bin/fixmystreet.com/load-contacts index b18699db1..b18699db1 100755 --- a/bin/load-contacts +++ b/bin/fixmystreet.com/load-contacts diff --git a/bin/populate_bing_cache b/bin/fixmystreet.com/populate_bing_cache index 17c8911d0..17c8911d0 100755 --- a/bin/populate_bing_cache +++ b/bin/fixmystreet.com/populate_bing_cache diff --git a/bin/rotate-photos b/bin/fixmystreet.com/rotate-photos index 7b8109d65..7b8109d65 100755 --- a/bin/rotate-photos +++ b/bin/fixmystreet.com/rotate-photos diff --git a/bin/showcouncilrates b/bin/fixmystreet.com/showcouncilrates index 1dacae597..1dacae597 100755 --- a/bin/showcouncilrates +++ b/bin/fixmystreet.com/showcouncilrates diff --git a/bin/update-areas b/bin/fixmystreet.com/update-areas index a8cc01769..a8cc01769 100755 --- a/bin/update-areas +++ b/bin/fixmystreet.com/update-areas diff --git a/bin/update-send-questionnaire b/bin/fixmystreet.com/update-send-questionnaire index 7a231b919..7a231b919 100755 --- a/bin/update-send-questionnaire +++ b/bin/fixmystreet.com/update-send-questionnaire diff --git a/bin/geocode b/bin/geocode index 254cf1578..2559f7a3c 100755 --- a/bin/geocode +++ b/bin/geocode @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl =head1 NAME @@ -6,8 +6,6 @@ geocode - commandline tool to test geocoders =head1 SYNOPSIS - $ eval `perl setenv.pl`, or call with bin/cron-wrapper - $ bin/geocode --geocoder=Bing --cobrand=bromley "Glebe Rd" # ... if your conf/general.yml supplies GEOCODER: @@ -24,6 +22,13 @@ use strict; use warnings; require 5.8.0; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use Data::Dumper; use Pod::Usage; use feature 'say'; diff --git a/bin/gettext-nget-patch b/bin/gettext-nget-patch index 5ebd8bbcb..92b687552 100755 --- a/bin/gettext-nget-patch +++ b/bin/gettext-nget-patch @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # # xgettext doesn't deal with TT files, but xgettext.pl doesn't find nget()s, sigh. # This will find the nget()s and output a .po file excerpt. diff --git a/bin/handlemail b/bin/handlemail index 8bc016241..5d4ac753c 100755 --- a/bin/handlemail +++ b/bin/handlemail @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/env perl # # handlemail: # Handle an individual incoming mail message. @@ -14,6 +14,7 @@ my $rcsid = ''; $rcsid .= '$Id: handlemail,v 1.2 2009-02-11 11:04:48 matthew Exp $'; use strict; +use warnings; require 5.8.0; # Horrible boilerplate to set up appropriate library paths. diff --git a/bin/install-as-user b/bin/install-as-user index ef97a41b3..0e1c151fb 100755 --- a/bin/install-as-user +++ b/bin/install-as-user @@ -127,15 +127,15 @@ then psql -U "$UNIX_USER" "$DB_NAME" < "$REPOSITORY"/db/alert_types.sql psql -U "$UNIX_USER" "$DB_NAME" < "$REPOSITORY"/db/generate_secret.sql else - bin/cron-wrapper update-schema --commit + bin/update-schema --commit fi echo $DONE_MSG # Generate po and mo files (these invocations taken from Kagee's script): echo "Creating locale .mo files" -bin/cron-wrapper bin/make_po FixMyStreet-EmptyHomes -bin/cron-wrapper bin/make_emptyhomes_welsh_po +bin/make_po FixMyStreet-EmptyHomes +bin/emptyhomes/make_welsh_po commonlib/bin/gettext-makemo FixMyStreet echo $DONE_MSG -bin/cron-wrapper update-all-reports +bin/update-all-reports diff --git a/bin/kasabi b/bin/kasabi deleted file mode 100755 index 456b2f4d1..000000000 --- a/bin/kasabi +++ /dev/null @@ -1,234 +0,0 @@ -#!/usr/bin/env python - -import sys -import datetime -import json -import os.path -import re -import urllib -import yaml - -import pytassium -import psycopg2 -import psycopg2.extras -from rdfchangesets import BatchChangeSet -from rdflib.namespace import XSD - -# Set up data access -config = yaml.load(open(os.path.abspath(os.path.join(os.path.dirname(__file__), '../conf/general.yml')))) -dataset = pytassium.Dataset('fixmystreet', config['KASABI_API_KEY']) -db = psycopg2.connect( "host='{host}' dbname='{name}' user='{user}' password='{password}'".format( - host=config['FMS_DB_HOST'], - name=config['FMS_DB_NAME'], - user=config['FMS_DB_USER'], - password=config['FMS_DB_PASS'] -)) -cursor = db.cursor(cursor_factory=psycopg2.extras.RealDictCursor) -report_cursor = db.cursor(cursor_factory=psycopg2.extras.RealDictCursor) - -def main(): - - # Check the status of our dataset - response, status = dataset.status() - if response.status not in range(200, 300) or status['storageMode'] == 'read-only': - # We can't import anything, so let's not bother - sys.exit() - - # Fetch reports that have changed since last update in dataset - response, data = dataset.select('select (max(?lastupdate) as ?max) where { ?report <http://data.kasabi.com/dataset/fixmystreet/def/lastUpdate> ?lastupdate }') - max_lastUpdate = data[1][0]['max'] - query = """ - SELECT id, latitude, longitude, used_map, council, - category, title, detail, (photo IS NOT NULL) as photo, - confirmed, lastupdate, whensent, state - FROM problem - WHERE state not in ('unconfirmed', 'partial') - """ - if len(sys.argv) > 1 and sys.argv[1].isdigit(): - cursor.execute("%s AND id=%%s" % query, (sys.argv[1],)) - else: - cursor.execute("%s AND lastupdate > %%s ORDER BY lastupdate" % query, (str(max_lastUpdate),)) - - for report in cursor: - changeset = FixMyStreetChangeSet(dataset) - if report['state'] == 'hidden': - # If the report has been hidden, just remove it - changeset.remove_report(report) - else: - - # Canonicalise some values - report['latitude'] = round(report['latitude'], 6) # <10cm - report['longitude'] = round(report['longitude'], 6) - report['title'] = tidy_string(report['title']) - report['detail'] = tidy_string(report['detail']) - report['confirmed'] = report['confirmed'].replace(microsecond=0).isoformat() # Don't want microseconds - report['lastupdate'] = report['lastupdate'].replace(microsecond=0).isoformat() - report['council'] = sorted(re.sub('\|.*', '', report['council'] or '').split(',')) # Remove missing councils - - # Fetch updates to note state changes - states = [ { 'state': 'confirmed', 'time': report['confirmed'] } ] - report_cursor.execute(""" - SELECT id, mark_fixed, mark_open, problem_state, confirmed - FROM comment - WHERE problem_id=%s AND state='confirmed' - ORDER BY created - """, (report['id'], )) - for update in report_cursor: - t = update['confirmed'].replace(microsecond=0).isoformat() - if update['problem_state']: - states.append( { 'state': update['problem_state'], 'time': t } ) - elif update['mark_fixed']: - states.append( { 'state': 'fixed - user', 'time': t } ) - elif update['mark_open']: - states.append( { 'state': 'confirmed', 'time': t } ) - - # Remove and then re-add the report - changeset.remove_report(report) - changeset.add_report(report, states) - changeset.apply() - -# Escape double quotes and backslashes, remove carriage returns -def tidy_string(s): - return s.replace('\r', '').replace('\\', '\\\\').replace('"', r'\"') - -class FixMyStreetChangeSet(object): - """Something that hosts either or both of a BatchChangeSet and a Turtle - string for sending to Kasabi. Changes are done by removing all triples - and then readding the report.""" - _changeset = None - data = '' - - def __init__(self, dataset): - self.dataset = dataset - - def __str__(self): - return unicode(self).encode('utf-8') - - def __unicode__(self): - g = self.changeset.getGraph() - data = g.serialize(format='xml') - return "Changeset:\n" + data + "\nNew data:\n" + self.data - - @property - def changeset(self): - if not self._changeset: - self._changeset = BatchChangeSet() - self._changeset.setChangeReason("Report updates") - self._changeset.setCreatorName("FixMyStreet") - return self._changeset - - def apply(self): - if len(self.changeset.changesets): - #response, data = self.dataset.apply_changeset(self.changeset) - # XXX Do everything the above call does, but additionally escape carriage returns to prevent 409 error - api = self.dataset.get_api('update') - g = self.changeset.getGraph() - data = g.serialize(format='xml') - data = data.replace('\r', ' ') - response, data = api.client.request(api.uri, "POST", body=data, headers={"accept" : "*/*", 'content-type':'application/vnd.talis.changeset+xml', 'X_KASABI_APIKEY':api.apikey}) - if response.status not in range(200, 300): - print 'Error:', response.status, response.reason, data - if self.data: - response, data = self.dataset.store_data(self.data, media_type='text/turtle') - if response.status not in range(200, 300): - print 'Error:', response.status, response.reason, data - - def remove_report(self, report): - uri = 'http://data.kasabi.com/dataset/fixmystreet/report/{id}'.format(**report) - response, data = self.dataset.select('select ?p ?o where {{ <{0}> ?p ?o }}'.format(uri)) - for row in data[1]: - # Need to set the datatype correctly for the lastUpdate - if str(row['p']) == 'http://data.kasabi.com/dataset/fixmystreet/def/lastUpdate': - row['o'].datatype = XSD.dateTime - # Delete the referenced statuses - if re.match('http://data.kasabi.com/dataset/fixmystreet/report/\d+/status/\d+$', unicode(row['o'])): - uri2 = unicode(row['o']) - response2, data2 = self.dataset.select('select ?p ?o where {{ <{0}> ?p ?o }}'.format(uri2)) - for row2 in data2[1]: - self.changeset.remove(uri2, row2['p'], row2['o']) - self.changeset.remove(uri, row['p'], row['o']) - - def add_report(self, report, states): - # Work out the update states - c = 0 - state_data = { 'refs': '', 'objs': '' } - for state in states: - state_data['refs'] += ' ; fixmystreet:status <http://data.kasabi.com/dataset/fixmystreet/report/{id}/status/{c}>\n'.format(id=report['id'], c=c) - obj = re.sub('[ -]', '', ' '.join(x.capitalize() for x in state['state'].split())) - if obj == 'Confirmed': obj = 'Open' - state_data['objs'] += """<http://data.kasabi.com/dataset/fixmystreet/report/{id}/status/{c}> a fixmystreet:{state}Status - ; event:time <http://reference.data.gov.uk/id/gregorian-instant/{time}> - . -""".format( id=report['id'], c=c, state=obj, time=state['time'] ) - # ; rdfs:label - c += 1 - - # Get info for the councils - council_data = { 'sentTo': '', 'areaNames': [] } - for council in report['council']: - if not council: continue - js = json.load(urllib.urlopen('http://mapit.mysociety.org/area/{0}'.format(council))) - os_id = int(js['codes']['unit_id']) + 7000000000000000 - if report['whensent']: - council_data['sentTo'] += ' ; fixmystreet:sentTo <http://data.ordnancesurvey.co.uk/id/{os_id}>\n'.format(os_id=os_id) - council_data['areaNames'].append(js['name']) - council_data.setdefault('firstCouncil', council) - council_data['areaNames'] = ' / '.join(council_data['areaNames']) - council_data.setdefault('firstCouncil', '0') - -# easting/northing - - self.data += ''' -@prefix fixmystreet: <http://data.kasabi.com/dataset/fixmystreet/def/> . -@prefix dct: <http://purl.org/dc/terms/> . -@prefix event: <http://purl.org/NET/c4dm/event.owl#> . -@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> . -@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . -@prefix skos: <http://www.w3.org/2004/02/skos/core#> . -@prefix foaf: <http://xmlns.com/foaf/0.1/> . -@prefix georss: <http://www.georss.org/georss/> . -@prefix owl: <http://www.w3.org/2002/07/owl#> . - -<http://data.kasabi.com/dataset/fixmystreet/report/{id}> a fixmystreet:Report - ; fixmystreet:location <http://data.kasabi.com/dataset/fixmystreet/location/geo/point/{latitude}/{longitude}> - ; dct:description """{detail}""" - ; dct:title "{title}" -{photo_url} -{state_data[refs]} -{council_data[sentTo]} - ; fixmystreet:category <http://data.kasabi.com/dataset/fixmystreet/category/{council_data[firstCouncil]}/{category_uri}> - ; fixmystreet:lastUpdate "{lastupdate}"^^xsd:dateTime - ; foaf:page <http://www.fixmystreet.com/report/{id}> - . - -<http://data.kasabi.com/dataset/fixmystreet/location/geo/point/{latitude}/{longitude}> a fixmystreet:Location - ; geo:lat "{latitude}" - ; geo:long "{longitude}" - ; georss:point "{latitude} {longitude}" - . - -<http://data.kasabi.com/dataset/fixmystreet/location/geo/point/{latitude}/{longitude}> - owl:sameAs <http://rdfize.com/geo/point/{latitude}/{longitude}> - . -{state_data[objs]} -<http://data.kasabi.com/dataset/fixmystreet/category/{council_data[firstCouncil]}/{category_uri}> a skos:Concept - ; skos:prefLabel "{category}" - ; skos:altLabel "{category} in {council_data[areaNames]}" - . - '''.format( - photo_url = ' ; foaf:depiction <http://www.fixmystreet.com/photo/{id}.jpeg>'.format(**report) if report['photo'] else '', - state_data = state_data, - council_data = council_data, - category_uri = report['category'].lower().replace(' ', '-'), - **report - ) - -# ; skos:broader <http://data.kasabi.com/dataset/fixmystreet/category/street-lights> - -# this category is the broadest highlevel street light category -#<http://data.kasabi.com/dataset/fixmystreet/category/street-lights> a skos:Concept -# ; skos:prefLabel "Street lights" -# . - -main() - diff --git a/bin/make_css b/bin/make_css index a8afafb27..3a1fca1a7 100755 --- a/bin/make_css +++ b/bin/make_css @@ -11,13 +11,14 @@ COMPASS=compass SASS=sass -PARENT=$(cd `dirname $0`/../.. && pwd) +DIR=$(cd "$(dirname "$0")" && pwd -P) +PARENT=$(cd "$DIR"/../.. && pwd) if [ -f "$PARENT/gem-bin/compass" ]; then COMPASS=$PARENT/gem-bin/compass SASS=$PARENT/gem-bin/sass fi -DIRECTORY=$(cd `dirname $0`/../web && pwd) +DIRECTORY=$(cd "$DIR"/../web && pwd) DIRS=${@:-`find $DIRECTORY -name "*.scss" -exec dirname {} \; | uniq`} diff --git a/bin/make_css_watch b/bin/make_css_watch index 63a27a35e..2ae287429 100755 --- a/bin/make_css_watch +++ b/bin/make_css_watch @@ -1,7 +1,16 @@ #!/usr/bin/env perl + use strict; use warnings; use feature 'say'; + +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use Cwd qw(abs_path); use File::ChangeNotify; use File::Find::Rule; diff --git a/bin/make_po b/bin/make_po index ad1fc1a89..a5b145ecb 100755 --- a/bin/make_po +++ b/bin/make_po @@ -1,5 +1,7 @@ -#!/usr/bin/perl -w +#!/usr/bin/env perl + use strict; +use warnings; # Generates a version of .po file, which is a translation # into a language the same as English, with replacement as specified in PoChange diff --git a/bin/open311-populate-service-list b/bin/open311-populate-service-list index be1ace3b9..11f9005a5 100755 --- a/bin/open311-populate-service-list +++ b/bin/open311-populate-service-list @@ -2,6 +2,14 @@ use strict; use warnings; + +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use FixMyStreet::App; use Open311::PopulateServiceList; use Getopt::Long::Descriptive; diff --git a/bin/open311-update-reports b/bin/open311-update-reports index 3b77fef89..6a1c894d7 100755 --- a/bin/open311-update-reports +++ b/bin/open311-update-reports @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # # This script utilises the standard Open311 way of getting updates on reports # (by fetching all reports for a body and looking for updates). If possible, @@ -8,6 +8,14 @@ use strict; use warnings; + +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use Open311::GetUpdates; use FixMyStreet::App; diff --git a/bin/problem-creation-graph b/bin/problem-creation-graph index e1b6f2cc4..c3d10f934 100755 --- a/bin/problem-creation-graph +++ b/bin/problem-creation-graph @@ -10,13 +10,18 @@ use strict; use warnings; require 5.8.0; -use FindBin; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + chdir "$d/.."; + require "$d/../setenv.pl"; +} + use File::Temp qw(tempfile); use FixMyStreet::App; -chdir("$FindBin::Bin/../"); - my %config = ( gplot_output => "set terminal png font 'Vera.ttf' 9 size 1200,400", extension => '.png', diff --git a/bin/problems-filed-graph b/bin/problems-filed-graph index d3e132f8e..abfe0cf1a 100755 --- a/bin/problems-filed-graph +++ b/bin/problems-filed-graph @@ -10,13 +10,18 @@ use strict; use warnings; require 5.8.0; -use FindBin; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + chdir "$d/.."; + require "$d/../setenv.pl"; +} + use File::Temp qw(tempfile); use FixMyStreet::App; -chdir("$FindBin::Bin/../"); - my %config = ( gplot_output => "set terminal png font 'Vera.ttf' 9 size 1200,600", extension => '.png', diff --git a/bin/run-tests b/bin/run-tests new file mode 100755 index 000000000..612a13628 --- /dev/null +++ b/bin/run-tests @@ -0,0 +1,37 @@ +#!/usr/bin/env perl +use strict; use warnings; + +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + +use FixMyStreet::TestAppProve; + +=head1 NAME + +bin/run-tests - spin up a clean database and configuration for tests + +=head1 USAGE + + bin/run-tests t/ # runs prove -r t/ (recursively, saving state) + bin/run-tests --state=failed # runs just failing tests + # delete .prove to reset + + bin/run-tests t/foo.t # runs with prove -v (single test) + +By default we use conf/general.yml-example as the template, and spin up a fresh +Postgres cluster and database. We can override this by doing: + + bin/run-tests --config=general.mycobrand.yml + bin/run-tests --db-config=general.yml # e.g. use your current DB settings + bin/run-tests --all-config=general.yml # e.g. use your current DB settings + +(NB: passing --state=save automagically is experimental, and will be removed if +it turns out to be annoying.) + +=cut + +FixMyStreet::TestAppProve->run(@ARGV); diff --git a/bin/send-alerts b/bin/send-alerts index 00c5426bc..94f7d5509 100755 --- a/bin/send-alerts +++ b/bin/send-alerts @@ -10,6 +10,13 @@ use strict; use warnings; require 5.8.0; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use CGI; # XXX use CronFns; diff --git a/bin/send-comments b/bin/send-comments index 2192f674c..2d6b525b5 100755 --- a/bin/send-comments +++ b/bin/send-comments @@ -13,6 +13,13 @@ use strict; use warnings; require 5.8.0; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use Digest::MD5; use Encode; use CronFns; diff --git a/bin/send-questionnaires b/bin/send-questionnaires index 7ed3c87c2..93d58ed77 100755 --- a/bin/send-questionnaires +++ b/bin/send-questionnaires @@ -10,6 +10,13 @@ use strict; use warnings; require 5.8.0; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use CGI; # XXX Awkward kludge use Encode; use CronFns; diff --git a/bin/send-reports b/bin/send-reports index 16296dc5b..3c6f26cdb 100755 --- a/bin/send-reports +++ b/bin/send-reports @@ -10,6 +10,13 @@ use strict; use warnings; require 5.8.0; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use CGI; # XXX use CronFns; diff --git a/bin/site-specific-install.sh b/bin/site-specific-install.sh index 3d01be469..de75d45ae 100644 --- a/bin/site-specific-install.sh +++ b/bin/site-specific-install.sh @@ -66,4 +66,4 @@ fi echo Installation complete - you should now be able to view the site at: echo http://$HOST/ echo Or you can run the tests by switching to the "'$UNIX_USER'" user and -echo running: $REPOSITORY/bin/cron-wrapper prove -r t +echo running: $REPOSITORY/bin/run-tests t diff --git a/bin/test-wrapper b/bin/test-wrapper deleted file mode 100755 index 9cb1791a1..000000000 --- a/bin/test-wrapper +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env perl -use strict; use warnings; - -BEGIN { - use FindBin; - require "$FindBin::Bin/../setenv.pl"; -} - -use FixMyStreet::TestAppProve; - -=head1 NAME - -bin/test-wrapper - spin up a clean database and configuration for tests - -=head1 USAGE - - bin/test-wrapper t/ # runs prove -r t/ (recursively, saving state) - bin/test-wrapper --state=failed # runs just failing tests - # delete .prove to reset - - bin/test-wrapper t/foo.t # runs with prove -v (single test) - -By default we use conf/general.yml-example as the template, and spin up a fresh -Postgres cluster and database. We can override this by doing: - - bin/test-wrapper --config=general.mycobrand.yml - bin/test-wrapper --db-config=general.yml # e.g. use your current DB settings - bin/test-wrapper --all-config=general.yml # e.g. use your current DB settings - -(NB: passing --state=save automagically is experimental, and will be removed if -it turns out to be annoying.) - -=cut - -FixMyStreet::TestAppProve->run(@ARGV); diff --git a/bin/update-all-reports b/bin/update-all-reports index f4d6113cb..f6cd34210 100755 --- a/bin/update-all-reports +++ b/bin/update-all-reports @@ -10,6 +10,13 @@ use strict; use warnings; require 5.8.0; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use FixMyStreet::App; use File::Path (); use File::Slurp; diff --git a/bin/update-schema b/bin/update-schema index 30fc1396b..ce193f29c 100755 --- a/bin/update-schema +++ b/bin/update-schema @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl =head1 NAME @@ -31,9 +31,13 @@ backup of your database before running. use strict; use warnings; -# Horrible boilerplate to set up appropriate library paths. -use FindBin; -use lib "$FindBin::Bin/../commonlib/perllib"; +my $bin_dir; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + $bin_dir = dirname(File::Spec->rel2abs($0)); + require "$bin_dir/../setenv.pl"; +} use mySociety::Config; use mySociety::DBHandle qw(dbh); @@ -41,7 +45,7 @@ use mySociety::MaPit; use Getopt::Long; use Pod::Usage; -mySociety::Config::set_file("$FindBin::Bin/../conf/general"); +mySociety::Config::set_file("$bin_dir/../conf/general"); my %args = ( Name => mySociety::Config::get('FMS_DB_NAME'), User => mySociety::Config::get('FMS_DB_USER'), @@ -115,7 +119,7 @@ if ($upgrade) { if ($version) { die "Not currently implemented"; } - for my $path (glob("$FindBin::Bin/../db/schema_*")) { + for my $path (glob("$bin_dir/../db/schema_*")) { my ($name) = $path =~ /schema_(.*)\.sql$/; next if $name le $current_version; next if $name =~ /$current_version-/; # For number only match @@ -146,7 +150,7 @@ if ($upgrade) { if ($downgrade) { my %downgrades; - for my $path (glob("$FindBin::Bin/../db/downgrade_*")) { + for my $path (glob("$bin_dir/../db/downgrade_*")) { my ($from, $to) = $path =~ /downgrade_(.*)---(.*)\.sql$/; next unless $from eq $current_version; $downgrades{$to} = $path; diff --git a/bin/zerotb_import_clinic_list.pl b/bin/zerotb/import_clinic_list.pl index 359a63925..359a63925 100755 --- a/bin/zerotb_import_clinic_list.pl +++ b/bin/zerotb/import_clinic_list.pl diff --git a/bin/zurich/geocode b/bin/zurich/geocode deleted file mode 100755 index 9482b27e6..000000000 --- a/bin/zurich/geocode +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/perl - -=head1 NAME - -zurich/geocode - commandline tool to test the Zurich geocoder - -=head1 SYNOPSIS - - # Firstly: - ## copy the GEOCODER config from a current Zurich conf to your conf/general.yml - $ eval `perl setenv.pl` - - $ bin/zurich/geocode Magnus - - # ... output from geocoder - -This can be used to test the results of, e.g. - - https://www.zueriwieneu.ch/ajax/geocode?term=Magnus - -but without the caching which FixMyStreet applies, and passing on any 500 -errors from the server. - -=cut - -use strict; -use warnings; -require 5.8.0; - - -use Data::Dumper; -use feature 'say'; - -use FixMyStreet; -use FixMyStreet::App; -use FixMyStreet::Geocode::Zurich; - -# TODO use FixMyStreet::override_config to get data from conf/general.yml.zurich if available -my $geocoder = FixMyStreet->config('GEOCODER') - or die "No GEOCODER config -- please copy appropriate Zurich conf to conf/general.yml"; - -my $c = FixMyStreet::App->new(); -my $s = join ' ', @ARGV; - -say Dumper( FixMyStreet::Geocode::Zurich::string( $s, $c ) ); diff --git a/bin/zurich-overdue-alert b/bin/zurich/overdue-alert index c09aef1e2..4a8fea830 100755 --- a/bin/zurich-overdue-alert +++ b/bin/zurich/overdue-alert @@ -1,6 +1,6 @@ #!/usr/bin/env perl -# zurich-overdue-alert: +# zurich/overdue-alert: # Send email alerts to administrators for overdue admin activities. # # Copyright (c) 2012 UK Citizens Online Democracy. All rights reserved. @@ -10,6 +10,13 @@ use strict; use warnings; require 5.8.0; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use DateTime; use CronFns; use FixMyStreet::App; diff --git a/conf/crontab-example b/conf/crontab-example index a29a0de53..68197d7b1 100644 --- a/conf/crontab-example +++ b/conf/crontab-example @@ -11,24 +11,24 @@ PATH=/usr/local/bin:/usr/bin:/bin # send-reports has three rows so that its 8am entry can be run with --verbose to send a morning summary of anything that's gone wrong -5,10,15,20,25,30,35,40,45,50,55 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$FMS/send-reports.lock" "$FMS/bin/cron-wrapper send-reports" || echo "stalled?" -0 0-7,9-23 * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-reports.lock" "$FMS/bin/cron-wrapper send-reports" || echo "stalled?" -0 8 * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-reports.lock" "$FMS/bin/cron-wrapper send-reports --verbose" || echo "stalled?" +5,10,15,20,25,30,35,40,45,50,55 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$FMS/send-reports.lock" "$FMS/bin/send-reports" || echo "stalled?" +0 0-7,9-23 * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-reports.lock" "$FMS/bin/send-reports" || echo "stalled?" +0 8 * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-reports.lock" "$FMS/bin/send-reports --verbose" || echo "stalled?" -2 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-alerts.lock" "$FMS/bin/cron-wrapper send-alerts" || echo "stalled?" -22,52 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-questionnaires.lock" "$FMS/bin/cron-wrapper send-questionnaires" || echo "stalled?" +2 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-alerts.lock" "$FMS/bin/send-alerts" || echo "stalled?" +22,52 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-questionnaires.lock" "$FMS/bin/send-questionnaires" || echo "stalled?" # If you utilise Open311 and the updates extension, you will need to run these scripts -#*/5 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-comments.lock" "$FMS/bin/cron-wrapper send-comments" || echo "stalled?" -#*/5 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/fetch-comments.lock" "$FMS/bin/cron-wrapper fetch-comments" || echo "stalled?" +#*/5 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/send-comments.lock" "$FMS/bin/send-comments" || echo "stalled?" +#*/5 * * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/fetch-comments.lock" "$FMS/bin/fetch-comments" || echo "stalled?" -47 0-7,9-23 * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/open311-populate-service-list.lock" "$FMS/bin/cron-wrapper open311-populate-service-list" || echo "stalled?" -47 8 * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/open311-populate-service-list.lock" "$FMS/bin/cron-wrapper open311-populate-service-list --warn" || echo "stalled?" +47 0-7,9-23 * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/open311-populate-service-list.lock" "$FMS/bin/open311-populate-service-list" || echo "stalled?" +47 8 * * * "$FMS/commonlib/bin/run-with-lockfile.sh" -n "$LOCK_DIR/open311-populate-service-list.lock" "$FMS/bin/open311-populate-service-list --warn" || echo "stalled?" # Once an hour, update the all reports stats -13 * * * * "$FMS/bin/cron-wrapper" update-all-reports +13 * * * * "$FMS/bin/update-all-reports" # Once a day on all servers -39 2 * * * "$FMS/bin/cron-wrapper" problems-filed-graph -43 2 * * * "$FMS/bin/cron-wrapper" problem-creation-graph +39 2 * * * "$FMS/bin/problems-filed-graph" +43 2 * * * "$FMS/bin/problem-creation-graph" 00 8 * * * "$FMS/bin/check-for-zombies" $UNIX_USER diff --git a/conf/sysvinit.example b/conf/sysvinit.example index 44424281b..9ad97e6ab 100755 --- a/conf/sysvinit.example +++ b/conf/sysvinit.example @@ -24,7 +24,7 @@ test -f $DAEMON || exit 0 set -e start_daemon() { - su -l -c "cd $SITE_HOME/fixmystreet && bin/cron-wrapper web/fixmystreet_app_fastcgi.cgi -d -l :9000 -n 2" $USER + su -l -c "cd $SITE_HOME/fixmystreet && web/fixmystreet_app_fastcgi.cgi -d -l :9000 -n 2" $USER } stop_daemon() { @@ -110,7 +110,7 @@ requires 'File::ChangeNotify'; requires 'Path::Tiny'; requires 'File::Find::Rule'; -feature 'test-wrapper', 'Spin up a test database and config to run tests' => sub { +feature 'run-tests', 'Spin up a test database and config to run tests' => sub { requires 'Test::PostgreSQL'; }; diff --git a/data/kasabi-requirements.txt b/data/kasabi-requirements.txt deleted file mode 100644 index 9b4397f00..000000000 --- a/data/kasabi-requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -psycopg2 -pytassium diff --git a/perllib/CronFns.pm b/perllib/CronFns.pm index ac7f85596..545526c8e 100755 --- a/perllib/CronFns.pm +++ b/perllib/CronFns.pm @@ -1,23 +1,14 @@ -#!/usr/bin/perl -w - # CronFns.pm: # Shared functions for cron-run scripts # # Copyright (c) 2009 UK Citizens Online Democracy. All rights reserved. # Email: matthew@mysociety.org. WWW: http://www.mysociety.org -# -# $Id: CronFns.pm,v 1.1 2009-07-10 15:17:29 matthew Exp $ package CronFns; use strict; require 5.8.0; -# Horrible boilerplate to set up appropriate library paths. -use FindBin; -use lib "$FindBin::Bin/../perllib"; -use lib "$FindBin::Bin/../commonlib/perllib"; - use mySociety::Locale; sub options { diff --git a/perllib/CrossSell.pm b/perllib/CrossSell.pm index 0c621e9d0..9567c2b38 100644 --- a/perllib/CrossSell.pm +++ b/perllib/CrossSell.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -w -# # CrossSell.pm: # Adverts from FixMyStreet to another site. # diff --git a/perllib/FixMyStreet/App/Controller/Reports.pm b/perllib/FixMyStreet/App/Controller/Reports.pm index 10ef30c90..352c47da8 100644 --- a/perllib/FixMyStreet/App/Controller/Reports.pm +++ b/perllib/FixMyStreet/App/Controller/Reports.pm @@ -74,7 +74,7 @@ sub index : Path : Args(0) { if ($@) { $c->stash->{message} = _("There was a problem showing the All Reports page. Please try again later."); if ($c->config->{STAGING_SITE}) { - $c->stash->{message} .= '</p><p>Perhaps the bin/update-all-reports script needs running. Use: bin/cron-wrapper bin/update-all-reports</p><p>' + $c->stash->{message} .= '</p><p>Perhaps the bin/update-all-reports script needs running. Use: bin/update-all-reports</p><p>' . sprintf(_('The error was: %s'), $@); } $c->stash->{template} = 'errors/generic.html'; diff --git a/perllib/FixMyStreet/DB/Result/Token.pm b/perllib/FixMyStreet/DB/Result/Token.pm index 5525fe7a5..0156af137 100644 --- a/perllib/FixMyStreet/DB/Result/Token.pm +++ b/perllib/FixMyStreet/DB/Result/Token.pm @@ -30,9 +30,6 @@ __PACKAGE__->set_primary_key("scope", "token"); # Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-03-08 17:19:55 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:+LLZ8P5GXqPetuGyrra2vw -# Trying not to use this -# use mySociety::DBHandle qw(dbh); - use mySociety::AuthToken; =head1 NAME @@ -43,8 +40,6 @@ FixMyStreet::DB::Result::Token Representation of mySociety::AuthToken in the DBIx::Class world. -Mostly done so that we don't need to use mySociety::DBHandle. - The 'data' value is automatically inflated and deflated in the same way that the AuthToken would do it. 'token' is set to a new random value by default and the 'created' timestamp is achieved using the database function diff --git a/perllib/FixMyStreet/Geocode.pm b/perllib/FixMyStreet/Geocode.pm index 2a318ea5a..b5be152a8 100644 --- a/perllib/FixMyStreet/Geocode.pm +++ b/perllib/FixMyStreet/Geocode.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet::Geocode # The geocoding functions for FixMyStreet. # diff --git a/perllib/FixMyStreet/Geocode/Bing.pm b/perllib/FixMyStreet/Geocode/Bing.pm index 85eef3d0f..702e19814 100644 --- a/perllib/FixMyStreet/Geocode/Bing.pm +++ b/perllib/FixMyStreet/Geocode/Bing.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet::Geocode::Bing # Geocoding with Bing for FixMyStreet. # diff --git a/perllib/FixMyStreet/Geocode/FixaMinGata.pm b/perllib/FixMyStreet/Geocode/FixaMinGata.pm index 2db25f504..2ea92c422 100644 --- a/perllib/FixMyStreet/Geocode/FixaMinGata.pm +++ b/perllib/FixMyStreet/Geocode/FixaMinGata.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Geocode::FixaMinGata # OpenStreetmap forward and reverse geocoding for FixMyStreet. # diff --git a/perllib/FixMyStreet/Geocode/Google.pm b/perllib/FixMyStreet/Geocode/Google.pm index fd65b89b1..11ff8ef80 100644 --- a/perllib/FixMyStreet/Geocode/Google.pm +++ b/perllib/FixMyStreet/Geocode/Google.pm @@ -1,6 +1,4 @@ -#!/usr/bin/perl -# -# FixMyStreet::Geocode +# FixMyStreet::Geocode::Google # The geocoding functions for FixMyStreet. # # Copyright (c) 2010 UK Citizens Online Democracy. All rights reserved. diff --git a/perllib/FixMyStreet/Geocode/OSM.pm b/perllib/FixMyStreet/Geocode/OSM.pm index fd14b0acc..919940f78 100644 --- a/perllib/FixMyStreet/Geocode/OSM.pm +++ b/perllib/FixMyStreet/Geocode/OSM.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Geocode::OSM # OpenStreetmap forward and reverse geocoding for FixMyStreet. # diff --git a/perllib/FixMyStreet/Geocode/Zurich.pm b/perllib/FixMyStreet/Geocode/Zurich.pm index 84fd83fc7..1f0b4fc16 100644 --- a/perllib/FixMyStreet/Geocode/Zurich.pm +++ b/perllib/FixMyStreet/Geocode/Zurich.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet::Geocode::Zurich # Geocoding with Zurich web service. # diff --git a/perllib/FixMyStreet/Map.pm b/perllib/FixMyStreet/Map.pm index f2dd0da6d..7d490fde3 100644 --- a/perllib/FixMyStreet/Map.pm +++ b/perllib/FixMyStreet/Map.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map # Adding the ability to have different maps on FixMyStreet. # diff --git a/perllib/FixMyStreet/Map/Bing.pm b/perllib/FixMyStreet/Map/Bing.pm index 676e70bf6..09c951a5f 100644 --- a/perllib/FixMyStreet/Map/Bing.pm +++ b/perllib/FixMyStreet/Map/Bing.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::Bing # Bing maps on FixMyStreet. # diff --git a/perllib/FixMyStreet/Map/Bromley.pm b/perllib/FixMyStreet/Map/Bromley.pm index 20821236f..fc8726b34 100644 --- a/perllib/FixMyStreet/Map/Bromley.pm +++ b/perllib/FixMyStreet/Map/Bromley.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::Bromley # Bromley have slightly different tiles, with trees etc. # diff --git a/perllib/FixMyStreet/Map/FMS.pm b/perllib/FixMyStreet/Map/FMS.pm index 62849a157..96e265a4d 100644 --- a/perllib/FixMyStreet/Map/FMS.pm +++ b/perllib/FixMyStreet/Map/FMS.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::FMS # Bing and OS StreetView maps on FixMyStreet, using OpenLayers. # diff --git a/perllib/FixMyStreet/Map/Google.pm b/perllib/FixMyStreet/Map/Google.pm index 9deefc033..172d2d60e 100644 --- a/perllib/FixMyStreet/Map/Google.pm +++ b/perllib/FixMyStreet/Map/Google.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::Google # Google maps on FixMyStreet. # diff --git a/perllib/FixMyStreet/Map/GoogleOL.pm b/perllib/FixMyStreet/Map/GoogleOL.pm index 64baf8d36..2dfb697e5 100644 --- a/perllib/FixMyStreet/Map/GoogleOL.pm +++ b/perllib/FixMyStreet/Map/GoogleOL.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::GoogleOL # Google maps on FixMyStreet, using OpenLayers. # diff --git a/perllib/FixMyStreet/Map/OSM.pm b/perllib/FixMyStreet/Map/OSM.pm index 82ddd293b..df2d16b82 100644 --- a/perllib/FixMyStreet/Map/OSM.pm +++ b/perllib/FixMyStreet/Map/OSM.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::OSM # OSM maps on FixMyStreet. # diff --git a/perllib/FixMyStreet/Map/OSM/CycleMap.pm b/perllib/FixMyStreet/Map/OSM/CycleMap.pm index 71b86de8f..8f1de39d2 100644 --- a/perllib/FixMyStreet/Map/OSM/CycleMap.pm +++ b/perllib/FixMyStreet/Map/OSM/CycleMap.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::OSM::CycleMap # OSM CycleMap maps on FixMyStreet. # diff --git a/perllib/FixMyStreet/Map/OSM/MapQuest.pm b/perllib/FixMyStreet/Map/OSM/MapQuest.pm index a7f1b334e..2c3cbaf00 100644 --- a/perllib/FixMyStreet/Map/OSM/MapQuest.pm +++ b/perllib/FixMyStreet/Map/OSM/MapQuest.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::OSM::CycleMap # OSM CycleMap maps on FixMyStreet. # diff --git a/perllib/FixMyStreet/Map/OSM/StreetView.pm b/perllib/FixMyStreet/Map/OSM/StreetView.pm index 8fe4744a4..c70dd93aa 100644 --- a/perllib/FixMyStreet/Map/OSM/StreetView.pm +++ b/perllib/FixMyStreet/Map/OSM/StreetView.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::OSM::StreetView # OSM StreetView maps on FixMyStreet. # diff --git a/perllib/FixMyStreet/Map/Zurich.pm b/perllib/FixMyStreet/Map/Zurich.pm index e09f8c90f..d667a4701 100644 --- a/perllib/FixMyStreet/Map/Zurich.pm +++ b/perllib/FixMyStreet/Map/Zurich.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # FixMyStreet:Map::Zurich # Zurich have their own tileserver. # diff --git a/perllib/FixMyStreet/SendReport/London.pm b/perllib/FixMyStreet/SendReport/London.pm index 2c48a091c..2a1ebc1c3 100644 --- a/perllib/FixMyStreet/SendReport/London.pm +++ b/perllib/FixMyStreet/SendReport/London.pm @@ -5,6 +5,7 @@ use Moose; BEGIN { extends 'FixMyStreet::SendReport'; } use Digest::MD5; +use FindBin; use LWP::UserAgent; use LWP::Simple; diff --git a/perllib/FixMyStreet/TestAppProve.pm b/perllib/FixMyStreet/TestAppProve.pm index 4d8cdaccb..75e9fe0a4 100644 --- a/perllib/FixMyStreet/TestAppProve.pm +++ b/perllib/FixMyStreet/TestAppProve.pm @@ -14,7 +14,7 @@ FixMyStreet::TestAppProve - spin up a clean database and configuration for tests =head1 USAGE -see bin/test-wrapper for usage +see bin/run-tests for usage =cut diff --git a/perllib/Geo/Coordinates/CH1903.pm b/perllib/Geo/Coordinates/CH1903.pm index 612182152..6611af9f2 100644 --- a/perllib/Geo/Coordinates/CH1903.pm +++ b/perllib/Geo/Coordinates/CH1903.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # Geo::Coordinates::CH1903 # Conversion between WGS84 and Swiss CH1903. # diff --git a/perllib/PoChange.pm b/perllib/PoChange.pm index f26161889..1e00c1426 100644 --- a/perllib/PoChange.pm +++ b/perllib/PoChange.pm @@ -1,4 +1,3 @@ -#!/usr/bin/perl -w use strict; package PoChange; diff --git a/perllib/Utils.pm b/perllib/Utils.pm index 8f0ac1820..7f95d1f5a 100644 --- a/perllib/Utils.pm +++ b/perllib/Utils.pm @@ -1,5 +1,3 @@ -#!/usr/bin/perl -# # Utils.pm: # Various generic utilities for FixMyStreet. # @@ -15,7 +13,6 @@ use strict; use DateTime; use Encode; use File::Slurp qw(); -use mySociety::DBHandle qw(dbh); use mySociety::GeoUtil; use mySociety::Locale; diff --git a/script/fixmystreet_app_create.pl b/script/fixmystreet_app_create.pl index c0ec0c898..f43c4ab82 100755 --- a/script/fixmystreet_app_create.pl +++ b/script/fixmystreet_app_create.pl @@ -3,6 +3,13 @@ use strict; use warnings; +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use Catalyst::ScriptRunner; Catalyst::ScriptRunner->run('FixMyStreet::App', 'Create'); diff --git a/script/fixmystreet_app_server.pl b/script/fixmystreet_app_server.pl index 3778cf27d..aeb57f0d2 100755 --- a/script/fixmystreet_app_server.pl +++ b/script/fixmystreet_app_server.pl @@ -2,6 +2,10 @@ BEGIN { $ENV{CATALYST_SCRIPT_GEN} = 40; + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; } use Catalyst::ScriptRunner; diff --git a/script/fixmystreet_app_test.pl b/script/fixmystreet_app_test.pl index 4eefd06a4..6f2770730 100755 --- a/script/fixmystreet_app_test.pl +++ b/script/fixmystreet_app_test.pl @@ -1,5 +1,12 @@ #!/usr/bin/env perl +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + my $d = dirname(File::Spec->rel2abs($0)); + require "$d/../setenv.pl"; +} + use Catalyst::ScriptRunner; Catalyst::ScriptRunner->run('FixMyStreet::App', 'Test'); @@ -5,19 +5,18 @@ use warnings; my $root; -BEGIN { # add the local perllibs too - - # Can't use Path::Class here as we'd load the old debian one. - $root = __FILE__ =~ m{^(.*)/(web|bin)/\.\..*$} ? $1 : `pwd`; - chomp($root); +BEGIN { + use File::Basename qw(dirname); + use File::Spec; + $root = dirname(File::Spec->rel2abs(__FILE__)); } # Set the environment for the FixMyStreet project -# Add the lib/perl5 in perl-external so that we can load local::lib from there +# Add the lib/perl5 in local so that we can load local::lib from there use lib "$root/local/lib/perl5"; -# Add the perl-external dirs properly using local::lib +# Now add the local dir properly using local::lib use local::lib "$root/local"; use lib "$root/commonlib/perllib"; diff --git a/t/app/controller/reports.t b/t/app/controller/reports.t index 1b4fc3526..ecb43f447 100644 --- a/t/app/controller/reports.t +++ b/t/app/controller/reports.t @@ -85,7 +85,7 @@ $fife_problems[10]->update( { }); # Run the cron script that makes the data for /reports so we don't get an error. -system( "bin/cron-wrapper update-all-reports" ); +system( "bin/update-all-reports" ); # check that we can get the page $mech->get_ok('/reports'); diff --git a/t/open311.t b/t/open311.t index 0caacbffc..15bebe2fc 100644 --- a/t/open311.t +++ b/t/open311.t @@ -11,10 +11,6 @@ use HTTP::Response; use DateTime; use DateTime::Format::W3CDTF; -use FindBin; -use lib "$FindBin::Bin/../perllib"; -use lib "$FindBin::Bin/../commonlib/perllib"; - use_ok( 'Open311' ); my $o = Open311->new(); diff --git a/t/open311/getservicerequestupdates.t b/t/open311/getservicerequestupdates.t index 00c25a83e..dac10d69b 100644 --- a/t/open311/getservicerequestupdates.t +++ b/t/open311/getservicerequestupdates.t @@ -5,10 +5,6 @@ use warnings; use Test::More; use CGI::Simple; -use FindBin; -use lib "$FindBin::Bin/../perllib"; -use lib "$FindBin::Bin/../commonlib/perllib"; - use_ok( 'Open311' ); use_ok( 'Open311::GetServiceRequestUpdates' ); diff --git a/t/open311/populate-service-list.t b/t/open311/populate-service-list.t index d9d65945b..b343b206d 100644 --- a/t/open311/populate-service-list.t +++ b/t/open311/populate-service-list.t @@ -6,10 +6,6 @@ use Test::More; use FixMyStreet::App; -use FindBin; -use lib "$FindBin::Bin/../perllib"; -use lib "$FindBin::Bin/../commonlib/perllib"; - use_ok( 'Open311::PopulateServiceList' ); use_ok( 'Open311' ); @@ -4,10 +4,6 @@ use strict; use warnings; use Test::More; -use FindBin; -use lib "$FindBin::Bin/../perllib"; -use lib "$FindBin::Bin/../commonlib/perllib"; - use Utils; my @truncate_tests = ( |