tldr-cli 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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