Skip to content

Commit 52ba275

Browse files
committed
fix permalink being mistakenly set to /the-article/index.md
instead of using the baseURL. This was caused by the config.yaml not being loaded.
1 parent d9d0589 commit 52ba275

File tree

5 files changed

+275
-359
lines changed

5 files changed

+275
-359
lines changed

README.md

Lines changed: 32 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
- [Usage](#usage)
99
- [Use it](#use-it)
1010
- [List your dev.to articles](#list-your-devto-articles)
11-
- [Preview the Markdown content that will be pushed to dev.to](#preview-the-markdown-content-that-will-be-pushed-to-devto)
11+
- [Transformations](#transformations)
1212
- [Push one blog post to dev.to](#push-one-blog-post-to-devto)
1313
- [Push all blog posts to dev.to](#push-all-blog-posts-to-devto)
1414
- [Notes](#notes)
@@ -117,57 +117,6 @@ Finally, you can push to DEV:
117117
success: ./content/cloth-impossible.md pushed to https://dev.to/maelvls/cloth-impossible-95dc
118118
success: ./content/powder-farmer.md pushed to https://dev.to/maelvls/powder-farmer-6a18
119119

120-
TRANSFORMATIONS
121-
The Markdown for Hugo posts and dev.to articles have slight differences.
122-
Before pushing to dev.to, hudevto does some transformations to the Markdown
123-
file. To see the transformations before pushing the Hugo post to dev.to, use one of:
124-
125-
% hudevto diff ./debug-k8s/index.md
126-
127-
The transformations are:
128-
129-
1. ABSOLUTE MARKDOWN IMAGES: the relative image links are absolutified since
130-
dev.to needs the image path to be absolute (the base URL itself is not
131-
required).
132-
133-
The following Hugo Markdown snippet:
134-
135-
![wireshark](wireshark.png)
136-
137-
becomes:
138-
139-
![wireshark](/debug-k8s/wireshark.png)
140-
<--(1)--->
141-
142-
where (1) is the article's Hugo permalink to the ./debug-k8s/index.md post.
143-
Note that the ![]() tag must span a single line. Otherwise, it won't be
144-
transformed.
145-
146-
2. ABSOLUTE HTML IMG TAGS: unlike with Markdown images, the <img> HTML tags
147-
need to be absolute and needs to contain the base URL. For example, the
148-
following HTML:
149-
150-
<img src="wireshark.png">
151-
152-
gets transformed to:
153-
154-
<img src="https://maelvls/debug-k8s/wireshark.png">
155-
156-
The <img> tag must be on a single line, and the "src" value must end with
157-
one of the following extensions: png, PNG, jpeg, JPG, jpg, gif, GIF, svg,
158-
SVG.
159-
160-
3. SHORTCODES: Hugo shortcodes for embedding (like for embedding a Youtube video)
161-
are turned into Liquid tags that dev.to knows about.
162-
4. ANCHOR IDS: Hugo and Devto have different anchor ID syntaxes.
163-
164-
OPTIONS
165-
-apikey string
166-
The API key for Dev.to. You can also set DEVTO_APIKEY instead.
167-
-debug
168-
Print debug information such as the HTTP requests that are being made in curl format.
169-
-root string
170-
Root directory of the Hugo project.
171120
```
172121
173122
## Use it
@@ -181,8 +130,9 @@ export DEVTO_APIKEY=$(lpass show dev.to -p)
181130
182131
### List your dev.to articles
183132
184-
This is useful because I have dev.to configured with the RSS feed of my
185-
blog so that dev.to automatically creates a draft of each of my new posts.
133+
This is useful because I have dev.to configured with the RSS feed of my blog so
134+
that dev.to automatically creates a draft of each of my new posts. Note that you
135+
don't need to set up RSS mirroring in order to use `hudevto`.
186136
187137
```sh
188138
% hudevto devto list
@@ -195,12 +145,24 @@ blog so that dev.to automatically creates a draft of each of my new posts.
195145
317339: published at https://dev.to/maelvls/learning-kubernetes-controllers-496j (Learning Kubernetes Controllers)
196146
```
197147
198-
### Preview the Markdown content that will be pushed to dev.to
148+
### Transformations
199149
200-
I use the `hudevto preview` command because I do some transformations and I need a way to preview the changes to make sure the Markdown and front matter make sense. The transformations are:
150+
The Markdown for Hugo posts and dev.to articles have slight differences. Before
151+
pushing to dev.to, `hudevto` does some transformations to the Markdown file. To
152+
see the transformations before pushing the Hugo post to dev.to, you can use:
201153
202-
- Generate a new front matter which is used by dev.to for setting the dev.to post title and canonical URL;
203-
- Change the Hugo "tags" into Liquid tags, such as:
154+
```sh
155+
hudevto preview ./content/2020/avoid-gke-lb-using-hostport/index.md
156+
hudevto diff ./content/2020/avoid-gke-lb-using-hostport/index.md
157+
```
158+
159+
Here are the transformations that are made:
160+
161+
- **Front matter:** Updates the Markdown front matter. The front matter is used
162+
to configure the Devto post title and canonical URL.
163+
- **Shortcodes:** the Hugo shortcodes are transformed into shortcodes that
164+
Devto knows about (called "Liquid tags"). For example, the following
165+
Hugo shortcode:
204166
205167
```md
206168
{{< youtube 30a0WrfaS2A >}}
@@ -212,11 +174,12 @@ I use the `hudevto preview` command because I do some transformations and I need
212174
{% youtube 30a0WrfaS2A %}
213175
```
214176
215-
- Add the base URL of the post to the markdown images so that images are not
216-
broken. ONLY WORKS if your images are stored along side your blog post, such
217-
as:
177+
- **Absolute Markdown images:** Markdown image links are transformed to
178+
absolute URLs using the base URL of the post. That way, images keep working
179+
in Dev.to. ONLY WORKS if your images are stored along side your blog post,
180+
such as:
218181
219-
```sh
182+
```console
220183
% ls --tree ./content/2020/avoid-gke-lb-using-hostport
221184
./content/2020/avoid-gke-lb-using-hostport
222185
├── cost-load-balancer-gke.png
@@ -226,8 +189,9 @@ I use the `hudevto preview` command because I do some transformations and I need
226189
└── packet-routing-with-akrobateo.png
227190
```
228191
229-
- The relative image links are "absolutified". This is needed so that Devto can
230-
access the images. For example, the following post:
192+
- **Absolute HTML `<img>` tags:** The relative image links are "absolutified".
193+
This is needed so that Devto can access the images. For example, the following
194+
post:
231195
232196
<https://maelvls.dev/you-should-write-comments/index.md>
233197
@@ -296,9 +260,10 @@ I use the `hudevto preview` command because I do some transformations and I need
296260
Only the following image extensions are converted: png, PNG, jpeg, JPG, jpg,
297261
gif, GIF, svg, SVG.
298262
299-
- The GitHub-style anchor IDs are converted to Devto anchor IDs. This is because
300-
GitHub-style anchor IDs, which is what Hugo produces, are different from the
301-
ones produced by Devto. For example, take the following Markdown:
263+
- **Anchor IDs**: The GitHub-style anchor IDs are converted to Devto anchor IDs.
264+
This is because GitHub-style anchor IDs, which is what Hugo produces, are
265+
different from the ones produced by Devto. For example, take the following
266+
Markdown:
302267
303268
```markdown
304269
[`go get -u` vs. `go.mod` (= _*Problem*_)](#go-get--u-vs-gomod--_problem_)

go.mod

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/maelvls/hudevto
22

3-
go 1.23.0
3+
go 1.23.5
44

55
toolchain go1.24.2
66

@@ -61,6 +61,13 @@ require (
6161
github.com/bep/mclib v1.20400.20402 // indirect
6262
github.com/bep/simplecobra v0.6.0 // indirect
6363
github.com/cespare/xxhash/v2 v2.3.0 // indirect
64+
github.com/charmbracelet/colorprofile v0.3.0 // indirect
65+
github.com/charmbracelet/fang v0.2.0 // indirect
66+
github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.1 // indirect
67+
github.com/charmbracelet/x/ansi v0.8.0 // indirect
68+
github.com/charmbracelet/x/cellbuf v0.0.13 // indirect
69+
github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444 // indirect
70+
github.com/charmbracelet/x/term v0.2.1 // indirect
6471
github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect
6572
github.com/dustin/go-humanize v1.0.1 // indirect
6673
github.com/fatih/color v1.18.0 // indirect
@@ -83,8 +90,15 @@ require (
8390
github.com/inconshreveable/mousetrap v1.1.0 // indirect
8491
github.com/jmespath/go-jmespath v0.4.0 // indirect
8592
github.com/kylelemons/godebug v1.1.0 // indirect
93+
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
94+
github.com/maelvls/undent v1.0.0 // indirect
8695
github.com/magefile/mage v1.15.0 // indirect
8796
github.com/makeworld-the-better-one/dither/v2 v2.4.0 // indirect
97+
github.com/muesli/cancelreader v0.2.2 // indirect
98+
github.com/muesli/mango v0.2.0 // indirect
99+
github.com/muesli/mango-cobra v1.2.0 // indirect
100+
github.com/muesli/mango-pflag v0.1.0 // indirect
101+
github.com/muesli/roff v0.1.0 // indirect
88102
github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 // indirect
89103
github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect
90104
github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect
@@ -96,6 +110,7 @@ require (
96110
github.com/spf13/cobra v1.9.1 // indirect
97111
github.com/spf13/fsync v0.10.1 // indirect
98112
github.com/tetratelabs/wazero v1.9.0 // indirect
113+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
99114
github.com/yuin/goldmark-emoji v1.0.6 // indirect
100115
go.opencensus.io v0.24.0 // indirect
101116
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
@@ -175,7 +190,7 @@ require (
175190
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
176191
github.com/perimeterx/marshmallow v1.1.5 // indirect
177192
github.com/pmezard/go-difflib v1.0.0 // indirect
178-
github.com/rivo/uniseg v0.4.3 // indirect
193+
github.com/rivo/uniseg v0.4.7 // indirect
179194
github.com/rogpeppe/go-internal v1.14.1 // indirect
180195
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd // indirect
181196
github.com/sanity-io/litter v1.5.8 // indirect

go.sum

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,20 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf
277277
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
278278
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
279279
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
280+
github.com/charmbracelet/colorprofile v0.3.0 h1:KtLh9uuu1RCt+Hml4s6Hz+kB1PfV3wi++1h5ia65yKQ=
281+
github.com/charmbracelet/colorprofile v0.3.0/go.mod h1:oHJ340RS2nmG1zRGPmhJKJ/jf4FPNNk0P39/wBPA1G0=
282+
github.com/charmbracelet/fang v0.2.0 h1:F2sK2Zjy9kRYz/xUSF1o89DNj2BHKpxVKT7TA21KZi0=
283+
github.com/charmbracelet/fang v0.2.0/go.mod h1:TPpME1GkB6/4uR4wXmPnugTCkqRLgZkWSH+aMds6454=
284+
github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.1 h1:D9AJJuYTN5pvz6mpIGO1ijLKpfTYSHOtKGgwoTQ4Gog=
285+
github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.1/go.mod h1:tRlx/Hu0lo/j9viunCN2H+Ze6JrmdjQlXUQvvArgaOc=
286+
github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
287+
github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
288+
github.com/charmbracelet/x/cellbuf v0.0.13 h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k=
289+
github.com/charmbracelet/x/cellbuf v0.0.13/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
290+
github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444 h1:IJDiTgVE56gkAGfq0lBEloWgkXMk4hl/bmuPoicI4R0=
291+
github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444/go.mod h1:T9jr8CzFpjhFVHjNjKwbAD7KwBNyFnj2pntAO7F2zw0=
292+
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
293+
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
280294
github.com/chaseadamsio/goorgeous v2.0.0+incompatible/go.mod h1:6QaC0vFoKWYDth94dHFNgRT2YkT5FHdQp/Yx15aAAi0=
281295
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
282296
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
@@ -600,6 +614,10 @@ github.com/kyokomi/emoji/v2 v2.2.13 h1:GhTfQa67venUUvmleTNFnb+bi7S3aocF7ZCXU9fSO
600614
github.com/kyokomi/emoji/v2 v2.2.13/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE=
601615
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
602616
github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
617+
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
618+
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
619+
github.com/maelvls/undent v1.0.0 h1:m29cCHf2xKL7xedFEV5kPLYhp9D5XWv9Fhk5HkShZ+E=
620+
github.com/maelvls/undent v1.0.0/go.mod h1:GJliZCA6UKzN0V/GkJUuICibJ73iRxI1D1G7fxRq9q4=
603621
github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
604622
github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg=
605623
github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
@@ -646,6 +664,18 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
646664
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
647665
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
648666
github.com/montanaflynn/stats v0.6.3/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
667+
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
668+
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
669+
github.com/muesli/mango v0.1.0 h1:DZQK45d2gGbql1arsYA4vfg4d7I9Hfx5rX/GCmzsAvI=
670+
github.com/muesli/mango v0.1.0/go.mod h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4=
671+
github.com/muesli/mango v0.2.0 h1:iNNc0c5VLQ6fsMgAqGQofByNUBH2Q2nEbD6TaI+5yyQ=
672+
github.com/muesli/mango v0.2.0/go.mod h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4=
673+
github.com/muesli/mango-cobra v1.2.0 h1:DQvjzAM0PMZr85Iv9LIMaYISpTOliMEg+uMFtNbYvWg=
674+
github.com/muesli/mango-cobra v1.2.0/go.mod h1:vMJL54QytZAJhCT13LPVDfkvCUJ5/4jNUKF/8NC2UjA=
675+
github.com/muesli/mango-pflag v0.1.0 h1:UADqbYgpUyRoBja3g6LUL+3LErjpsOwaC9ywvBWe7Sg=
676+
github.com/muesli/mango-pflag v0.1.0/go.mod h1:YEQomTxaCUp8PrbhFh10UfbhbQrM/xJ4i2PB8VTLLW0=
677+
github.com/muesli/roff v0.1.0 h1:YD0lalCotmYuF5HhZliKWlIx7IEhiXeSfq7hNjFqGF8=
678+
github.com/muesli/roff v0.1.0/go.mod h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig=
649679
github.com/muesli/smartcrop v0.3.0 h1:JTlSkmxWg/oQ1TcLDoypuirdE8Y/jzNirQeLkxpA6Oc=
650680
github.com/muesli/smartcrop v0.3.0/go.mod h1:i2fCI/UorTfgEpPPLWiFBv4pye+YAG78RwcQLUkocpI=
651681
github.com/neurosnap/sentences v1.0.6/go.mod h1:pg1IapvYpWCJJm/Etxeh0+gtMf1rI1STY9S7eUCPbDc=
@@ -694,6 +724,8 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:
694724
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
695725
github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw=
696726
github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
727+
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
728+
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
697729
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
698730
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
699731
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
@@ -781,6 +813,8 @@ github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6
781813
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
782814
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
783815
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
816+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
817+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
784818
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
785819
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
786820
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=

logutil/logutil.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@ func Debugf(format string, a ...interface{}) {
2323
if !EnableDebug {
2424
return
2525
}
26-
fmt.Fprintf(os.Stderr, "%s: ", Gray("debug"))
27-
fmt.Fprintf(os.Stderr, format+"\n", a...)
26+
_, _ = fmt.Fprintf(os.Stderr, "%s: ", Gray("debug"))
27+
_, _ = fmt.Fprintf(os.Stderr, format+"\n", a...)
2828
}
2929

3030
// Prints to stderr.
3131
func Errorf(format string, a ...interface{}) {
32-
fmt.Fprintf(os.Stderr, "%s: ", Red("error"))
33-
fmt.Fprintf(os.Stderr, format+"\n", a...)
32+
_, _ = fmt.Fprintf(os.Stderr, "%s: ", Red("error"))
33+
_, _ = fmt.Fprintf(os.Stderr, format+"\n", a...)
3434
}
3535

3636
// Prints to stderr.
3737
func Infof(format string, a ...interface{}) {
38-
fmt.Fprintf(os.Stderr, "%s: ", Yel("info"))
39-
fmt.Fprintf(os.Stderr, format+"\n", a...)
38+
_, _ = fmt.Fprintf(os.Stderr, "%s: ", Yel("info"))
39+
_, _ = fmt.Fprintf(os.Stderr, format+"\n", a...)
4040
}

0 commit comments

Comments
 (0)