extract-repo 0.0.6 → 0.0.8
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/CHANGELOG.md +8 -0
- data/lib/extract_repo.rb +24 -34
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff0ac721f57a6835cec23e2212bbda0c7e77e84159170ae987267045d4a771e9
|
4
|
+
data.tar.gz: e43e0030a41ff37fea7bb88375bc772a32bb50f6e661c1713c4c6da49bc6920c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e578231b0f5dab20d385c385aefebc3c32037735766851f757be1587544ebbca5f1410499b5fa195755a139658e005f7ce9039f7f4a8efff7352aeaeaac688f
|
7
|
+
data.tar.gz: 612f90e4ebf638024437ec283b5a8bf1dab9f8f839b7983deec21e9a4700142f1b33b9b7f90fd44545c6876ddcbb16044d97e284ef0cc4813cc4fff3afb5591c
|
data/CHANGELOG.md
CHANGED
data/lib/extract_repo.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require "pry"
|
2
|
+
require "uri"
|
2
3
|
require "English"
|
4
|
+
|
3
5
|
require "foobara/all"
|
4
6
|
|
5
7
|
# TODO: allow extracting from a local repo and default to that repo as "."
|
@@ -41,26 +43,16 @@ class ExtractRepo < Foobara::Command
|
|
41
43
|
Dir.chdir(File.expand_path(dir), &)
|
42
44
|
end
|
43
45
|
|
44
|
-
def repo_dir
|
45
|
-
File.join(output_path, repo_name)
|
46
|
-
end
|
47
|
-
|
48
|
-
def repo_name
|
49
|
-
File.basename(repo_url, ".git")
|
50
|
-
end
|
51
|
-
|
52
46
|
def mk_extract_dir
|
53
47
|
sh "mkdir -p #{output_path}"
|
54
48
|
end
|
55
49
|
|
56
50
|
def rm_old_repo
|
57
|
-
sh "rm -rf #{
|
51
|
+
sh "rm -rf #{output_path}"
|
58
52
|
end
|
59
53
|
|
60
54
|
def clone_repo
|
61
|
-
|
62
|
-
sh "git clone #{absolute_repo_path}"
|
63
|
-
end
|
55
|
+
sh "git clone #{absolute_repo_path} #{output_path}"
|
64
56
|
end
|
65
57
|
|
66
58
|
def local_repository?
|
@@ -68,19 +60,19 @@ class ExtractRepo < Foobara::Command
|
|
68
60
|
end
|
69
61
|
|
70
62
|
def remove_origin
|
71
|
-
chdir
|
63
|
+
chdir output_path do
|
72
64
|
sh "git remote rm origin"
|
73
65
|
end
|
74
66
|
end
|
75
67
|
|
76
68
|
def remove_tags
|
77
|
-
chdir
|
69
|
+
chdir output_path do
|
78
70
|
sh "for i in `git tag`; do git tag -d $i; done"
|
79
71
|
end
|
80
72
|
end
|
81
73
|
|
82
74
|
def remove_replaces
|
83
|
-
chdir
|
75
|
+
chdir output_path do
|
84
76
|
replace_sha1s = sh "git replace -l", silent: true
|
85
77
|
replace_sha1s = replace_sha1s.chomp.split("\n")
|
86
78
|
replace_sha1s.each do |replace_sha1|
|
@@ -93,27 +85,25 @@ class ExtractRepo < Foobara::Command
|
|
93
85
|
end
|
94
86
|
|
95
87
|
def determine_paths
|
96
|
-
chdir
|
88
|
+
chdir output_path do
|
97
89
|
self.file_paths = []
|
98
90
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
end
|
91
|
+
paths.each do |path|
|
92
|
+
unless File.exist?(path)
|
93
|
+
# :nocov:
|
94
|
+
raise "Path #{path} does not exist in repo #{output_path}"
|
95
|
+
# :nocov:
|
96
|
+
end
|
106
97
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
end
|
111
|
-
else
|
112
|
-
# TODO: test this path
|
113
|
-
# :nocov:
|
114
|
-
file_paths << path
|
115
|
-
# :nocov:
|
98
|
+
if File.directory?(path)
|
99
|
+
Dir.glob("#{path}/**/*").each do |file|
|
100
|
+
file_paths << file if File.file?(file)
|
116
101
|
end
|
102
|
+
else
|
103
|
+
# TODO: test this path
|
104
|
+
# :nocov:
|
105
|
+
file_paths << path
|
106
|
+
# :nocov:
|
117
107
|
end
|
118
108
|
end
|
119
109
|
end
|
@@ -122,7 +112,7 @@ class ExtractRepo < Foobara::Command
|
|
122
112
|
end
|
123
113
|
|
124
114
|
def determine_historic_paths
|
125
|
-
chdir
|
115
|
+
chdir output_path do
|
126
116
|
file_paths.dup.each do |file_path|
|
127
117
|
historic_paths = sh "git log --follow --name-only --pretty=format: -- \"#{file_path}\""
|
128
118
|
|
@@ -142,7 +132,7 @@ class ExtractRepo < Foobara::Command
|
|
142
132
|
end
|
143
133
|
|
144
134
|
def filter_repo
|
145
|
-
chdir
|
135
|
+
chdir output_path do
|
146
136
|
path_args = file_paths.map { |path| "--path #{path}" }.join(" ")
|
147
137
|
sh "git-filter-repo #{path_args} --force --prune-degenerate always"
|
148
138
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: extract-repo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miles Georgi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: foobara
|
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '0'
|
82
82
|
requirements: []
|
83
|
-
rubygems_version: 3.5.
|
83
|
+
rubygems_version: 3.5.23
|
84
84
|
signing_key:
|
85
85
|
specification_version: 4
|
86
86
|
summary: Extract code from one repository into a new repository, preserving history
|