@ -1840,14 +1840,30 @@ yaml.add_constructor("!time", time_constructor)
TAG_MARCO = " marco "
TAG_MARCO = " marco "
def gravar_marco (
def gerar_backup_postgres ( ) :
nome_dir = " dados " , pula_se_ja_existe = False , versiona = True , gera_backup = True
print ( " Gerando backup do banco... " , end = " " , flush = True )
) :
arq_backup = DIR_REPO . child ( " {} .backup " . format ( NOME_BANCO_LEGADO ) )
arq_backup . remove ( )
backup_cmds = [
f """
docker exec postgres pg_dump - U sapl - - format custom - - blobs - - verbose
- - file { arq_backup . name } { NOME_BANCO_LEGADO } """ ,
f " docker cp postgres: { arq_backup . name } { arq_backup } " ,
f " docker exec postgres rm { arq_backup . name } " ,
]
for cmd in backup_cmds :
subprocess . check_output ( cmd . split ( ) , stderr = subprocess . DEVNULL )
REPO . git . add ( [ arq_backup . name ] ) # type: ignore
print ( " SUCESSO " )
def gravar_marco ( nome_dir , pula_se_ja_existe = False ) :
""" Grava um dump de todos os dados como arquivos yaml no repo de marco """
""" Grava um dump de todos os dados como arquivos yaml no repo de marco """
# prepara ou localiza repositorio
# prepara ou localiza repositorio
dir_dados = Path ( REPO . working_dir , nome_dir )
dir_dados = Path ( REPO . working_dir , nome_dir )
if pula_se_ja_existe and dir_dados . exists ( ) :
if pula_se_ja_existe and dir_dados . exists ( ) :
return
return dir_dados
# limpa todo o conteúdo antes
# limpa todo o conteúdo antes
dir_dados . rmtree ( )
dir_dados . rmtree ( )
dir_dados . mkdir ( )
dir_dados . mkdir ( )
@ -1873,32 +1889,7 @@ def gravar_marco(
# grava valores das seqeunces
# grava valores das seqeunces
sequences = dict ( sorted ( sequences ) )
sequences = dict ( sorted ( sequences ) )
Path ( dir_dados , " sequences.yaml " ) . write_file ( pyaml . dump ( sequences ) )
Path ( dir_dados , " sequences.yaml " ) . write_file ( pyaml . dump ( sequences ) )
return dir_dados
# backup do banco
if gera_backup :
print ( " Gerando backup do banco... " , end = " " , flush = True )
arq_backup = DIR_REPO . child ( " {} .backup " . format ( NOME_BANCO_LEGADO ) )
arq_backup . remove ( )
backup_cmds = [
f """
docker exec postgres pg_dump - U sapl - - format custom - - blobs - - verbose
- - file { arq_backup . name } { NOME_BANCO_LEGADO } """ ,
f " docker cp postgres: { arq_backup . name } { arq_backup } " ,
f " docker exec postgres rm { arq_backup . name } " ,
]
for cmd in backup_cmds :
subprocess . check_output ( cmd . split ( ) , stderr = subprocess . DEVNULL )
print ( " SUCESSO " )
# versiona mudanças
if versiona :
REPO . git . add ( [ dir_dados . name ] )
if gera_backup :
REPO . git . add ( [ arq_backup . name ] ) # type: ignore
if " master " not in REPO . heads or REPO . index . diff ( " HEAD " ) :
# se de fato existe mudança
REPO . index . commit ( f " Grava marco (em { nome_dir } ) " )
REPO . git . execute ( " git tag -f " . split ( ) + [ TAG_MARCO ] )
def encode_version ( version ) :
def encode_version ( version ) :