qiita_org 0.1.21 → 0.1.35
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 +4 -4
- data/.gitignore +4 -0
- data/.yardopts +4 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +40 -1
- data/lib/qiita_org.rb +41 -52
- data/lib/qiita_org/.qiita.conf +7 -6
- data/lib/qiita_org/access_qiita.rb +29 -0
- data/lib/qiita_org/all.rb +50 -0
- data/lib/qiita_org/base.rb +98 -0
- data/lib/qiita_org/config.json +1 -0
- data/lib/qiita_org/config.rb +1 -2
- data/lib/qiita_org/error_message.rb +99 -0
- data/lib/qiita_org/get.rb +15 -53
- data/lib/qiita_org/get_multiple_files.rb +36 -0
- data/lib/qiita_org/get_template.rb +24 -48
- data/lib/qiita_org/list.rb +9 -39
- data/lib/qiita_org/md_converter_for_image.rb +7 -7
- data/lib/qiita_org/{check_pc_os.rb → old_programs/check_pc_os.rb} +0 -0
- data/lib/qiita_org/{decide_option.rb → old_programs/decide_option.rb} +6 -2
- data/lib/qiita_org/old_programs/file_open.rb +15 -0
- data/lib/qiita_org/{get_file_path.rb → old_programs/get_file_path.rb} +0 -0
- data/lib/qiita_org/{get_file_url.rb → old_programs/get_file_url.rb} +12 -14
- data/lib/qiita_org/{search_conf_path.rb → old_programs/search_conf_path.rb} +1 -1
- data/lib/qiita_org/old_programs/select_path.rb +16 -0
- data/lib/qiita_org/old_programs/set_config.rb +30 -0
- data/lib/qiita_org/{show_file_and_url.rb → old_programs/show_file_and_url.rb} +45 -36
- data/lib/qiita_org/post.rb +68 -50
- data/lib/qiita_org/template.org +1 -0
- data/lib/qiita_org/upload.rb +110 -0
- data/lib/qiita_org/version.rb +1 -1
- data/tests/test.org +10 -3
- data/tests/test2.org +3 -1
- data/tests/test3.org +2 -1
- data/tests/test4.org +16 -0
- data/tests/twitter_test.org +14 -0
- metadata +1614 -10
- data/lib/qiita_org/hoge.txt +0 -3
- data/tests/test2.md +0 -6
data/lib/qiita_org/config.rb
CHANGED
@@ -7,8 +7,7 @@ class QiitaConfig
|
|
7
7
|
@option = option
|
8
8
|
@input = input
|
9
9
|
if status == "local"
|
10
|
-
|
11
|
-
conf_dir = search.search_conf_path()
|
10
|
+
conf_dir = QiitaBase.new().search_conf_path(Dir.pwd, Dir.home)
|
12
11
|
if @option == "set"
|
13
12
|
@setup = File.join(Dir.pwd, ".qiita.conf")
|
14
13
|
else
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require "colorize"
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
class ErrorMessage
|
5
|
+
def initialize()
|
6
|
+
end
|
7
|
+
|
8
|
+
def access_token_error(access_token)
|
9
|
+
if access_token == ""
|
10
|
+
puts "Please setting ACCESS_TOKEN.".red
|
11
|
+
puts "Hint: qiita config global access_token 'your access_token'.".red
|
12
|
+
puts "Hint: qiita config local access_token 'your access_token'.".red
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def teams_url_error(teams_url)
|
18
|
+
if teams_url == ""
|
19
|
+
puts "Please setting teams_url.".red
|
20
|
+
puts "Hint: qiita config global teams_url 'https://foge.qiita.com/'.".red
|
21
|
+
puts "Hint: qiita config local teams_url 'https://foge.qiita.com/'.".red
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def qiita_access_error(e)
|
27
|
+
puts "#{$!}".red
|
28
|
+
exit
|
29
|
+
end
|
30
|
+
|
31
|
+
def qiita_post_error(response, file)
|
32
|
+
message = response.message
|
33
|
+
if message != "Created"
|
34
|
+
if message != "OK"
|
35
|
+
if message == "Unauthorized"
|
36
|
+
puts "#{message}".red
|
37
|
+
puts "Please check your access_token.".red
|
38
|
+
system "rm #{file}"
|
39
|
+
exit
|
40
|
+
elsif message == "Forbidden"
|
41
|
+
puts "#{message}".red
|
42
|
+
puts "You are not authorized to access this page. please check qiita_id.".red
|
43
|
+
system "rm #{file}"
|
44
|
+
exit
|
45
|
+
elsif message == "Not Found"
|
46
|
+
puts "#{message}".red
|
47
|
+
system "rm #{file}"
|
48
|
+
exit
|
49
|
+
else
|
50
|
+
puts "#{message}".red
|
51
|
+
system "rm #{file}"
|
52
|
+
exit
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def config_set_error(conf_dir)
|
59
|
+
conf_path = File.join(conf_dir, ".qiita.conf")
|
60
|
+
conf = JSON.load(File.read(conf_path))
|
61
|
+
check = true
|
62
|
+
|
63
|
+
if conf["name"] == ""
|
64
|
+
puts "Please set your name in config.".red
|
65
|
+
puts "Hint: qiita config global name 'YOUR NAME'.".red
|
66
|
+
puts "Hint: qiita config local name 'YOUR NAME'.".red
|
67
|
+
# system "rm template.org"
|
68
|
+
check = false
|
69
|
+
end
|
70
|
+
|
71
|
+
if conf["email"] == ""
|
72
|
+
puts "Please set your email in config.".red
|
73
|
+
puts "Hint: qiita config global email 'your_email@example.com'.".red
|
74
|
+
puts "Hint: qiita config local name 'your_email@example.com'.".red
|
75
|
+
check = false
|
76
|
+
end
|
77
|
+
unless check
|
78
|
+
exit
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def md_file_exists?(src, res)
|
83
|
+
unless File.exists?(src.gsub(".org", ".md"))
|
84
|
+
puts "Can not convert org doc to markdown.".red
|
85
|
+
puts 'Please confirm emacs version above 26.'.red
|
86
|
+
puts "Next, check links in the org doc, as converting in emacs by 'ctrl+c, ctrl+e, h, o'.".red
|
87
|
+
exit
|
88
|
+
else
|
89
|
+
p res
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def many_tags_error(tags)
|
94
|
+
if tags.count(",") >= 5
|
95
|
+
puts "The maximum number of tag is five. Please delete some tags.".red
|
96
|
+
exit
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
data/lib/qiita_org/get.rb
CHANGED
@@ -3,56 +3,14 @@ require "json"
|
|
3
3
|
require "open-uri"
|
4
4
|
require "io/console"
|
5
5
|
require "colorize"
|
6
|
-
require "qiita_org/
|
6
|
+
require "qiita_org/error_message.rb"
|
7
|
+
require "qiita_org/access_qiita.rb"
|
7
8
|
|
8
9
|
class QiitaGet
|
9
10
|
def initialize(mode, id)
|
10
11
|
@mode = mode
|
11
12
|
@get_id = id
|
12
|
-
|
13
|
-
@conf_dir = search.search_conf_path()
|
14
|
-
end
|
15
|
-
|
16
|
-
# set config
|
17
|
-
def set_config()
|
18
|
-
conf_path = File.join(@conf_dir, ".qiita.conf")
|
19
|
-
conf = JSON.load(File.read(conf_path))
|
20
|
-
@access_token = conf["access_token"]
|
21
|
-
@teams_url = conf["teams_url"]
|
22
|
-
end
|
23
|
-
|
24
|
-
# select path
|
25
|
-
def select_path()
|
26
|
-
case @mode
|
27
|
-
when "teams"
|
28
|
-
@qiita = @teams_url
|
29
|
-
@path = "api/v2/items?page=1&per_page=100"
|
30
|
-
else
|
31
|
-
@qiita = "https://qiita.com/"
|
32
|
-
@path = "api/v2/authenticated_user/items?page=1&per_page=100"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# access qiita
|
37
|
-
def access_qiita()
|
38
|
-
uri = URI.parse(@qiita + @path)
|
39
|
-
|
40
|
-
headers = { "Authorization" => "Bearer #{@access_token}",
|
41
|
-
"Content-Type" => "application/json" }
|
42
|
-
|
43
|
-
begin
|
44
|
-
response = URI.open(
|
45
|
-
"#{uri}",
|
46
|
-
"Authorization" => "#{headers["Authorization"]}",
|
47
|
-
)
|
48
|
-
#raise "NOT FOUND: # {@get_id} report".red
|
49
|
-
rescue => e
|
50
|
-
puts "#{$!}".red
|
51
|
-
exit
|
52
|
-
else
|
53
|
-
p response
|
54
|
-
@items = JSON.parse(response.read)
|
55
|
-
end
|
13
|
+
@base = QiitaBase.new()
|
56
14
|
end
|
57
15
|
|
58
16
|
# select report
|
@@ -79,7 +37,7 @@ class QiitaGet
|
|
79
37
|
File.write(filename, item["body"])
|
80
38
|
convert_md_to_org()
|
81
39
|
write_header_on_org()
|
82
|
-
puts_massage_and_delete_md()
|
40
|
+
puts_massage_and_delete_md(item)
|
83
41
|
end
|
84
42
|
end
|
85
43
|
end
|
@@ -127,9 +85,9 @@ EOS
|
|
127
85
|
end
|
128
86
|
|
129
87
|
# see massage and delete id.md
|
130
|
-
def puts_massage_and_delete_md()
|
88
|
+
def puts_massage_and_delete_md(item)
|
131
89
|
puts "created #{@id}.org".green
|
132
|
-
puts "URL: #{
|
90
|
+
puts "URL: #{item["url"]}"
|
133
91
|
system "rm -f #{@id}.md"
|
134
92
|
end
|
135
93
|
|
@@ -142,7 +100,7 @@ EOS
|
|
142
100
|
end
|
143
101
|
@path = "api/v2/items/#{@get_id}"
|
144
102
|
|
145
|
-
access_qiita()
|
103
|
+
@items = AccessQiita.new(@access_token, @qiita, @path).access_qiita()
|
146
104
|
|
147
105
|
@title = @items["title"]
|
148
106
|
@id = @items["id"]
|
@@ -156,14 +114,18 @@ EOS
|
|
156
114
|
File.write(filename, @items["body"])
|
157
115
|
convert_md_to_org()
|
158
116
|
write_header_on_org()
|
159
|
-
puts_massage_and_delete_md()
|
117
|
+
puts_massage_and_delete_md(@items)
|
160
118
|
end
|
161
119
|
|
162
120
|
def run()
|
163
|
-
set_config()
|
121
|
+
@access_token, @teams_url, @display, @ox_qmd_load_path = @base.set_config()
|
122
|
+
if @mode == "teams"
|
123
|
+
ErrorMessage.new().teams_url_error(@teams_url)
|
124
|
+
end
|
125
|
+
|
164
126
|
if @get_id == nil
|
165
|
-
|
166
|
-
access_qiita()
|
127
|
+
@qiita, @path = @base.select_access_path(@mode, @teams_url)
|
128
|
+
@items = AccessQiita.new(@access_token, @qiita, @path).access_qiita()
|
167
129
|
select_report()
|
168
130
|
else
|
169
131
|
get_id_report()
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "colorize"
|
2
|
+
require "qiita_org/post.rb"
|
3
|
+
require "qiita_org/upload.rb"
|
4
|
+
|
5
|
+
class GetMultipleFiles
|
6
|
+
def initialize(files, os, type)
|
7
|
+
@files = files
|
8
|
+
@option = nil
|
9
|
+
@os = os
|
10
|
+
@type = type
|
11
|
+
unless @files[-1].match(/(.+).org/)
|
12
|
+
@option = @files[-1]
|
13
|
+
@files = @files[0..-2]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def run()
|
18
|
+
puts "#{@type} files: #{@files}".green
|
19
|
+
@files.each do |file|
|
20
|
+
mode = @option || QiitaBase.new().pick_up_option(file)
|
21
|
+
puts "qiita #{@type} #{file} #{mode}".green
|
22
|
+
if @type == "post"
|
23
|
+
qiita = QiitaPost.new(file, mode, @os)
|
24
|
+
begin
|
25
|
+
qiita.select_option(mode)
|
26
|
+
rescue RuntimeError => e
|
27
|
+
puts $!
|
28
|
+
else
|
29
|
+
qiita.run
|
30
|
+
end
|
31
|
+
elsif @type == "upload"
|
32
|
+
QiitaFileUpLoad.new(file, mode, @os).upload()
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,17 +1,13 @@
|
|
1
1
|
require "fileutils"
|
2
2
|
require "colorize"
|
3
3
|
require "kconv"
|
4
|
-
require "qiita_org/
|
4
|
+
require "qiita_org/error_message.rb"
|
5
5
|
|
6
6
|
class QiitaGetTemplate
|
7
|
-
def initialize(os)
|
7
|
+
def initialize(os, filename)
|
8
8
|
@os = os
|
9
|
-
|
10
|
-
|
11
|
-
@conf_dir = search.search_conf_path()
|
12
|
-
set_name_and_email()
|
13
|
-
# check_write_header()
|
14
|
-
check_write_contents()
|
9
|
+
@filename = filename
|
10
|
+
@conf_dir = QiitaBase.new().search_conf_path(Dir.pwd, Dir.home)
|
15
11
|
end
|
16
12
|
|
17
13
|
def get_macos_version()
|
@@ -20,9 +16,9 @@ class QiitaGetTemplate
|
|
20
16
|
m = []
|
21
17
|
m = version.match(/ProductName:\t(.+)\nProductVersion:\t(.+)\nBuildVersion:\t(.+)\n/)
|
22
18
|
system 'rm hoge.txt'
|
23
|
-
conts = File.read(
|
19
|
+
conts = File.read(@filename)
|
24
20
|
conts << "![#{m[1]}-#{m[2]}](https://img.shields.io/badge/#{m[1].gsub(" ", "")}-#{m[2]}-brightgreen) "
|
25
|
-
File.write(
|
21
|
+
File.write(@filename, conts) # + "# {m[1]}: # {m[2]}\n")
|
26
22
|
end
|
27
23
|
|
28
24
|
def get_windowsos_version()
|
@@ -35,9 +31,9 @@ class QiitaGetTemplate
|
|
35
31
|
m2 = version2.match(/OSArchitecture\n(.+)-bit/)
|
36
32
|
system 'rm hoge1.txt'
|
37
33
|
system 'rm hoge2.txt'
|
38
|
-
conts = File.read(
|
34
|
+
conts = File.read(@filename)
|
39
35
|
conts << "![#{m1[1]}-#{m1[2]}](https://img.shields.io/badge/#{m1[1].gsub(" ", "")}#{m1[2]}-#{m2[1]}bit-brightgreen) "
|
40
|
-
File.write(
|
36
|
+
File.write(@filename, conts) # + "# {m[1]}: # {m[2]}\n")
|
41
37
|
end
|
42
38
|
|
43
39
|
def get_ubuntu_version()
|
@@ -46,9 +42,9 @@ class QiitaGetTemplate
|
|
46
42
|
m = []
|
47
43
|
m = version.match(/(.+) (.+) LTS /)
|
48
44
|
system 'rm hoge.txt'
|
49
|
-
conts = File.read(
|
45
|
+
conts = File.read(@filename)
|
50
46
|
conts << "![#{m[1]}-#{m[2]}](https://img.shields.io/badge/#{m[1]}-#{m[2]}-brightgreen) "
|
51
|
-
File.write(
|
47
|
+
File.write(@filename, conts)
|
52
48
|
end
|
53
49
|
|
54
50
|
def get_ruby_version()
|
@@ -57,9 +53,9 @@ class QiitaGetTemplate
|
|
57
53
|
m = []
|
58
54
|
m = version.match(/ruby (.+) \((.+)/)
|
59
55
|
system 'rm hoge.txt'
|
60
|
-
conts = File.read(
|
56
|
+
conts = File.read(@filename)
|
61
57
|
conts << "![ruby-#{m[1]}](https://img.shields.io/badge/ruby-#{m[1].gsub(" ", "")}-brightgreen) "
|
62
|
-
File.write(
|
58
|
+
File.write(@filename, conts) # + "ruby: # {m[1]}\n")
|
63
59
|
end
|
64
60
|
|
65
61
|
# cp template.org
|
@@ -67,11 +63,11 @@ class QiitaGetTemplate
|
|
67
63
|
lib = File.expand_path("../../../lib", __FILE__)
|
68
64
|
cp_file = File.join(lib, "qiita_org", "template.org")
|
69
65
|
|
70
|
-
if File.exists?("
|
71
|
-
puts "
|
66
|
+
if File.exists?("./#{@filename}")
|
67
|
+
puts "#{@filename} exists.".red
|
72
68
|
exit
|
73
69
|
else
|
74
|
-
FileUtils.cp(cp_file,
|
70
|
+
FileUtils.cp(cp_file, @filename, verbose: true)
|
75
71
|
end
|
76
72
|
end
|
77
73
|
|
@@ -106,41 +102,21 @@ class QiitaGetTemplate
|
|
106
102
|
end
|
107
103
|
end
|
108
104
|
|
109
|
-
def check_write_header()
|
110
|
-
["name", "email"].each do |src|
|
111
|
-
print "Write your #{src}?(y/n) "
|
112
|
-
ans = STDIN.gets.chomp
|
113
|
-
next if ans == "n"
|
114
|
-
if ans == "y"
|
115
|
-
send("get_#{src}")
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
def get_name()
|
121
|
-
conts = File.readlines("template.org")
|
122
|
-
p "Type your name"
|
123
|
-
name = STDIN.gets
|
124
|
-
conts[3] = "#+AUTHOR: #{name}"
|
125
|
-
File.write("template.org", conts.join)
|
126
|
-
end
|
127
|
-
|
128
|
-
def get_email()
|
129
|
-
conts = File.readlines("template.org")
|
130
|
-
p "Type your email"
|
131
|
-
email = STDIN.gets
|
132
|
-
conts[4] = "#+EMAIL: (concat \"#{email.chomp}\")\n"
|
133
|
-
File.write("template.org", conts.join)
|
134
|
-
end
|
135
|
-
|
136
105
|
def set_name_and_email()
|
137
106
|
conf_path = File.join(@conf_dir, ".qiita.conf")
|
138
107
|
conf = JSON.load(File.read(conf_path))
|
139
108
|
name = conf["name"]
|
140
109
|
email = conf["email"]
|
141
|
-
conts = File.readlines(
|
110
|
+
conts = File.readlines(@filename)
|
142
111
|
conts[3] = "#+AUTHOR: #{name}\n"
|
143
112
|
conts[4] = "#+EMAIL: (concat \"#{email}\")\n"
|
144
|
-
File.write(
|
113
|
+
File.write(@filename, conts.join)
|
114
|
+
end
|
115
|
+
|
116
|
+
def run()
|
117
|
+
ErrorMessage.new().config_set_error(@conf_dir)
|
118
|
+
cp_template()
|
119
|
+
set_name_and_email()
|
120
|
+
check_write_contents()
|
145
121
|
end
|
146
122
|
end
|
data/lib/qiita_org/list.rb
CHANGED
@@ -2,50 +2,21 @@ require "net/https"
|
|
2
2
|
require "json"
|
3
3
|
require "open-uri"
|
4
4
|
require "colorize"
|
5
|
-
require "qiita_org/
|
5
|
+
require "qiita_org/error_message.rb"
|
6
|
+
require "qiita_org/access_qiita.rb"
|
6
7
|
|
7
8
|
class QiitaList
|
8
9
|
def initialize(mode)
|
9
10
|
@mode = mode
|
10
|
-
|
11
|
-
@
|
12
|
-
|
13
|
-
|
14
|
-
access_qiita()
|
15
|
-
view_list()
|
16
|
-
end
|
17
|
-
|
18
|
-
def set_config()
|
19
|
-
conf_path = File.join(@conf_dir, ".qiita.conf")
|
20
|
-
conf = JSON.load(File.read(conf_path))
|
21
|
-
@access_token = conf["access_token"]
|
22
|
-
@teams_url = conf["teams_url"]
|
23
|
-
end
|
24
|
-
|
25
|
-
# select path
|
26
|
-
def select_path()
|
27
|
-
case @mode
|
28
|
-
when "teams"
|
29
|
-
@qiita = @teams_url
|
30
|
-
@path = "api/v2/items?page=1&per_page=100"
|
31
|
-
else
|
32
|
-
@qiita = "https://qiita.com/"
|
33
|
-
@path = "api/v2/authenticated_user/items?page=1&per_page=100"
|
11
|
+
@base = QiitaBase.new
|
12
|
+
@access_token, @teams_url, @display, @ox_qmd_load_path = @base.set_config()
|
13
|
+
if @mode == "teams"
|
14
|
+
ErrorMessage.new().teams_url_error(@teams_url)
|
34
15
|
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# access qiita
|
38
|
-
def access_qiita()
|
39
|
-
uri = URI.parse(@qiita + @path)
|
40
16
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
response = URI.open(
|
45
|
-
"#{uri}",
|
46
|
-
"Authorization" => "#{headers["Authorization"]}",
|
47
|
-
)
|
48
|
-
@items = JSON.parse(response.read)
|
17
|
+
@qiita, @path = @base.select_access_path(@mode, @teams_url)
|
18
|
+
@items = AccessQiita.new(@access_token, @qiita, @path).access_qiita()
|
19
|
+
view_list()
|
49
20
|
end
|
50
21
|
|
51
22
|
def view_list()
|
@@ -60,6 +31,5 @@ class QiitaList
|
|
60
31
|
end
|
61
32
|
puts ""
|
62
33
|
end
|
63
|
-
# p @items[0]["user"]["id"]
|
64
34
|
end
|
65
35
|
end
|