qiita_org 0.1.21 → 0.1.35

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.yardopts +4 -0
  4. data/Gemfile +7 -0
  5. data/Gemfile.lock +40 -1
  6. data/lib/qiita_org.rb +41 -52
  7. data/lib/qiita_org/.qiita.conf +7 -6
  8. data/lib/qiita_org/access_qiita.rb +29 -0
  9. data/lib/qiita_org/all.rb +50 -0
  10. data/lib/qiita_org/base.rb +98 -0
  11. data/lib/qiita_org/config.json +1 -0
  12. data/lib/qiita_org/config.rb +1 -2
  13. data/lib/qiita_org/error_message.rb +99 -0
  14. data/lib/qiita_org/get.rb +15 -53
  15. data/lib/qiita_org/get_multiple_files.rb +36 -0
  16. data/lib/qiita_org/get_template.rb +24 -48
  17. data/lib/qiita_org/list.rb +9 -39
  18. data/lib/qiita_org/md_converter_for_image.rb +7 -7
  19. data/lib/qiita_org/{check_pc_os.rb → old_programs/check_pc_os.rb} +0 -0
  20. data/lib/qiita_org/{decide_option.rb → old_programs/decide_option.rb} +6 -2
  21. data/lib/qiita_org/old_programs/file_open.rb +15 -0
  22. data/lib/qiita_org/{get_file_path.rb → old_programs/get_file_path.rb} +0 -0
  23. data/lib/qiita_org/{get_file_url.rb → old_programs/get_file_url.rb} +12 -14
  24. data/lib/qiita_org/{search_conf_path.rb → old_programs/search_conf_path.rb} +1 -1
  25. data/lib/qiita_org/old_programs/select_path.rb +16 -0
  26. data/lib/qiita_org/old_programs/set_config.rb +30 -0
  27. data/lib/qiita_org/{show_file_and_url.rb → old_programs/show_file_and_url.rb} +45 -36
  28. data/lib/qiita_org/post.rb +68 -50
  29. data/lib/qiita_org/template.org +1 -0
  30. data/lib/qiita_org/upload.rb +110 -0
  31. data/lib/qiita_org/version.rb +1 -1
  32. data/tests/test.org +10 -3
  33. data/tests/test2.org +3 -1
  34. data/tests/test3.org +2 -1
  35. data/tests/test4.org +16 -0
  36. data/tests/twitter_test.org +14 -0
  37. metadata +1614 -10
  38. data/lib/qiita_org/hoge.txt +0 -3
  39. data/tests/test2.md +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08e12d5c8b442eedf009fa8f48b4e2f0b1af5379600ccf15a1c1d1d035481a05'
4
- data.tar.gz: 3841ad75ffacd131b9f6dd55fa7dfd098e3ea78af2c1cf539158c193efaae356
3
+ metadata.gz: 6c72fb0ca25fa98881ffa0e4f000a6d18c0ad742f7771b501d5b8cc8a7d1877f
4
+ data.tar.gz: 6e131d7a573369378f002f155900851f1b11f7fe522778c9ee637b3098596a1c
5
5
  SHA512:
