trk 0.1.8 → 0.1.10

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/lib/trk/cli.rb +47 -13
  4. data/lib/trk/version.rb +1 -1
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d801933ed2fbbba2061aa5c63fa026f44204ac35b0b3d9c2a7268e024b924d87
4
- data.tar.gz: bf385c29ba9af81e616f969261fa491ec4a649a7ec54ef13c63de4bb103cc9dd
3
+ metadata.gz: 938ec057cb06d6a7467a26653943a062af7254486277899baf915afcac3d37ae
4
+ data.tar.gz: 6aea1eeff668b49f91a3d5929580a372e729a60b807b85a098dd059ebf932daa
5
5
  SHA512:
6
- metadata.gz: 206534aa53d7b5cc0f98b91e844b9468654fc8c7b913ca2603256a692bdb818be50421540328417791c8f34abe18a540b798728bfe0df15d31cdc0259ab83190
7
- data.tar.gz: 46f5c88ab980c63e22edfbfd36090b97874dcc44e1d7235c1387e403a1db4110939a3f2eb08a8ad3e01a4835499b0c8681fdce21c0a7ca976663038d5190c450
6
+ metadata.gz: 0b02763b21935ea8c286790ae4f336ea0de9c6658eabb7da19dd3e9db5f22e8f7c1d1b19992563da9764871a039040834b0e1c3f7266d13dda1199f77b3beda9
7
+ data.tar.gz: 156e9ed56d7d5570633db0d7d5f987d1355a1565fcebe7a8f9f72c2cc9c1aab97030f4b4a192cf4a592c743f0d5d33785860c34079acedc753b734392519280c
data/README.md CHANGED
@@ -122,6 +122,7 @@ ruby -Itest test/test_link.rb --name test_link_show_success
122
122
  To release a new version, update the version number, git commit
123
123
  ```
124
124
  vi lib/trk/version.rb
125
+ bundle
125
126
 
126
127
  git commit -am"Update"
127
128
  ```
data/lib/trk/cli.rb CHANGED
@@ -3,6 +3,7 @@ require "open3"
3
3
  require "net/http"
4
4
  require "uri"
5
5
  require "debug"
6
+ require "json"
6
7
 
7
8
  module Trk
8
9
  class CLI < Thor
@@ -47,17 +48,26 @@ module Trk
47
48
  next unless File.directory?(File.join(dir, ".git"))
48
49
 
49
50
  Dir.chdir(dir) do
50
- puts "\nšŸ”„ Pulling updates in: #{dir}"
51
- _stdout, stderr, status = Open3.capture3("git pull")
51
+ puts "\nšŸ”„ Check if the last commit is the same in: #{dir}"
52
+ # Get remote latest commit SHA via glab API
53
+ project_path = dir.sub("#{base_dir}/", "")
54
+ encoded_project = URI.encode_www_form_component(project_path)
55
+ stdout_remote, stderr, status = Open3.capture3("glab api projects/#{encoded_project}/repository/commits?per_page=1")
56
+ unless status.success?
57
+ puts "#{UNCHECK_ICON} Glab api failed: #{dir}\n#{stderr}"
58
+ open_shell
59
+ next
60
+ end
61
+ remote_commit = JSON.parse(stdout_remote).first["id"]
62
+ stdout_local, _stderr_local, status_local = Open3.capture3("git rev-parse HEAD")
63
+ local_commit = stdout_local.strip if status_local.success?
64
+ if remote_commit == local_commit
52
65
 
53
- if status.success?
54
- _stdout, stderr, status = Open3.capture3("git push")
55
- if status.success?
56
66
  stdout, stderr, _status = Open3.capture3("git status --porcelain")
57
67
  if stdout.empty?
58
- puts "#{CHECK_ICON} Git pull push successful in: #{dir}"
68
+ puts "#{CHECK_ICON} Up-to-date: #{project_path}, skipping pull"
59
69
  else
60
- puts "#{UNCHECK_ICON} Git status --porcelain failed in: #{dir}\n#{stdout}\n#{stderr}"
70
+ puts "#{UNCHECK_ICON} Up-to-date but Git status --porcelain failed in: #{dir}\n#{stdout}\n#{stderr}"
61
71
  system "git status"
62
72
  system "git diff"
63
73
  puts "Do you want to run 'git add . && git commit -amUpdate' and continue (Y/n) ?"
@@ -70,19 +80,43 @@ module Trk
70
80
  end
71
81
  end
72
82
  else
73
- puts "#{UNCHECK_ICON} Git push failed in: #{dir}\n#{stderr}"
74
- open_shell
83
+ puts "\nšŸ”„ Pulling updates in: #{dir}"
84
+ _stdout, stderr, status = Open3.capture3("git pull")
85
+ unless status.success?
86
+ puts "#{UNCHECK_ICON} Git pull failed in: #{dir}\n#{stderr}"
87
+ open_shell
88
+ next
89
+ end
90
+ _stdout, stderr, status = Open3.capture3("git push")
91
+ unless status.success?
92
+ puts "#{UNCHECK_ICON} Git push failed in: #{dir}\n#{stderr}"
93
+ open_shell
94
+ next
95
+ end
96
+ stdout, stderr, _status = Open3.capture3("git status --porcelain")
97
+ if stdout.empty?
98
+ puts "#{CHECK_ICON} Git pull push successful in: #{dir}"
99
+ else
100
+ puts "#{UNCHECK_ICON} Git status --porcelain failed in: #{dir}\n#{stdout}\n#{stderr}"
101
+ system "git status"
102
+ system "git diff"
103
+ puts "Do you want to run 'git add . && git commit -amUpdate' and continue (Y/n) ?"
104
+ answer = $stdin.gets.strip.downcase
105
+ if answer == "" || answer == "y"
106
+ success = system "git add . && git commit -amUpdate && git push"
107
+ open_shell unless success
108
+ else
109
+ open_shell
110
+ end
111
+ end
75
112
  end
76
- else
77
- puts "#{UNCHECK_ICON} Git pull failed in: #{dir}\n#{stderr}"
78
- open_shell
79
- end
80
113
  end
81
114
  end
82
115
 
83
116
  puts "\n#{CHECK_ICON} All done!"
84
117
  end
85
118
 
119
+ desc "helper command to stop and investigate"
86
120
  def open_shell
87
121
  puts "Opening shell for manual fix. Type 'exit' when done."
88
122
  system('PS1="trk pull paused on [$(basename $(pwd))]$ " bash --norc')
data/lib/trk/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Trk
4
- VERSION = "0.1.8"
4
+ VERSION = "0.1.10"
5
5
  CHECK_ICON = "āœ… "
6
6
  UNCHECK_ICON = "āŒ "
7
7
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dusan Orlovic
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-05-24 00:00:00.000000000 Z
10
+ date: 2025-06-29 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: thor