Opendiff и онлайн файл

Я хотел бы сделать различие между файлом, один локальный, а другой онлайн, например,

opendiff http://www.tex.ac.uk/ctan/web/lua2dox/Doxyfile Doxyfile

Но это выдает следующую ошибку:

2014-02-12 15: 23: 43.579 opendiff [72650: 1007] /Users/Dev/Joker/http:/www.tex.ac.uk/ctan/web/lua2dox/Doxyfile не существует

Итак, как я могу использовать онлайн-файл так же, как локальный?

1 ответ

Решение

Поскольку это сайт вопросов и ответов по программированию, мы можем также написать программу, которая сделает это для нас:-)

Вы можете создать скрипт под названием (например) odw за OpenDiffWeb которая обнаружит, пытаетесь ли вы получить доступ к веб-файлам и сначала загрузите их во временную папку.

Изучите следующий сценарий, он довольно прост, но показывает подход, который можно использовать.

#!/bin/bash

# Ensure two parameters.

if [[ $# -ne 2 ]] ; then
    echo Usage: $0 '<file/url-1> <file/url-2>'
    exit 1
fi

# Download first file if web-based.

fspec1=$1
if [[ $fspec1 =~ http:// ]] ; then
    wget --output-document=/tmp/odw.$$.1 $fspec1
    fspec1=/tmp/odw.$$.1
fi

# Download second file if web-based.

fspec2=$2
if [[ $fspec2 =~ http:// ]] ; then
    wget --output-document=/tmp/odw.$$.2 $fspec2
    fspec2=/tmp/odw.$$.2
fi

# Show difference of two files.

diff $fspec1 $fspec2

# Delete them if they were web-based.

if [[ $fspec1 =~ /tmp/odw. ]] ; then
    rm -f $fspec1
fi

if [[ $fspec2 =~ /tmp/odw. ]] ; then
    rm -f $fspec2
fi

В этом случае мы обнаруживаем веб-файл как файл, начинающийся с http://, Если это так, мы просто используем wget чтобы привести его во временное место. Оба файла проверяются таким образом.

Когда оба файла находятся на локальном диске (либо потому, что они были сбиты, либо потому, что они уже были там), вы можете запустить diff - Я использовал стандарт diff но вы можете заменить свой собственный.

Затем временные файлы очищаются.

В качестве теста я скачал страницу http://www.example.com и сделал небольшое изменение, затем сравнил страницу с моей измененной локальной копией:

pax> odw http://www.example.com example.txt 
--2014-09-25 16:40:02--  http://www.example.com/
Resolving www.example.com (www.example.com)... 93.184.216.119,
    2606:2800:220:6d:26bf:1447:1097:aa7
Connecting to www.example.com (www.example.com)|93.184.216.119|:80...
    connected.
HTTP request sent, awaiting response... 200 OK
Length: 1270 (1.2K) [text/html]
Saving to: `/tmp/odw.6569.1'

100%[=================================>] 1,270       --.-K/s   in 0s      

2014-09-25 16:40:02 (165 MB/s) - `/tmp/odw.6569.1' saved [1270/1270]

4c4
<     <title>Example Domain</title>
---
>     <title>Example Domain (slightly modified)</title>

Теперь есть все виды добавленных вещей, которые могут войти в этот скрипт, возможность передавать флаги diff а также wget программы, возможность обработки других типов URL, удаление временных файлов по сигналам и так далее.

Но, надеюсь, этого будет достаточно, чтобы вы начали.

Другие вопросы по тегам