정적 자술 파일 재생성
15957 단어 productivitywebdevtutorialgithub
GitHub는 최근 개인 정보 페이지에 가격 인하 템플릿을 표시하는 "비밀"기능을 출시했습니다.너는 아마 이 일을 들은 적이 있을 것이다.사용자 이름으로 된 환매 프로토콜을 만들고 그곳에서
README.md 파일을 만드는 것이 필요합니다.GitHub의 템플릿 가격 인하를 생각할 때 정적 내용을 떠올리는 경우가 많습니다.그러나 본문에서 나는 더욱 진일보하고 싶다.나는 너에게 수시로 업데이트될 내용을 추가하는 방법을 알려줄 것이다.당신의 최신 트윗, 최신 유튜브 동영상, 최신 블로그 게시물에 대해서도.
aralroca 내 GitHub 설명서 재구매
다음을 소개합니다.
Implementation
정적 자술 파일 재생성(SRR) 정보
'정적 자술 재생'이라는 것은 파일
README.md이 우리의 스크립트에 의해 생성되고 정기적으로 (우리가 프로그래밍한) 재구성README.md의 로봇 업데이트 내용을 통해 이루어진다는 뜻이다.이렇게 하는 장점은 README.md 진정으로 변화가 발생할 때만 로봇이 환매를 약속할 수 있다는 데 있다.이렇게 자술한 내용은 완전히 정태적일 수 없으며, 매일, 매시간, 심지어 매분마다 변화할 수 있다.이를 위해 cron에 GitHub 작업을 사용합니다.
GitHub 작업의 정적 재생성에 대한 차트
실시
나는 내가 개인 자료에서 한 것을 예로 들 것이다.그것은 항상 내 블로그의 마지막 다섯 문장과 매일의 업데이트를 보여 준다.이렇게 하면 나는 긴장을 풀 수 있다. 왜냐하면 내가 블로그에 새로운 글을 올릴 때 내 개인 자료의
README.md 파일이 자동으로 업데이트된다는 것을 알고 있기 때문이다.자술한 문서.제3자 물류
템플릿 파일에 사용할
README.md.tpl 형식의 파일을 만듭니다.이 파일에는 .tpl 의 모든 정적 내용이 포함됩니다.우리는 여기에서 우리가 README.md 파일에 쓴 것처럼 표시를 할 것이다.주요한 차이점은 우리가 동태를 실현하기 위해 삽입 기호를 추가할 것이다.이렇게 하면 우리의 스크립트는 동적 내용으로 그것들을 대체할 수 있을 것이다.
README.md부터 .md.tpl까지 보간도자술한 파일을 만드는 스크립트입니다.의학 박사
스크립트는 다음을 수행해야 합니다.
.md.README.tpl.md - 5개 항목에 대한 삽입값을 태그 문자열로 바꿉니다.이것은 어떤 언어로도 실현할 수 있다.JavaScript、Rust、Python、Go、C...이런 상황에서 저는 러스트를 선택했습니다. 주로 저는 이 방면의 경험이 없기 때문에 저는 이 기회를 빌려 조금 배웠습니다. (만약 당신이 녹병 전문가이고 개선할 수 있는 점을 보았다면 마음대로 환매에 문제를 만들어 주십시오.)
> 주요루피
mod create_readme;
use create_readme::create_readme;
fn main() {
match create_readme() {
Ok(_v) => println!("README.md file generated correctly"),
Err(e) => println!("Opps! there was an error: {:?}", e),
}
}
> 자술 파일을 만듭니다.루피extern crate chrono;
extern crate rss;
use chrono::DateTime;
use rss::Channel;
use std::cmp::Ordering;
use std::fs;
struct FeedItem {
title: String,
link: String,
pub_date: String,
}
pub fn create_readme() -> std::io::Result<()> {
let tpl =
fs::read_to_string("README.md.tpl")
.expect("Something went wrong reading the README.tpl file");
let last_articles = get_latest_articles();
return fs::write(
"README.md",
tpl.replace("%{{latest_articles}}%", &last_articles),
);
}
fn get_latest_articles() -> String {
let mut posts: Vec<FeedItem> = get_blog_rss();
// Sort articles by pub_date
posts.sort_by(|a, b| {
let date_a = DateTime::parse_from_rfc2822(&a.pub_date).unwrap();
let date_b = DateTime::parse_from_rfc2822(&b.pub_date).unwrap();
if date_b < date_a {
Ordering::Less
} else if date_b > date_a {
Ordering::Greater
} else {
Ordering::Equal
}
});
// Filter las 5 articles + format each one as markdown list string
return posts[..5].iter().fold("".to_string(), |acc, item| {
format!("{} \n* [{}]({})", acc, item.title, item.link)
});
}
// Fetch all articles of my blog on rss.xml
fn get_blog_rss() -> Vec<FeedItem> {
let items = Channel::from_url("https://aralroca.com/rss.xml")
.unwrap()
.items()
.iter()
.map(|item| FeedItem {
title: item.title().unwrap().to_string(),
link: item.link().unwrap().to_string(),
pub_date: item.pub_date().unwrap().to_string(),
})
.collect();
items
}
cron의 GitHub 작업 사용
일단 구축
pub_date 스크립트가 생기면 GitHub 조작을 사용하여cron을 생성할 수 있습니다.작업을 만들려면 먼저 스크립트를 주 분기에 업로드한 다음 GitHub의 작업 탭을 클릭하여 작업을 만드는 것이 좋습니다.이런 방식을 통해 GitHub는 스크립트 언어를 검사하고 기본 yaml을 만듭니다.
기본 yaml의 일부 내용을 대체합니다.
README.md 대신 README.tpl.mdname: Rust
on:
# Schedule a cron
schedule:
- cron: "0 0 */1 * *" # each day at 00:00 UTC
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build
# Replace "cargo build" to "cargo run" to run the script
run: cargo run
# Commit the regenerated README only when it change
# (git diff --quiet && git diff --staged --quiet )
- run: |
git config user.name aralroca
git config user.email [email protected]
git add README.md
git diff --quiet && git diff --staged --quiet || git commit -m "[gh-action] Update README"
git push origin master
결론
한 마디로 하면 대부분의 환매에서 자술한 파일은 정태적이지만 GitHub의 조작과 GitHub의 이 새로운 기능으로 인해 우리는 우리의
README.md을 구축하여 우리의 개인 자료를 항상 최신 업데이트(발표, 홍보, 추문, 게시글 등)와 최신 상태로 유지할 수 있다.공구서류
Reference
이 문제에 관하여(정적 자술 파일 재생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aralroca/static-readme-regeneration-4pf2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)