70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
| 
								 | 
							
								#!/usr/bin/env python
							 | 
						||
| 
								 | 
							
								# Haoyi 2022/09/08
							 | 
						||
| 
								 | 
							
								import os,sys,re
							 | 
						||
| 
								 | 
							
								import copy
							 | 
						||
| 
								 | 
							
								import shutil
							 | 
						||
| 
								 | 
							
								_version="1"
							 | 
						||
| 
								 | 
							
								files = sys.argv[1:]
							 | 
						||
| 
								 | 
							
								print("Input argument is %s" %(sys.argv[1:]))
							 | 
						||
| 
								 | 
							
								currentPath = os.getcwd()
							 | 
						||
| 
								 | 
							
								zygoteRoot = os.path.expanduser("~/.gurutools/flutter_zygote")
							 | 
						||
| 
								 | 
							
								zygotePath = zygoteRoot + "/lib/zygote"
							 | 
						||
| 
								 | 
							
								zygoteVersion = zygoteRoot + "/.version"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								os.system('rm -fr %s' %(zygotePath + '/*'))
							 | 
						||
| 
								 | 
							
								os.system('rm -fr %s' %(zygoteRoot + '/guru_spec.yaml'))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def syncZygote():
							 | 
						||
| 
								 | 
							
								    os.chdir(zygoteRoot)
							 | 
						||
| 
								 | 
							
								    os.system("git pull --rebase")
							 | 
						||
| 
								 | 
							
								    os.system("flutter pub get")
							 | 
						||
| 
								 | 
							
								    os.chdir(currentPath)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (os.path.exists(zygoteRoot) != True):
							 | 
						||
| 
								 | 
							
								    print("init zygote...")
							 | 
						||
| 
								 | 
							
								    os.makedirs(zygoteRoot)
							 | 
						||
| 
								 | 
							
								    os.chdir(zygoteRoot)
							 | 
						||
| 
								 | 
							
								    os.system("git clone git@github.com:castbox/flutter_zygote.git ./")
							 | 
						||
| 
								 | 
							
								    os.system("flutter pub get")
							 | 
						||
| 
								 | 
							
								    os.chdir(currentPath)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (os.path.exists(zygoteVersion) != True):
							 | 
						||
| 
								 | 
							
								    syncZygote()
							 | 
						||
| 
								 | 
							
								else:
							 | 
						||
| 
								 | 
							
								    with open(zygoteVersion, "r") as f:
							 | 
						||
| 
								 | 
							
								        version = f.read();
							 | 
						||
| 
								 | 
							
								        if (_version > version):
							 | 
						||
| 
								 | 
							
								            syncZygote()
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								            print("Current zygote.py is up to date")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# os.system('rm -fr %s' %(zygoteRoot + '/guru_spec.yaml'))
							 | 
						||
| 
								 | 
							
								targetFiles = []
							 | 
						||
| 
								 | 
							
								for f in files:
							 | 
						||
| 
								 | 
							
								    if (os.path.isfile(f)):
							 | 
						||
| 
								 | 
							
								        srcDir = os.path.dirname(f)
							 | 
						||
| 
								 | 
							
								        srcName = os.path.basename(f)
							 | 
						||
| 
								 | 
							
								        if (srcName == 'guru_spec.yaml'):
							 | 
						||
| 
								 | 
							
								            shutil.copy(f, zygoteRoot + '/guru_spec.yaml')
							 | 
						||
| 
								 | 
							
								            continue
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        dstDir = zygotePath + srcDir
							 | 
						||
| 
								 | 
							
								        dstFile = dstDir + '/' + srcName
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        os.makedirs(dstDir, exist_ok=True)
							 | 
						||
| 
								 | 
							
								        shutil.copy(f, dstFile)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        os.path.dirname(f)
							 | 
						||
| 
								 | 
							
								        generatedName = srcName.replace('.', '.g.')
							 | 
						||
| 
								 | 
							
								        targetFiles.append((dstDir + '/' + generatedName, srcDir + '/' + generatedName))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								os.chdir(zygoteRoot)
							 | 
						||
| 
								 | 
							
								os.system('flutter packages pub run build_runner build --delete-conflicting-outputs')
							 | 
						||
| 
								 | 
							
								os.chdir(currentPath)
							 | 
						||
| 
								 | 
							
								for f in targetFiles:
							 | 
						||
| 
								 | 
							
								    print(f[0] + ' => ' + f[1])
							 | 
						||
| 
								 | 
							
								    shutil.copy(f[0], f[1])
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								os.system('rm -fr %s' %(zygotePath + '/*'))
							 | 
						||
| 
								 | 
							
								os.system('rm -fr %s' %(zygoteRoot + '/guru_spec.yaml'))
							 | 
						||
| 
								 | 
							
								# os.system('cd -')
							 |