정적 자술 파일 재생성
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.md
name: 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.)