notenote 0.0.2 → 0.0.5

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: '09351642b43ef12aa169a2b8f861b1882397153d029c90a82d6d85a83dfd36ad'
4
- data.tar.gz: ddc9b0421e3c66f367a877a97ccec2038e16110d68d2b63b655d8216d8bab89c
3
+ metadata.gz: ecfda3937a0ea3defb410fab57624938d0d3b1c6d1396c9f26ba8fe43d092e03
4
+ data.tar.gz: 0ae3216b3fa3b55c1717f9e7667344285c2416217c4f3069e5e3032a96ad5080
5
5
  SHA512:
6
- metadata.gz: 7e3c7dc3285f7c715d66abfab6cb96857aec7fed0de60cd88f913ad6c65176381578d988dd4f26a707905e0c04dceab7e85a10e38d4d296c65ffce78870a9e32
7
- data.tar.gz: 967d5900a7c65b37cd2b1b01cb1ae74ec353e2f1de6e6ba2958fe86a86016d328ddc39522c2ef084b47b7ba890b8b0abb4dbcd7c5e59a03b80d8072e1df4e4cb
6
+ metadata.gz: 7d4d126d852699215f245f83ee14dec71e0e1fee91bda9bead8ea9b7c1a5631fe5fc60149271fd2639e6a2377fb3ffe4e982ef09c1511c3e55d0439694a09059
7
+ data.tar.gz: 45a92cfbc51472c916481172c5434df36d296273b7e09dba62b2b8b795717027070fc218d6c8ed5e052400c0309c0508718a898ec4c2d56997ee852d872e09d8
data/lib/note/cli.rb CHANGED
@@ -25,9 +25,13 @@ module Note
25
25
  Dir.mkdir(notes_folder)
26
26
  end
27
27
 
28
- create_config_file(notes_folder: notes_folder)
28
+ notes_folder_full_path = File.join(Dir.pwd, notes_folder)
29
+
30
+ create_config_file(notes_folder: notes_folder_full_path)
31
+ create_readme_file
29
32
  create_note_file
30
33
 