6
- metadata.gz: ca8bfb7e6d185931783d261776ae3335478df595b7411afd07a8fbf71f1f4e6d509eece8f661af95d97f4add8559f8b5bbf2d0b8cacee208077d1112c9e4e94e
7
- data.tar.gz: f1a7b942323d6294f38bc4f21ca70ed081ca4bb331dad8d40e171fd3499bb7f6040fd3eef75a133fb00500cd209298d49156f0f0d97956a0d65c021fa34e41f1
6
+ metadata.gz: fab87567e4e52f3f3bb74f3cd32807e7b1ef3bcfd19fbd019891a0218489373d5ec1be694389c5815be11fc5a397287d9203e3bde9e04048a6a2a28f43e3d88a
7
+ data.tar.gz: 0daa3405f652e9c79d91e02f3b88403dc86f3d6f67012cd0f8e73123b6141d8651ae01c66ed85eb6d40d6bcdd27bea10a5c67e9a1ccd33dc3cef59c77a343cb1
data/.gitignore CHANGED
@@ -6,6 +6,10 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /gems/
10
+ /gems/*
11
+ /doc/*
12
+ !/doc/.keep
9
13
 
10
14
  # rspec failure tracking
11
15
  .rspec_status
@@ -0,0 +1,4 @@
1
+ --protected
2
+ --no-private
3
+ --markup markdown
4
+ --plugin activesupport-concern
data/Gemfile CHANGED
@@ -5,3 +5,10 @@ gemspec
5
5
 
6
6
  gem "rake", "~> 12.0"
7
7
  gem "rspec", "~> 3.0"
8
+
9
+ group :development do
10
+ gem 'yard'
11
+ gem 'guard-yard'
12
+ gem 'yard-activesupport-concern'
13
+ gem 'redcarpet'
14
+ end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qiita_org (0.1.20)
4
+ qiita_org (0.1.34)
5
5
  colorize
6
6
  command_line (> 2.0.0)
7
7
  fileutils
@@ -10,11 +10,42 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
+ coderay (1.1.3)
13
14
  colorize (0.8.1)
14
15
  command_line (2.0.1)
15
16
  diff-lcs (1.4.4)
17
+ ffi (1.13.1)
16
18
  fileutils (1.4.1)
19
+ formatador (0.2.5)
20
+ guard (2.16.2)
21
+ formatador (>= 0.2.4)
22
+ listen (>= 2.7, < 4.0)
23
+ lumberjack (>= 1.0.12, < 2.0)
24
+ nenv (~> 0.1)
25
+ notiffany (~> 0.0)
26
+ pry (>= 0.9.12)
27
+ shellany (~> 0.0)
28
+ thor (>= 0.18.1)
29
+ guard-yard (2.2.1)
30
+ guard (>= 1.1.0)
31
+ yard (>= 0.7.0)
32
+ listen (3.3.1)
33
+ rb-fsevent (~> 0.10, >= 0.10.3)
34
+ rb-inotify (~> 0.9, >= 0.9.10)
35
+ lumberjack (1.2.8)
36
+ method_source (1.0.0)
37
+ nenv (0.3.0)
38
+ notiffany (0.1.3)
39
+ nenv (~> 0.1)
40
+ shellany (~> 0.0)
41
+ pry (0.13.1)
42
+ coderay (~> 1.1)
43
+ method_source (~> 1.0)
17
44
  rake (12.3.3)
45
+ rb-fsevent (0.10.4)
46
+ rb-inotify (0.10.1)
47
+ ffi (~> 1.0)
48
+ redcarpet (3.5.0)
18
49
  rspec (3.9.0)
19
50
  rspec-core (~> 3.9.0)
20
51
  rspec-expectations (~> 3.9.0)
@@ -28,16 +59,24 @@ GEM
28
59
  diff-lcs (>= 1.2.0, < 2.0)
29
60
  rspec-support (~> 3.9.0)
30
61
  rspec-support (3.9.3)
62
+ shellany (0.0.1)
31
63
  thor (1.0.1)
64
+ yard (0.9.25)
65
+ yard-activesupport-concern (0.0.1)
66
+ yard (>= 0.8)
32
67
 
33
68
  PLATFORMS
34
69
  ruby
35
70
 
36
71
  DEPENDENCIES
37
72
  bundler (> 1.16)
73
+ guard-yard
38
74
  qiita_org!
39
75
  rake (~> 12.0)
76
+ redcarpet
40
77
  rspec (~> 3.0)
78
+ yard
79
+ yard-activesupport-concern
41
80
 
42
81
  BUNDLED WITH
43
82
  2.1.4
@@ -7,21 +7,17 @@ require "qiita_org/post"
7
7
  require "qiita_org/config"
8
8
  require "qiita_org/get"
9
9
  require "qiita_org/list"
10
+ require "qiita_org/all"
10
11
  require "qiita_org/get_template"
11
- require "qiita_org/check_pc_os"
12
- require "qiita_org/get_file_path"
13
- require "qiita_org/show_file_and_url"
14
- require "qiita_org/decide_option"
15
- #require "qiita_org/qiita_org_thor"
12
+ require "qiita_org/upload"
13
+ require "qiita_org/get_multiple_files"
14
+ require "qiita_org/base"
16
15
 
17
16
  module QiitaOrg
18
17
  class CLI < Thor
19
- # def initialize(*argv)
20
- # super(*argv)
21
- # end
22
- #
23
18
  def initialize(*argv)
24
19
  super(*argv)
20
+ @base = QiitaBase.new()
25
21
  end
26
22
 
27
23
  desc "say_hello", "say_hello"
@@ -34,43 +30,44 @@ module QiitaOrg
34
30
  desc "post [FILE] [private/public/teams]", "post to qiita from org"
35
31
 
36
32
  def post(*argv)
37
- checkos = CheckPcOs.new
38
- os = checkos.return_os()
39
-
40
- p ["in qiita_org.rb", argv]
41
- p file = argv[0] || "README.org"
42
- p mode = argv[1] || DecideOption.new(file).decide_option()
43
- qiita = QiitaPost.new(file, mode, os)
44
- begin
45
- qiita.select_option(mode)
46
- rescue RuntimeError => e
47
- puts $!
48
- else
49
- qiita.run
33
+ os = @base.check_pc_os()
34
+
35
+ if argv.size > 2
36
+ GetMultipleFiles.new(argv, os, "post").run()
37
+ else #if argv.size > 1
38
+ if argv[-1].match(/(.+).org/)
39
+ GetMultipleFiles.new(argv, os, "post").run()
40
+ else
41
+ p ["in qiita_org.rb", argv]
42
+ p file = argv[0] || "README.org"
43
+ p mode = argv[1] || @base.pick_up_option(file)
44
+ qiita = QiitaPost.new(file, mode, os)
45
+ begin
46
+ qiita.select_option(mode)
47
+ rescue RuntimeError => e
48
+ puts $!
49
+ else
50
+ qiita.run
51
+ end
52
+ end
50
53
  end
51
54
  end
52
55
 
53
56
  desc "upload [FILE] [teams/public/private]", "upload about image to qiita"
54
57
 
55
58
  def upload(*argv)
56
- checkos = CheckPcOs.new
57
- os = checkos.return_os()
58
-
59
- p file = argv[0] || "README.org"
60
- p mode = argv[1] || "private"
61
-
62
- getpath = GetFilePath.new(file)
63
- paths = getpath.get_file_path()
64
- unless paths.empty?
65
- showfile = ShowFile.new(paths, file, mode, os)
66
- showfile.open_file_dir()
67
- showfile.open_qiita()
59
+ os = @base.check_pc_os()
68
60
 
69
- puts "Input file URL's on #{file}? (y/n)".green
70
- ans = STDIN.getch
61
+ if argv.size > 2
62
+ GetMultipleFiles.new(argv, os, "upload").run()
63
+ else #if argv.size > 1
64
+ if argv[-1].match(/(.+).org/)
65
+ GetMultipleFiles.new(argv, os, "upload").run()
66
+ else
67
+ p file = argv[0] || "README.org"
68
+ p mode = argv[1] || @base.pick_up_option(file)
71
69
 
72
- if ans == "y"
73
- showfile.input_url_to_org()
70
+ qiita = QiitaFileUpLoad.new(file, mode, os).upload()
74
71
  end
75
72
  end
76
73
  end
@@ -97,25 +94,17 @@ module QiitaOrg
97
94
  desc "template", "make template.org"
98
95
 
99
96
  def template(*argv)
100
- checkos = CheckPcOs.new
101
- os = checkos.return_os()
97
+ os = @base.check_pc_os()
98
+ filename = argv[0] || "template.org"
99
+ filename = (filename.include?(".org"))? filename : "#{filename}.org"
102
100
 
103
- template = QiitaGetTemplate.new(os)
101
+ template = QiitaGetTemplate.new(os, filename).run()
104
102
  end
105
103
 
106
- desc "all", "post all org file in the directory"
104
+ desc "all [teams/public/private] [options]", "post all org files in the directory"
107
105
 
108
106
  def all(*argv)
109
- Dir.glob("*.org").each do |org|
110
- puts org.blue
111
- if File.read(org).match(/#\+qiita_(.+)/)
112
- system ("qiita post #{org} open") if File.read(org).match(/#\+(.+)_public/)
113
- system ("qiita post #{org} teams") if File.read(org).match(/#\+(.+)_teams/)
114
- system ("qiita post #{org} private") if File.read(org).match(/#\+(.+)_private/)
115
- else
116
- system ("qiita post #{org}")
117
- end
118
- end
107
+ QiitaAll.new(argv).run()
119
108
  end
120
109
 
121
110
  desc "list [qiita/teams]", "view qiita report list"
@@ -1,7 +1,8 @@
1
1
  {
2
- "name": "",
3
- "email": "",
4
- "access_token": "",
5
- "teams_url": "",
6
- "ox_qmd_load_path": "~/.emacs.d/site_lisp/ox-qmd"
7
- }
2
+ "name": "",
3
+ "email": "",
4
+ "access_token": "",
5
+ "teams_url": "",
6
+ "display": "open",
7
+ "ox_qmd_load_path": "~/.emacs.d/site_lisp/ox-qmd"
8
+ }
@@ -0,0 +1,29 @@
1
+ require "colorize"
2
+ require "qiita_org/error_message.rb"
3
+
4
+ class AccessQiita
5
+ def initialize(access_token, qiita, path)
6
+ @access_token = access_token
7
+ @qiita = qiita
8
+ @path = path
9
+ end
10
+
11
+ def access_qiita()
12
+ uri = URI.parse(@qiita + @path)
13
+
14
+ headers = { "Authorization" => "Bearer #{@access_token}",
15
+ "Content-Type" => "application/json" }
16
+
17
+ begin
18
+ response = URI.open(
19
+ "#{uri}",
20
+ "Authorization" => "#{headers["Authorization"]}",
21
+ )
22
+ rescue => e
23
+ ErrorMessage.new().qiita_access_error(e)
24
+ else
25
+ items = JSON.parse(response.read)
26
+ return items
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,50 @@
1
+ require "colorize"
2
+
3
+ class QiitaAll
4
+ def initialize(argv)
5
+ check_options(argv)
6
+ @files = Dir.glob("*.org")
7
+ p @files
8
+ end
9
+
10
+ def run()
11
+ @files.each do |file|
12
+ unless @exclude_files.empty?
13
+ next if @exclude_files.include?(file)
14
+ #if @exclude_files.include?(file)
15
+ # next
16
+ #end
17
+ end
18
+
19
+ unless @mode
20
+ puts file.blue
21
+ if File.read(file).match(/#\+qiita_(.+)/)
22
+ system ("qiita post #{file} open") if File.read(file).match(/#\+(.+)_public/)
23
+ system ("qiita post #{file} teams") if File.read(file).match(/#\+(.+)_teams/)
24
+ system ("qiita post #{file} private") if File.read(file).match(/#\+(.+)_private/)
25
+ else
26
+ system ("qiita post #{file}")
27
+ end
28
+ else
29
+ puts "qiita post #{file} #{@mode}".blue
30
+ system "qiita post #{file} #{@mode}"
31
+ end
32
+ end
33
+ end
34
+
35
+ def check_options(string)
36
+ ["teams", "private", "public"].each do |i|
37
+ if string.include?(i)
38
+ @mode = i
39
+ break
40
+ else
41
+ @mode = false
42
+ end
43
+ end
44
+
45
+ @exclude_files = []
46
+ if string.include?("--exclude")
47
+ @exclude_files = string.grep(/.org/)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,98 @@
1
+ require "colorize"
2
+ require "qiita_org/error_message.rb"
3
+
4
+ class QiitaBase
5
+ def initialize()
6
+
7
+ end
8
+
9
+ def check_pc_os()
10
+ if system "sw_vers"
11
+ return os = "mac"
12
+ elsif system "wmic.exe os get caption"
13
+ return os = "windows"
14
+ else
15
+ return nil
16
+ end
17
+ end
18
+
19
+ def pick_up_option(src)
20
+ lines = File.readlines(src)
21
+
22
+ lines.each do |line|
23
+ m = []
24
+ if m = line.match(/\#\+qiita_(.+): (.+)/)
25
+ option = m[1]
26
+ unless option == "public" || option == "teams" || option == "private"
27
+ next
28
+ end
29
+ return option
30
+ end
31
+ end
32
+ return option = "private"
33
+ end
34
+
35
+ def search_conf_path(dir, home)
36
+ while dir != home
37
+ if File.exists?(File.join(dir, ".qiita.conf"))
38
+ return dir
39
+ else
40
+ dir = dir.match(/(.+)\//)[1]
41
+ end
42
+ end
43
+ return dir
44
+ end
45
+
46
+ def select_access_path(mode, teams_url)
47
+ case mode
48
+ when "teams"
49
+ qiita = teams_url
50
+ path = "api/v2/items?page=1&per_page=100"
51
+ else
52
+ qiita = "https://qiita.com/"
53
+ path = "api/v2/authenticated_user/items?page=1&per_page=100"
54
+ end
55
+ return qiita, path
56
+ end
57
+
58
+ def set_config()
59
+ conf_dir = search_conf_path(Dir.pwd, Dir.home)
60
+ lib = File.expand_path("../../../lib", __FILE__)
61
+ if conf_dir != Dir.home
62
+ puts "config file path: #{conf_dir.gsub(Dir.home, "~")}".green
63
+ else
64
+ puts "config file path: #{conf_dir}".green
65
+ end
66
+
67
+ conf_path = File.join(conf_dir, ".qiita.conf")
68
+ conf = JSON.load(File.read(conf_path))
69
+ access_token = conf["access_token"]
70
+ teams_url = conf["teams_url"]
71
+ display = conf["display"]
72
+ ox_qmd_load_path = File.join(lib, "qiita_org", "ox-qmd", "ox-qmd")
73
+
74
+ ErrorMessage.new().access_token_error(access_token)
75
+
76
+ return access_token, teams_url, display, ox_qmd_load_path
77
+ end
78
+
79
+ def file_open(os, order)
80
+ if os == "mac"
81
+ system "open #{order}"
82
+ elsif os == "windows"
83
+ system "explorer.exe #{order}"
84
+ else
85
+ system "xdg-open #{order}"
86
+ end
87
+ end
88
+
89
+ def get_report_id(src, option)
90
+ conts = File.read(src)
91
+ if conts.match?(/^\#\+qiita_#{option}:\s(.+)/)
92
+ id = conts.match(/\#\+qiita_#{option}: (.+)/)[1]
93
+ else
94
+ id = nil
95
+ end
96
+ return id
97
+ end
98
+ end
@@ -3,5 +3,6 @@
3
3
  "email": "",
4
4
  "access_token": "",
5
5
  "teams_url": "",
6
+ "display": "open",
6
7
  "ox_qmd_load_path": "~/.emacs.d/site_lisp/ox-qmd"
7
8
  }