tldr-cli 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a61855908c1a17de1bdf6c0eaeaa263698d2e3e0d581887b230e146c0e049078
4
- data.tar.gz: ea63efc92bdec797db099fb7e7f20c1f56aec73eb168d131cce3cea4eeb35649
3
+ metadata.gz: 6bc8340ef090cdcfd533ff82ad775c7ede0266eb86f8e2339413c602e5e5d56f
4
+ data.tar.gz: f7876530905c3b140c1e0496545e2152a52ac02eb238015b6591097bdca829d6
5
5
  SHA512:
6
- metadata.gz: 2ea75cddc8d4a70df210069b7fff660e9f1d748a7e094a1cc07e17a8aebcbd0ddabee7d050efe86eb8855565fa35e8cc793b5799b2d0f684ab77ba40fc290c3a
7
- data.tar.gz: f6cb13f8c1ba4f4992e824db3d1d6c8322921b3fc1933ea830fc5976c7cc6a2b402cfee1e4821982542d7dd5cf1c329c8a3b6631eb32d0e35aea082b9e4ac28c
6
+ metadata.gz: 95ff5d7ceb347ce99837f9c03ac552082456daf00b59759d83fb64fa981d4c8c53b22f2329a8796f3b90b30f5acdfd7fa9e8d0d72573065995df66f04a15ff93
7
+ data.tar.gz: 2a65eec38bff5e22f050c240ea21512c6c8e112e1932f3b6b73e3e0a1c00abe0ad5c35c6f806606a0ed9eee1b2241e7307a36d18b5f87cb5de4037feb77c8558
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
+
1
2
  ## [Unreleased]
2
3
 
4
+ ## [0.3.0] - 2024-03-06
5
+
6
+ - Added support to personal local pages created at ~/.config/tldr/pages
7
+
8
+ ## [0.2.0] - 2024-03-06
9
+
10
+ - Added support to page languages
11
+
3
12
  ## [0.1.0] - 2023-05-18
4
13
 
5
14
  - Initial release
