generated from ccuffs/template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfetch_site.php
56 lines (42 loc) · 1.78 KB
/
fetch_site.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/php
<?php
require_once __DIR__ . '/vendor/autoload.php';
$cli = new Garden\Cli\Cli();
$cli->description('Obtem o conteudo de um site.')
->opt('type:t', 'Tipo de repositório de conteúdo.')
->opt('input:i', 'Caminho para o repositório de conteúdo.', true)
->opt('output:o', 'Caminho para o diretorio de saída (onde o site será colocado).', true)
->opt('force:f', 'Força a remoção e criação de arquivos para todas operações.')
->opt('prefix:p', 'Prefixo para os arquivos de resultado/log/etc.');
$args = $cli->parse($argv, true);
$ds = DIRECTORY_SEPARATOR;
$type = $args->getOpt('type', 'git');
$input_path = $args->getOpt('input');
$output_path = $args->getOpt('output');
$prefix = $args->getOpt('prefix', '__ccuffs_site');
$force = $args->getOpt('force', false);
$output = [];
$result_code = 0;
$result_path = "${prefix}.json";
if ($force) {
exec("rm -rf \"$output_path\"");
}
if(file_exists($output_path)) {
chdir($output_path);
// Garante que nenhum processo git anterior ficou pendurado
$git_lock_file = $output_path . DIRECTORY_SEPARATOR . '.git' . DIRECTORY_SEPARATOR . 'index.lock';
@unlink($git_lock_file);
// Seta credenciais para evitar que o git chore por causa delas
exec('git config user.name "Deploy Bot"');
exec('git config user.email "[email protected]"');
$command = "GIT_TERMINAL_PROMPT=0 git clean --force && git reset --hard HEAD && git pull --progress --allow-unrelated-histories 2>&1";
} else {
$command = "GIT_TERMINAL_PROMPT=0 git clone \"$input_path\" \"$output_path\" --progress 2>&1";
}
exec($command, $output, $result_code);
$result = [
'ret_code' => $result_code,
'time' => time(),
'output' => $output
];
file_put_contents($result_path, json_encode($result, JSON_NUMERIC_CHECK));