notion-task 0.0.6

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9eef31a5964007c0c45ad070307b066eb9080241a0d6651af7620312872448b8
4
+ data.tar.gz: 374f9244eb53ae56a307e68539c159f2143caffdc42fab3d8948dea694205365
5
+ SHA512:
6
+ metadata.gz: 6803e2b0508c6806de6761db0130c2dbe3507a69934f671e2105bada71c38a6873d67489cc8c3869406f8866132448d90c1e3b07f037ba371f678238902ab037
7
+ data.tar.gz: bf4a465b0b219ccf7b3975a67f6e755e0b5194c168418f26410b5634261d0358165cbe8b5727d1e51fcc495a5ab17c304917765ffa639d9c8de9383bcf445ba4
data/bin/notion-task ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ # code: language=ruby
3
+ # frozen_string_literal: true
4
+
5
+ require "notion-task"
6
+
7
+ NotionTask.new.run
data/lib/api.rb ADDED
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ # code: language=ruby
4
+
5
+ require "httparty"
6
+ require "json"
7
+
8
+ # Notion API class
9
+ #
10
+ # @author Dave Williams
11
+ # @since 0.0.2
12
+ class NotionAPI
13
+ # Initialize the Notion API class
14
+ #
15
+ # @return [NotionApi]
16
+ def initialize
17
+ if ENV.fetch("NOTION_TASK_API_KEY", false) && ENV.fetch("NOTION_TASK_DATABASE", false)
18
+ @key = ENV.fetch("NOTION_TASK_API_KEY")
19
+ @database = ENV.fetch("NOTION_TASK_DATABASE")
20
+ @headers = {
21
+ "Authorization" => "Bearer #{@key}",
22
+ "Content-Type" => "application/json",
23
+ "Notion-Version" => "2022-02-22"
24
+ }
25
+ else
26
+ raise "NOTION_TASK_API_KEY and NOTION_TASK_DATABASE must be set"
27
+ end
28
+ end
29
+
30
+ def GET(path)
31
+ response = HTTParty.get("https://api.notion.com/v1/#{path}", headers: @headers)
32
+ response.body
33
+ end
34
+
35
+ def POST(path, body)
36
+ response = HTTParty.post("https://api.notion.com/v1#{path}", headers: @headers, body: body)
37
+ response.body
38
+ end
39
+
40
+ def get_tasks
41
+ query = {
42
+ sorts: [
43
+ {
44
+ property: "Title",
45
+ direction: "ascending"
46
+ }
47
+ ]
48
+ }
49
+ resp = POST("/databases/#{@database}/query", query.to_json)
50
+ puts resp
51
+ end
52
+
53
+ def new_task(title)
54
+ query = {
55
+ parent: {
56
+ database_id: @database
57
+ },
58
+ properties: {
59
+ Title: {
60
+ title: [
61
+ {
62
+ text: {
63
+ content: title
64
+ }
65
+ }
66
+ ]
67
+ }
68
+ }
69
+ }
70
+ resp = POST("/pages", query.to_json)
71
+ puts resp
72
+ end
73
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../metadata"
4
+ require_relative "../api"
5
+
6
+ # Commands module contains all CLI command implementations
7
+ module Commands
8
+ # Command to get NotionTask version
9
+ class List
10
+ def initialize(args, options)
11
+ @args = args
12
+ @options = options
13
+ @api = NotionAPI.new
14
+ run
15
+ end
16
+
17
+ def run
18
+ puts @api.get_tasks
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../metadata"
4
+ require_relative "../api"
5
+
6
+ # Commands module contains all CLI command implementations
7
+ module Commands
8
+ # Command to get NotionTask version
9
+ class New
10
+ def initialize(args, options)
11
+ @args = args
12
+ @options = options
13
+ @api = NotionAPI.new
14
+ run
15
+ end
16
+
17
+ def run
18
+ puts @api.new_task(@args.join(" "))
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../metadata"
4
+ require_relative "../api"
5
+
6
+ # Commands module contains all CLI command implementations
7
+ module Commands
8
+ # Command to get NotionTask version
9
+ class Version
10
+ def initialize(args, options)
11
+ @args = args
12
+ @options = options
13
+ run
14
+ end
15
+
16
+ def run
17
+ puts "notion-task #{Metadata.version}"
18
+ end
19
+ end
20
+ end
data/lib/metadata.rb ADDED
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ # code: language=ruby
4
+
5
+ # Module containing metadata for the NotionTask gem specification
6
+ module Metadata
7
+ def self.version
8
+ "0.0.6"
9
+ end
10
+
11
+ def self.name
12
+ "notion-task"
13
+ end
14
+
15
+ def self.summary
16
+ "Notion task manager"
17
+ end
18
+
19
+ def self.description
20
+ "A tool to help manage Notion tasks"
21
+ end
22
+
23
+ def self.author
24
+ "Dave Williams"
25
+ end
26
+
27
+ def self.email
28
+ "dave@dave.io"
29
+ end
30
+
31
+ def self.files
32
+ [
33
+ "bin/notion-task",
34
+ "lib/api.rb",
35
+ "lib/commands/list.rb",
36
+ "lib/commands/new.rb",
37
+ "lib/commands/version.rb",
38
+ "lib/metadata.rb",
39
+ "lib/notion-task.rb"
40
+ ]
41
+ end
42
+
43
+ def self.executables
44
+ ["notion-task"]
45
+ end
46
+
47
+ def self.authors
48
+ ["Dave Williams"]
49
+ end
50
+
51
+ def self.license
52
+ "MIT"
53
+ end
54
+
55
+ def self.homepage
56
+ "https://github.com/daveio/notion-task"
57
+ end
58
+
59
+ def self.required_ruby_version
60
+ ">= 3.3.6"
61
+ end
62
+
63
+ def self.dependencies
64
+ {
65
+ "commander" => "~> 5.0.0",
66
+ "httparty" => "~> 0.22.0",
67
+ "notion-ruby-client" => "~> 1.2.2",
68
+ "terminal-table" => "~> 4.0.0"
69
+ }
70
+ end
71
+
72
+ def self.development_dependencies
73
+ {
74
+ "pry" => "~> 0.15.2",
75
+ "solargraph" => "~> 0.51.2",
76
+ "standard" => "~> 1.45.0"
77
+ }
78
+ end
79
+
80
+ def self.api_key
81
+ api_key = ENV.fetch("NOTION_TASK_API_KEY", false)
82
+ abort("NOTION_TASK_API_KEY is not set. Set it to your API key.") unless api_key
83
+
84
+ api_key
85
+ end
86
+
87
+ def self.task_database
88
+ task_database = ENV.fetch("NOTION_TASK_DATABASE", false)
89
+ abort("NOTION_TASK_DATABASE is not set. Set it to the ID of your database.") unless task_database
90
+
91
+ task_database
92
+ end
93
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ # code: language=ruby
4
+
5
+ require "rubygems"
6
+ require "commander"
7
+ require_relative "metadata"
8
+ require_relative "commands/list"
9
+ require_relative "commands/new"
10
+ require_relative "commands/version"
11
+ # Main application class for NotionTask command-line interface
12
+ class NotionTask
13
+ include Commander::Methods
14
+
15
+ def run
16
+ setup_program
17
+ setup_commands
18
+ run!
19
+ end
20
+
21
+ private
22
+
23
+ def setup_program
24
+ program :name, Metadata.name
25
+ program :version, Metadata.version
26
+ program :description, Metadata.description
27
+ program :help, "Documentation", "https://github.com/daveio/notion-task"
28
+ end
29
+
30
+ def setup_commands
31
+ setup_version_command
32
+ setup_list_command
33
+ setup_new_command
34
+ end
35
+
36
+ def setup_new_command
37
+ command :new do |c|
38
+ c.syntax = "notion-task new"
39
+ c.summary = "Create a new task"
40
+ c.description = c.summary
41
+ c.example c.summary, "notion-task new"
42
+ c.when_called Commands::New
43
+ end
44
+ end
45
+
46
+ def setup_version_command
47
+ command :version do |c|
48
+ c.syntax = "notion-task version"
49
+ c.summary = "Show the version of the running notion-task"
50
+ c.description = c.summary
51
+ c.example c.summary, "notion-task version"
52
+ c.when_called Commands::Version
53
+ end
54
+ end
55
+
56
+ def setup_list_command
57
+ command :list do |c|
58
+ c.syntax = "notion-task list"
59
+ c.summary = "List all tasks in the database"
60
+ c.description = c.summary
61
+ c.example c.summary, "notion-task list"
62
+ c.when_called Commands::List
63
+ end
64
+ end
65
+ end
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: notion-task
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Dave Williams
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2025-02-24 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: commander
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 5.0.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: 5.0.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: httparty
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 0.22.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.22.0
40
+ - !ruby/object:Gem::Dependency
41
+ name: notion-ruby-client
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 1.2.2
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.2
54
+ - !ruby/object:Gem::Dependency
55
+ name: terminal-table
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 4.0.0
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 4.0.0
68
+ - !ruby/object:Gem::Dependency
69
+ name: pry
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.15.2
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.15.2
82
+ - !ruby/object:Gem::Dependency
83
+ name: solargraph
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.51.2
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: 0.51.2
96
+ - !ruby/object:Gem::Dependency
97
+ name: standard
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 1.45.0
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 1.45.0
110
+ description: A tool to help manage Notion tasks
111
+ email: dave@dave.io
112
+ executables:
113
+ - notion-task
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - bin/notion-task
118
+ - lib/api.rb
119
+ - lib/commands/list.rb
120
+ - lib/commands/new.rb
121
+ - lib/commands/version.rb
122
+ - lib/metadata.rb
123
+ - lib/notion-task.rb
124
+ homepage: https://github.com/daveio/notion-task
125
+ licenses:
126
+ - MIT
127
+ metadata:
128
+ rubygems_mfa_required: 'true'
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 3.3.6
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubygems_version: 3.6.5
144
+ specification_version: 4
145
+ summary: Notion task manager
146
+ test_files: []