34
+
31
35
  puts %(Your note folder "#{notes_folder}" and the first log file are created. You're ready to go! 🚀)
32
36
 
33
37
  0
@@ -37,6 +41,33 @@ module Note
37
41
 
38
42
  create_note_file(file_name: "#{file_name}.md")
39
43
 
44
+ 0
45
+ elsif args.first == "all"
46
+ notes_folder = notenote_config["notes_folder"]
47
+
48
+ open_editor(path: notes_folder)
49
+
50
+ 0
51
+ elsif args.first == "folder"
52
+ unless mac?
53
+ puts "Unfortunately, this command works only on Mac devices atm. Please, make a PR to support your OS. 🙏"
54
+ end
55
+
56
+ notes_folder = notenote_config["notes_folder"]
57
+
58
+ osascript <<-END
59
+ tell application "Terminal"
60
+ activate
61
+ tell application "System Events" to keystroke "t" using command down
62
+ do script "cd #{notes_folder}" in front window
63
+ do script "clear" in front window
64
+ end tell
65
+ END
66
+
67
+ 0
68
+ elsif args.first == "push"
69
+ push_notes
70
+
40
71
  0
41
72
  else
42
73
  puts "Hm, I don't know this command 🤔"
@@ -47,6 +78,20 @@ module Note
47
78
 
48
79
  private
49
80
 
81
+ def create_readme_file
82
+ notes_folder = notenote_config["notes_folder"]
83
+
84
+ readme_file = File.join(notes_folder, "README.md")
85
+
86
+ File.open(readme_file, "w") do |file|
87
+ file.puts unindent <<-TEXT
88
+ # Daily notes
89
+
90
+
91
+ TEXT
92
+ end
93
+ end
94
+
50
95
  def create_config_file(notes_folder:)
51
96
  config_template = File.read(File.join(File.dirname(__FILE__), "config.json.template"))
52
97
 
@@ -63,8 +108,9 @@ module Note
63
108
 
64
109
  def create_note_file(file_name: "notes.md")
65
110
  notes_folder = notenote_config["notes_folder"]
111
+ date_format = notenote_config["date_format"]
66
112
 
67
- today_folder = File.join(notes_folder, Time.now.strftime("%d-%m-%Y"))
113
+ today_folder = File.join(notes_folder, Time.now.strftime(date_format))
68
114
 
69
115
  Dir.mkdir(today_folder) unless Dir.exist?(today_folder)
70
116
 
@@ -72,7 +118,7 @@ module Note
72
118
 
73
119
  FileUtils.touch(note_file)
74
120
 
75
- open_editor(file: note_file)
121
+ open_editor(path: note_file)
76
122
  end
77
123
 
78
124
  def notenote_config
@@ -81,10 +127,71 @@ module Note
81
127
  JSON.parse(File.read(config_file))
82
128
  end
83
129
 
84
- def open_editor(note_file:)
130
+ def open_editor(path:)
85
131
  editor_command = notenote_config["editor_command"]
86
132
 
87
- system("#{editor_command} #{note_file}")
133
+ system("#{editor_command} #{path}")
134
+ end
135
+
136
+ def mac?
137
+ RbConfig::CONFIG["host_os"] =~ /darwin/
138
+ end
139
+
140
+ def osascript(script)
141
+ system "osascript", *unindent(script).split(/\n/).map { |line| ['-e', line] }.flatten
142
+ end
143
+
144
+ def unindent(str)
145
+ str.gsub(/^#{str.scan(/^[ \t]+(?=\S)/).min}/, "")
146
+ end
147
+
148
+ # This function parses the output of diffstat:
149
+ #
150
+ # git diff HEAD | diffstat -Cm
151
+ #
152
+ # notes.md | 2 ++
153
+ # testing.md | 5 ----!
154
+ # 2 files changed, 2 insertions(+), 4 deletions(-), 1 modification(!)
155
+ #
156
+ # { "+" => 2, "-" => 4, "!" => 1}
157
+ def git_diff_stat
158
+ Dir.chdir(notenote_config["notes_folder"])
159
+
160
+ raw_diffstat = `git diff HEAD | diffstat -Cm`
161
+
162
+ raw_changes = raw_diffstat.split("\n").last.split(",").map(&:strip)
163
+
164
+ raw_changes.each_with_object({}) do |change, o|
165
+ next unless change =~ /[\+\-\!]/
166
+
167
+ type = change.scan(/([\+\-\!])/)[0][0]
168
+ num = change.scan(/\A(\d+)\s/)[0][0]
169
+
170
+ o[type] = num
171
+ end
172
+ end
173
+
174
+ def notes_changed_or_deleted?
175
+ diff_stat = git_diff_stat
176
+
177
+ diff_stat.member?("-") || diff_stat.member?("!")
178
+ end
179
+
180
+ def push_notes
181
+ if notes_changed_or_deleted?
182
+ puts "Some of the notes were mofified or deleted. Please, check them up and push manually."
183
+ return
184
+ end
185
+
186
+ Dir.chdir(notenote_config["notes_folder"])
187
+
188
+ system "git add ."
189
+
190
+ system %(git commit -m "#{notenote_config["commit_message"]}")
191
+
192
+ system "git push"
193
+
194
+ puts "Pushed. ✅"
88
195
  end
89
196
  end
90
197
  end
@@ -1,4 +1,6 @@
1
1
  {
2
2
  "notes_folder": "%{notes_folder}",
3
- "editor_command": "code"
3
+ "date_format": "%d-%m-%Y",
4
+ "editor_command": "code",
5
+ "commit_message": "Added new notes"
4
6
  }
data/lib/note/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Note
2
- VERSION = "0.0.2".freeze
2
+ VERSION = "0.0.5".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notenote
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anatoli Makarevich