104 lines
3.1 KiB
Python
Executable File
104 lines
3.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Copyright (c) 2013 Martin Katrenik, Snowplow Analytics Ltd. All rights reserved.
|
|
#
|
|
# This program is licensed to you under the Apache License Version 2.0,
|
|
# and you may not use this file except in compliance with the Apache
|
|
# License Version 2.0.
|
|
# You may obtain a copy of the Apache License Version 2.0 at
|
|
# http://www.apache.org/licenses/LICENSE-2.0.
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the Apache License Version 2.0 is
|
|
# distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
|
# express or implied.
|
|
# See the Apache License Version 2.0 for the specific language
|
|
# governing permissions and limitations there under.
|
|
|
|
# Authors:: Martin Katrenik, Alex Dean (mailto:support@snowplowanalytics.com)
|
|
# Copyright:: Copyright (c) 2013 Martin Katrenik, Snowplow Analytics Ltd
|
|
# License:: Apache License Version 2.0
|
|
|
|
# Syncs common referer-parser resources to the
|
|
# language-specific sub projects.
|
|
#
|
|
# Syncs:
|
|
# 1. The referers.yml, plus a generated JSON equivalent
|
|
# 2. The referer-tests.json
|
|
#
|
|
# Finishes by committing the synchronized resources.
|
|
|
|
import os
|
|
import shutil
|
|
import json
|
|
import yaml
|
|
import subprocess
|
|
|
|
|
|
root_path = os.path.dirname(__file__)
|
|
|
|
# Source paths
|
|
REFERER_SOURCE = os.path.join(root_path, 'resources', 'referers.yml')
|
|
REFERER_JSON_OUT = 'referers.json'
|
|
TEST_SOURCE = os.path.join(root_path, 'resources', 'referer-tests.json')
|
|
|
|
# Target paths
|
|
REFERER_TARGETS = [
|
|
os.path.join(root_path, "ruby","data"),
|
|
os.path.join(root_path, "java-scala","src","main","resources"),
|
|
os.path.join(root_path, "python","referer_parser","data"),
|
|
os.path.join(root_path, "nodejs","data"),
|
|
os.path.join(root_path, "dotnet","RefererParser","Resources"),
|
|
os.path.join(root_path, "php","data"),
|
|
os.path.join(root_path, "go", "data")
|
|
]
|
|
TEST_TARGETS = [
|
|
os.path.join(root_path, "java-scala","src","test","resources"),
|
|
# Add remainder as paths determined etc
|
|
]
|
|
|
|
# JSON builder
|
|
def build_json():
|
|
searches = yaml.load(open(REFERER_SOURCE))
|
|
return json.dumps(searches, sort_keys = False, indent = 4)
|
|
|
|
JSON = build_json()
|
|
|
|
|
|
# File ops
|
|
def copy_file(src, dest):
|
|
try:
|
|
print "copying {0} to {1} ".format(src, dest)
|
|
shutil.copy(src, dest)
|
|
except shutil.Error as e:
|
|
print('Error: %s' % e)
|
|
except IOError as e:
|
|
print('IOError: %s' % e.strerror)
|
|
|
|
def write_file(content, dest):
|
|
print "writing to {0} ".format(dest)
|
|
with open(dest, 'w') as f:
|
|
f.write(content)
|
|
|
|
|
|
# Sync process
|
|
def sync_referers_to(dest):
|
|
copy_file(REFERER_SOURCE, dest)
|
|
write_file(JSON, os.path.join(dest, REFERER_JSON_OUT))
|
|
|
|
def sync_tests_to(dest):
|
|
copy_file(TEST_SOURCE, dest)
|
|
|
|
for dest in REFERER_TARGETS:
|
|
sync_referers_to(dest)
|
|
|
|
for dest in TEST_TARGETS:
|
|
sync_tests_to(dest)
|
|
|
|
|
|
# Commit on current branch
|
|
commit = "git commit {0}".format(" ".join(REFERER_TARGETS + TEST_TARGETS))
|
|
msg = "\"Updated {0}, {1} and {2} in sub-folder following update(s) to master copy\"".format(REFERER_SOURCE, REFERER_JSON_OUT, TEST_SOURCE)
|
|
subprocess.call(commit + ' -m' + msg, shell=True)
|