Probably because there is no interest in open standards. I find ical is more a file format than a transport format, an actual standard protocol around it would be great. Although I suspect that the “transport” was always supposed to be email.
arran 🇦🇺
- 0 Posts
- 11 Comments
arran 🇦🇺@aussie.zoneto PC Gaming@lemmy.ca•Which "Don’t Starve" expansion should I buy (first)?1·8 months agoRoG adds a lot of content which makes the early game a bit easier, and opens up a lot of possibilities later.
The other expansions are only worth it once you have “completed” RoG.
arran 🇦🇺@aussie.zoneto Open Source@lemmy.ml•Omni: A useful and handy android minimalist toolbox.3·9 months agoah. Sorry
arran 🇦🇺@aussie.zoneto Piracy: ꜱᴀɪʟ ᴛʜᴇ ʜɪɢʜ ꜱᴇᴀꜱ@lemmy.dbzer0.com•What's your experience with the sneakernet?English15·9 months agoIsn’t that the plot to Mirror’s Edge?
arran 🇦🇺@aussie.zoneto Open Source@lemmy.ml•Omni: A useful and handy android minimalist toolbox.35·9 months agoI’m not sure what this is or who it is for, or why I should be interested?
arran 🇦🇺@aussie.zoneto Technology@lemmy.world•The air begins to leak out of the overinflated AI bubbleEnglish2·10 months agoThe fact that is is from LA Times shows that it’s still significant though
arran 🇦🇺@aussie.zoneto Technology@lemmy.world•We need to nationalise Google, Facebook and Amazon. Here’s whyEnglish6·11 months agoBack before the media decided it wasn’t a competitor but rather a potential profit source. I do think the government does need to have it’s own alternatives (obviously not identical more on this one day) for other reasons, such as for it’s own media releases, but more internationally coordinated appropriate & considered legislation is probably better.
arran 🇦🇺@aussie.zoneto Open Source@lemmy.ml•Is there a bookmark manager that works like KeePass?1·11 months agoIt’s fairly uncomplicated just flexible and without guide rails so you need to figure out how you want to represent it yourself. I’ve used a separate space for my links compared to everything else which is just in my ‘home’ space
arran 🇦🇺@aussie.zoneto Open Source@lemmy.ml•Is there a bookmark manager that works like KeePass?3·11 months agoI’ve been using AnyType for this starting a couple weeks ago.
arran 🇦🇺@aussie.zoneto Technology@lemmy.world•Is there a Git repository activity aggregator, like GitHub's user activity but platform independent?English15·11 months agoI asked chatgpt to write a go program for this, this looks roughly correct (I have used both libraries before) obviously this won’t be enough for your particular use case. I imagine you can integrate an RSS feed to your site, however if you’re using something like hugo perhaps output it as a csv.
Super low effort but a good start I think:
package main import ( "fmt" "log" "os" "strings" "time" git "github.com/go-git/go-git/v5" rss "github.com/jteeuwen/go-pkg-rss" ) const ( timeout = 5 // timeout in seconds for the RSS feed generation ) // Repository represents a git repository with its URL type Repository struct { URL string } // Repositories is the list of git repositories var Repositories = []Repository{ {URL: "https://github.com/owner/repo1"}, {URL: "https://github.com/owner/repo2"}, // Add more repositories here } // FetchLatestTag fetches the latest tag from a git repository func FetchLatestTag(repoURL string) (string, string, error) { // Clone the repository to a temporary directory dir, err := os.MkdirTemp("", "repo") if err != nil { return "", "", err } defer os.RemoveAll(dir) _, err = git.PlainClone(dir, true, &git.CloneOptions{ URL: repoURL, Progress: os.Stdout, }) if err != nil { return "", "", err } repo, err := git.PlainOpen(dir) if err != nil { return "", "", err } tags, err := repo.Tags() if err != nil { return "", "", err } var latestTag string var latestCommitTime time.Time err = tags.ForEach(func(ref *plumbing.Reference) error { tag := ref.Name().Short() commit, err := repo.CommitObject(ref.Hash()) if err != nil { return err } if commit.Committer.When.After(latestCommitTime) { latestCommitTime = commit.Committer.When latestTag = tag } return nil }) if err != nil { return "", "", err } return latestTag, latestCommitTime.Format(time.RFC1123Z), nil } // GenerateRSS generates an RSS feed from the latest tags of the repositories func GenerateRSS() string { feed := rss.Feed{ Title: "Latest Tags from Git Repositories", Link: &rss.Link{Href: "http://example.com/"}, Description: "This feed provides the latest tags from a list of git repositories.", Created: time.Now(), } for _, repo := range Repositories { tag, date, err := FetchLatestTag(repo.URL) if err != nil { log.Printf("Error fetching latest tag for repository %s: %v", repo.URL, err) continue } feed.Items = append(feed.Items, &rss.Item{ Title: fmt.Sprintf("Latest tag for %s: %s", repo.URL, tag), Link: &rss.Link{Href: repo.URL}, Description: fmt.Sprintf("The latest tag for repository %s is %s, created on %s.", repo.URL, tag, date), Created: time.Now(), }) } var rssFeed strings.Builder rssFeed.WriteString(xml.Header) if err := feed.Write(&rssFeed); err != nil { log.Fatalf("Error generating RSS feed: %v", err) } return rssFeed.String() } func main() { rssFeed := GenerateRSS() fmt.Println(rssFeed) }
Never forget never forgive.