Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: refactor gnoblog-cli #63

Merged
merged 51 commits into from
Mar 4, 2024
Merged

fix: refactor gnoblog-cli #63

merged 51 commits into from
Mar 4, 2024

Conversation

leohhhn
Copy link
Collaborator

@leohhhn leohhhn commented Jan 18, 2024

Description

This PR refactors the gnoblog-cli tool. It introduces single & batch posting.

Related to #62, #56.

The PR also includes the changes for Issue #56, which is removing the post titles from the frontmatter and extracting them directly from the body.

Closes: #60, #62, #56

gnoblog-cli/cmd/main.go Outdated Show resolved Hide resolved
@leohhhn leohhhn marked this pull request as ready for review January 29, 2024 13:01
@leohhhn leohhhn requested a review from a team as a code owner January 29, 2024 13:01
gnoblog-cli/cmd/main.go Outdated Show resolved Hide resolved
gnoblog-cli/cmd/post.go Outdated Show resolved Hide resolved
gnoblog-cli/cmd/post.go Outdated Show resolved Hide resolved
gnoblog-cli/cmd/clients.go Outdated Show resolved Hide resolved
cmd Outdated Show resolved Hide resolved
Copy link
Member

@gfanton gfanton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some nitpicks; overall looks good 👍

cmd/gnoblog-cli/util.go Outdated Show resolved Hide resolved
cmd/gnoblog-cli/post_test.go Outdated Show resolved Hide resolved
cmd/gnoblog-cli/post.go Outdated Show resolved Hide resolved
leohhhn added a commit to leohhhn/gno that referenced this pull request Feb 29, 2024
## Description

This PR adds two new AVL trees that enable sorting of the blog posts by
publication date and title.
This approach utilizes the fact that the AVL tree iteration order is
lexicographic by key. We introduce two new AVL trees into the `Blog`
struct - which store a key to sort by (title or publication date), and
store the pointers to posts, meaning the memory overhead is small.

This PR also modifies the rendering of the blog:

Old blog home page:
![Screenshot 2024-01-23 at 11 34
10](https://github.com/gnolang/gno/assets/33522493/78e197d3-a477-49a9-88d8-06b4f2c3d51d)

New blog home page (sorted newest-top-left):
![Screenshot 2024-01-23 at 11 33
38](https://github.com/gnolang/gno/assets/33522493/16712e37-c971-4cf5-9962-9dbf639a6088)

Old post rendering - header & footer:
![Screenshot 2024-01-23 at 11 34
46](https://github.com/gnolang/gno/assets/33522493/d6a713bb-379c-44b7-9ea7-38997e6b5c5a)

New post rendering - header & footer:
![Screenshot 2024-01-23 at 11 35
03](https://github.com/gnolang/gno/assets/33522493/352ea40d-c9ac-41a0-a362-fb3c5ca62968)
----
![Screenshot 2024-01-23 at 11 35
11](https://github.com/gnolang/gno/assets/33522493/6f21416c-8945-4eca-9bee-b67a9e56a568)


The API changes are the following:
- Each post now stores the publisher (ie caller of ModAddPost), and the
authors.
- It is envisioned that the author list will be a list of GitHub
usernames, while the publisher is simply the address of the caller. A PR
in the Blog repo will be added to accommodate this change.
- If the author list in the frontmatter of the blog post is empty, just
the publisher will be displayed
- The timestamp for when the blog was written will primarily be taken in
from the outside world, ie from the frontmatter, in the `RFC3339`
format. This timestamp allows us to still keep the ordering of the blogs
even when the block height/timestamp is unreliable. In case the
timestamps are not provided, time.Now() in the realm will be used
instead.

Publishing flow - two options:
- Pass in data directly to the blog realm via `ModAddPost`,
- Use the `gnoblog-cli` or similar parsing & publishing tool.
Either way, it is expected that any timestamps passed will be used in
the `time.RFC3339` format.

This PR is being published in pair with a
[refactor](gnolang/blog#63) of the gnoblog-cli
tool.

Related: gnolang/blog#20

<details><summary>Contributors' checklist...</summary>

- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>

---------

Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
@leohhhn
Copy link
Collaborator Author

leohhhn commented Mar 4, 2024

Merging this without writing integration tests because there is no straight-forward way to do so currently.
CI doesn't see log/slog for some reason - will ping Albert to see if he can fix it.

Next steps: iterate CI integration to gnoblog-cli, test CI on staging.gno.land, later ping @moul to move to Portal Loop.

@leohhhn leohhhn merged commit fc0e5bc into main Mar 4, 2024
0 of 2 checks passed
@leohhhn leohhhn deleted the refac/cli branch March 4, 2024 22:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

4 participants