| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- import zipfile
- import os
- import glob
- import re
- import shutil
- import wget
- from jinja2 import Template, Environment, FileSystemLoader
- def extract_zip(filename, target_dir):
- with zipfile.ZipFile(filename, 'r') as zip_ref:
- zip_ref.extractall(target_dir)
- def get_nssm(tmpPath, version):
- if not os.path.isdir(tmpPath):
- os.mkdir(tmpPath)
- target_filename = '{}/nssm-{}.zip'.format(tmpPath, version)
- exists = os.path.isfile(target_filename)
- if exists:
- return target_filename
- url = 'https://nssm.cc/release/nssm-{}.zip'.format(version)
- print('NSSM url is {}'.format(url))
- filename = wget.download(url, out=target_filename, bar=wget.bar_thermometer)
- return filename
- def get_zip(version, target_filename):
- exists = os.path.isfile(target_filename)
- if exists:
- return target_filename
- url = 'https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-{}.windows-amd64.zip'.format(version)
- #url = 'https://dl.grafana.com/enterprise/release/grafana-enterprise-{}.windows-amd64.zip'.format(version)
- filename = wget.download(url, out=target_filename, bar=wget.bar_thermometer)
- return filename
- #
- #
- #
- def detect_version(dist_path):
- detectedVersion = ''
- detectedHash = ''
- isEnterprise = False
- print("Detecting Version...")
- # grafana-6.0.0-ca0bc2c5pre3.windows-amd64.zip
- # get files in directory matching pattern
- fileList = glob.glob(dist_path + '/grafana*.windows-amd64.zip')
- print(fileList)
- if len(fileList) == 0:
- print('Skipping detection, no matches')
- return
- firstFile = fileList[0]
- p1 = re.search(r'grafana-(\d\.\d\.\d)\.windows-amd64.zip$', firstFile)
- p2 = re.search(r'grafana-(\d\.\d\.\d)-(.*)\.windows-amd64.zip$', firstFile)
- if p1:
- detectedVersion = p1.group(1)
- if p2:
- detectedVersion = p2.group(1)
- detectedHash = p2.group(2)
- return detectedVersion, detectedHash, isEnterprise
- #if os.path.isdir(dist_path + 'enterprise-dist'):
- # # grafana-enterprise-6.0.0-29b28127pre3.windows-amd64.zip
- # # get files in directory matching pattern
- # fileList = glob.glob(dist_path + '/enterprise-dist/grafana*.windows-amd64.zip')
- # firstFile = fileList[0]
- # p1 = re.search(r'grafana-enterprise-(\d\.\d\.\d)\.windows-amd64.zip$', firstFile)
- # p2 = re.search(r'grafana-enterprise-(\d\.\d\.\d)-(.*)\.windows-amd64.zip$', firstFile)
- # if p1:
- # detectedVersion = p1.group(1)
- # isEnterprise = True
- # if p2:
- # detectedVersion = p2.group(1)
- # detectedHash = p2.group(2)
- # isEnterprise = True
- # return detectedVersion, detectedHash, isEnterprise
- def generate_product_wxs(env, config, features, scratch_file, target_dir):
- template = env.get_template('common/product.wxs.j2')
- output = template.render(config=config, features=features)
- fh = open(scratch_file, 'w')
- fh.write(output)
- fh.close()
- shutil.copy2(scratch_file, target_dir)
- def generate_service_wxs(env, grafana_version, scratch_file, target_dir, nssm_version='2.24'):
- template = env.get_template('common/grafana-service.wxs.j2')
- output = template.render(grafana_version=grafana_version, nssm_version=nssm_version)
- fh = open(scratch_file, 'w')
- fh.write(output)
- fh.close()
- shutil.copy2(scratch_file, target_dir)
- def generate_firewall_wxs(env, grafana_version, scratch_file, target_dir):
- os.system("ls -al templates")
- template = env.get_template('common/grafana-firewall.wxs.j2')
- output = template.render(grafana_version=grafana_version)
- fh = open(scratch_file, 'w')
- fh.write(output)
- fh.close()
- shutil.copy2(scratch_file, target_dir)
- def generate_oracle_environment_wxs(env, instant_client_version, scratch_file, target_dir):
- template = env.get_template('oracle/oracle-environment.wxs.j2')
- output = template.render(instant_client_version=instant_client_version)
- fh = open(scratch_file, 'w')
- fh.write(output)
- fh.close()
- shutil.copy2(scratch_file, target_dir)
- def copy_static_files(target_dir):
- for item in os.listdir('resources/images'):
- s = os.path.join('resources/images', item)
- d = os.path.join(target_dir, item)
- shutil.copy2(s, d)
- for item in os.listdir('resources/license'):
- s = os.path.join('resources/license', item)
- d = os.path.join(target_dir, item)
- shutil.copy2(s, d)
|