require 'yaml' require 'digest' DOCKER_COMPOSE='compose.test.yml' desc 'iniciar entorno' task :up do compose('up', '--build', '-d') end desc 'poblar entorno' task :init => [:up] do compose('exec', 'test.dev', 'pip3 install psycopg2 flake8') compose('exec', 'test.dev', "bash .dev/install_module.sh") end desc 'terminal' task :sh do compose('exec', 'test.dev', 'bash') end desc 'iterar' task :tdd, [:name] do |_, args| refresh_cache test_dir = '' if args.name test_dir = "modules/#{args.name}" compose('exec', 'test.dev', "bash -c 'cd #{test_dir} && flake8'") compose('exec', 'test.dev', "bash -c 'cd #{test_dir}/tests && python3 -m unittest'") else compose('exec', 'test.dev', "bash -c 'cd modules && flake8 *'") compose('exec', 'test.dev', "bash -c 'python -m unittest discover -s modules'") end end desc 'detener entorno' task :down do compose('down', '-vv') end desc 'entorno vivo' namespace :live do desc 'iniciar entorno' task :up do compose('up', '--build', '-d', compose: 'compose.live.yml') end desc 'monitorear salida' task :tail do compose('logs', '-f', 'live', compose: 'compose.live.yml') end desc 'detener entorno' task :down do compose('down', compose: 'compose.live.yml') end desc 'eliminar entorno' task :del do compose('down', '-v', '--rmi', 'all', compose: 'compose.live.yml') end desc 'reiniciar entorno' task :restart do compose('restart', compose: 'compose.live.yml') end desc 'terminal' task :sh do compose('exec', 'live', 'bash') end desc 'monitorear salida' task :tail_end do compose('logs', '-f', '-n 50', 'live.dev', compose: 'compose.live.yml') end desc 'populate data' task :populate, [:database] do |_, args| if args.database compose('stop', "live.dev", compose: "compose.yml") compose('exec', '-it', '--user', 'postgres', 'db.dev', "bash -c 'dropdb -U tryton #{args.database}'") compose('exec', '-it', '--user', 'postgres', 'db.dev', "bash -c 'createdb -U tryton #{args.database}'") compose('restart', "live.dev", compose: "compose.yml") sleep(30) # compose('exec', '--user', 'root', 'live.dev', "trytond-admin -d #{args.database} -m --all -vv --act", compose: 'compose.yml') compose('exec', 'live.dev', "bash -c 'python3 demo/__main__.py -c .dev/trytond.cfg -d #{args.database}'") compose('restart', 'live.dev', compose: "compose.yml") else puts "Falta el nomnbre de la base de datos" end end end def compose(*arg, compose: DOCKER_COMPOSE) sh "docker-compose -f #{compose} #{arg.join(' ')}" end