Можно ли автоматически изменять дату последнего обновления на моем веб-сайте на текущую, когда я отправляю изменения в GitHub? - PullRequest
4 голосов
/ 23 мая 2019

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

Сейчас мой сайт использует только HTML, CSS и JavaScript. Я не знаю, может ли проблема быть решена с помощью этих технологий, или возможно ли коммит или толчок Git вызвать что-либо.

UPDATE:

Решено @ k3llydev с использованием API GitHub. Пример Codepen с обновлениями для достижения того, что я ищу.

const desiredRepo = "seachel.github.io";
const dateTagClass = ".date";

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
  if (this.readyState == 4 && this.status == 200)
  {
    let repos = JSON.parse(this.responseText);

    repos.forEach((repo)=>{
      if (repo.name == desiredRepo)
      {
        var lastUpdated = new Date(repo.updated_at);
        var day = lastUpdated.getUTCDate();
        var month = lastUpdated.getUTCMonth();
        var year = lastUpdated.getUTCFullYear();
        $(dateTagClass).text(`Last updated: ${year}-${month}-${day}`);
      }
    });
  }
};
xhttp.open("GET", "https://api.github.com/users/seachel/repos", true);
xhttp.send();

Ответы [ 2 ]

4 голосов
/ 23 мая 2019

Ответ JS хорош, но вы также можете сделать это с помощью Bash-скрипта в корне вашего сайта:

#!/bin/bash

git_last_commit_date="$(git log -1 --format=%cd)"
echo "Git last commit date: $git_last_commit_date"

html_files="$(find . -type f -name "*.html")"

for file in $html_files; do 
  echo "Inserting date into: $file" 
  sed -i "" "s|<span id=\"git-last-commit-date\">*</span>|<span id=\"git-last-commit-date\">$git_last_commit_date</span>|g" "$file"
done 

Затем добавьте этот элемент <span> на страницах, которые вы хотите обновить:

<span id="git-last-commit-date"></span>
4 голосов
/ 23 мая 2019

Быстрый ответ - да.Это возможно.Вы можете посмотреть, как использовать официальный GitHub API и создать запрос AJAX с ванильным JavaScript к этому API, и все, что вам осталось сделать, - это обработать данные, которые вы хотите.

Как?

Посмотрите на пример, я вызываю с помощью JavaScript через AJAX API GitHub и указываю, что я хочу all repos for user k3llydev.Затем я просто печатаю имя репозитория и время его последнего обновления.

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    let repos = JSON.parse(this.responseText);
    document.write("<h3>k3llydev github repositories w/last updated</h3>");
    repos.forEach((repo)=>{
      document.write(`<code>${repo.name}</code>: <em>${new Date(repo.updated_at)}</em><br>`);
    });
  }
};
xhttp.open("GET", "https://api.github.com/users/k3llydev/repos", true);
xhttp.send();

Примечание: Если вы используете подобный API, время последнего обновления репо, которое вы хотите реализовать на своем веб-сайте, будет обновляться автоматически, поскольку каждый раз, когда ваш сайт загружается, вызывается GitHub API, который будет получать новые и обновленные данные о ваших публичных репозиториях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...