15
+
16
+
data/README.md CHANGED
@@ -1,34 +1,28 @@
1
- # Tldr::Cli
1
+ # tldr-cli
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/tldr/cli`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ This is a simple and tiny tldr-pages client write using Ruby that works well.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
6
5
 
7
6
  ## Installation
8
7
 
9
- Add this line to your application's Gemfile:
10
-
11
- ```ruby
12
- gem 'tldr-cli'
13
- ```
14
-
15
- And then execute:
16
-
17
- $ bundle install
18
-
19
- Or install it yourself as:
20
-
21
8
  $ gem install tldr-cli
22
9
 
23
10
  ## Usage
24
11
 
25
- TODO: Write usage instructions here
12
+ $ tldr [command]
13
+
14
+ Example:
15
+
16
+ $ tldr tar
26
17
 
27
- ## Development
18
+ ## Roadmap
28
19
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
20
+ - [x] basic cli interface
21
+ - [x] tldr-pages markdown content fetch
22
+ - [x] tldr-pages markdown parsing and presentation
23
+ - [ ] implement content caching
24
+ - [ ] content local cache update
30
25
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
26
 
33
27
  ## Contributing
34
28
 
@@ -15,6 +15,9 @@ module TLDR
15
15
  URL_SUFFIX =
16
16
  ENV.fetch('TLDR_URL_SUFFIX', '.md')
17
17
 
18
+ LOCAL_BASE =
19
+ ENV.fetch('TLDR_LOCAL_BASE', "#{Dir.home}/.config/tldr/pages")
20
+
18
21
  usage do
19
22
  program 'tldr'
20
23
 
@@ -63,6 +66,16 @@ module TLDR
63
66
  # desc 'list all entries in the local database'
64
67
  # end
65
68
 
69
+ option :lang do
70
+ optional
71
+ short '-l'
72
+ long '--lang=string'
73
+ default 'en'
74
+ permit %w[ar bn bs ca cs da de en es fa fi fr hi id it ja ko lo ml ne nl no pl pt_BR pt_PT ro ru sh sr sv ta th
75
+ tr uk uz zh zh_TW]
76
+ desc 'select language of page to be displayed (default: en)'
77
+ end
78
+
66
79
  option :platform do
67
80
  optional
68
81
  short '-p'
@@ -72,6 +85,15 @@ module TLDR
72
85
  desc 'select platform, supported are linux / osx / sunos / windows / common'
73
86
  end
74
87
 
88
+ option :source do
89
+ optional
90
+ short '-s'
91
+ long '--source=string'
92
+ default 'local'
93
+ permit %w[local remote]
94
+ desc 'select page source to be local or remote (default: local)'
95
+ end
96
+
75
97
  argument :query do
76
98
  arity zero_or_more
77
99
  end
@@ -86,15 +108,21 @@ module TLDR
86
108
  elsif params[:version]
87
109
  version
88
110
  elsif params[:query]
89
- query = params[:query]
90
- platform = params[:platform]
111
+ query, lang, platform, source =
112
+ params.to_h.values_at(:query, :lang, :platform, :source)
113
+
114
+ page_path = "/#{platform}/#{query}"
91
115
 
92
- response = Faraday.get("#{URL_BASE}/#{platform}/#{query}#{URL_SUFFIX}")
116
+ if source == 'local' && local_page?(local_path(page_path, lang: lang))
117
+ content = File.read(local_path(page_path, lang: lang))
118
+ render_markdown(content)
119
+ return
120
+ end
93
121
 
122
+ response = Faraday.get(remote_path(page_path, lang: lang))
94
123
  return not_found unless response.success?
95
124
 
96
- markdown = TTY::Markdown.parse(response.body, symbols: { override: { bullet: '-' } })
97
- puts markdown
125
+ render_markdown(response.body)
98
126
  else
99
127
  print help
100
128
  end
@@ -102,6 +130,10 @@ module TLDR
102
130
 
103
131
  private
104
132
 
133
+ def render_markdown(content)
134
+ puts TTY::Markdown.parse(content, symbols: { override: { bullet: '-' } })
135
+ end
136
+
105
137
  def version
106
138
  puts <<~MESSAGE
107
139
  tldr v#{TLDR::CLI::VERSION} (v#{TLDR::CLI::VERSION})
@@ -116,6 +148,20 @@ module TLDR
116
148
  Submit new pages here: https://github.com/tldr-pages/tldr
117
149
  MESSAGE
118
150
  end
151
+
152
+ def local_page?(page_path)
153
+ File.exist?(page_path)
154
+ end
155
+
156
+ def local_path(fragment, lang: 'en', relative: false)
157
+ lang = lang == 'en' ? '' : ".#{lang}"
158
+ "#{relative ? '' : LOCAL_BASE}#{lang}#{fragment}#{URL_SUFFIX}"
159
+ end
160
+
161
+ def remote_path(fragment, lang: 'en', relative: false)
162
+ lang = lang == 'en' ? '' : ".#{lang}"
163
+ "#{relative ? '' : URL_BASE}#{lang}#{fragment}#{URL_SUFFIX}"
164
+ end
119
165
  end
120
166
  end
121
167
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TLDR
4
4
  module CLI
5
- VERSION = "0.1.0"
5
+ VERSION = '0.3.0'
6
6
  end
7
7
  end
data/new.patch ADDED
@@ -0,0 +1,103 @@
1
+ lib/tldr/cli/commands.rb | 57 +++++++++++++++++++++++++++++++++++++++++++-----
2
+ 1 file changed, 52 insertions(+), 5 deletions(-)
3
+
4
+ diff --git a/lib/tldr/cli/commands.rb b/lib/tldr/cli/commands.rb
5
+ index c9aea38..8998696 100644
6
+ --- a/lib/tldr/cli/commands.rb
7
+ +++ b/lib/tldr/cli/commands.rb
8
+ @@ -15,6 +15,9 @@ module TLDR
9
+ URL_SUFFIX =
10
+ ENV.fetch('TLDR_URL_SUFFIX', '.md')
11
+
12
+ + LOCAL_BASE =
13
+ + ENV.fetch('TLDR_LOCAL_BASE', "#{Dir.home}/.config/tldr/pages")
14
+ +
15
+ usage do
16
+ program 'tldr'
17
+
18
+ @@ -63,6 +66,25 @@ module TLDR
19
+ # desc 'list all entries in the local database'
20
+ # end
21
+
22
+ + option :lang do
23
+ + optional
24
+ + short '-l'
25
+ + long '--lang=string'
26
+ + default 'en'
27
+ + permit %w[ar bn bs ca cs da de en es fa fi fr hi id it ja ko lo ml ne nl no pl pt_BR pt_PT ro ru sh sr sv ta th tr uk uz zh zh_TW]
28
+ + desc 'select language of page to be displayed (default: en)'
29
+ + end
30
+ +
31
+ + option :source do
32
+ + optional
33
+ + short '-s'
34
+ + long '--source=string'
35
+ + default 'local'
36
+ + permit %w[local remote]
37
+ + desc 'select page source to be local or remote (default: local)'
38
+ + end
39
+ +
40
+ +
41
+ option :platform do
42
+ optional
43
+ short '-p'
44
+ @@ -86,15 +108,22 @@ module TLDR
45
+ elsif params[:version]
46
+ version
47
+ elsif params[:query]
48
+ - query = params[:query]
49
+ - platform = params[:platform]
50
+ + query, lang, source, platform =
51
+ + params.to_h.values_at(:query, :lang, :source, :platform)
52
+ +
53
+ + page_path = "/#{platform}/#{query}"
54
+
55
+ - response = Faraday.get("#{URL_BASE}/#{platform}/#{query}#{URL_SUFFIX}")
56
+ + if source == 'local' && local_page?(local_path(page_path, lang: lang))
57
+ + content = File.read(local_path(page_path, lang: lang))
58
+ + render_markdown(content)
59
+ + return
60
+ + end
61
+
62
+ + puts "Fetching page from #{source} source..." if
63
+ + response = Faraday.get(remote_path(page_path, lang: lang))
64
+ return not_found unless response.success?
65
+
66
+ - markdown = TTY::Markdown.parse(response.body, symbols: { override: { bullet: '-' } })
67
+ - puts markdown
68
+ + render_markdown(response.body)
69
+ else
70
+ print help
71
+ end
72
+ @@ -102,6 +131,10 @@ module TLDR
73
+
74
+ private
75
+
76
+ + def render_markdown(content)
77
+ + puts TTY::Markdown.parse(content, symbols: { override: { bullet: '-' } })
78
+ + end
79
+ +
80
+ def version
81
+ puts <<~MESSAGE
82
+ tldr v#{TLDR::CLI::VERSION} (v#{TLDR::CLI::VERSION})
83
+ @@ -116,6 +149,20 @@ module TLDR
84
+ Submit new pages here: https://github.com/tldr-pages/tldr
85
+ MESSAGE
86
+ end
87
+ +
88
+ + def local_path(fragment, lang: 'en', relative: false)
89
+ + lang = lang == 'en' ? '' : ".#{lang.to_s}"
90
+ + "#{relative ? '' : LOCAL_BASE}#{lang}#{fragment}#{URL_SUFFIX}"
91
+ + end
92
+ +
93
+ + def remote_path(fragment, lang: 'en', relative: false)
94
+ + lang = lang == 'en' ? '' : ".#{lang.to_s}"
95
+ + "#{relative ? '' : URL_BASE}#{lang}#{fragment}#{URL_SUFFIX}"
96
+ + end
97
+ +
98
+ + def local_page?(page_path)
99
+ + File.exist?(page_path)
100
+ + end
101
+ end
102
+ end
103
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tldr-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Vinciguerra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-18 00:00:00.000000000 Z
11
+ date: 2024-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -72,6 +72,7 @@ files:
72
72
  - lib/tldr/cli.rb
73
73
  - lib/tldr/cli/commands.rb
74
74
  - lib/tldr/cli/version.rb
75
+ - new.patch
75
76
  - sig/tldr/cli.rbs
76
77
  - tldr-cli.gemspec
77
78
  homepage: https://github.com/dvinciguerra/tldr-cli
@@ -97,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
98
  - !ruby/object:Gem::Version
98
99
  version: '0'
99
100
  requirements: []
100
- rubygems_version: 3.4.13
101
+ rubygems_version: 3.4.22
101
102
  signing_key:
102
103
  specification_version: 4
103
104
  summary: A Ruby based command-line client for tldr