19
19
require_relative "release"
20
20
require_relative "state"
21
21
22
- class SourceArchiveTask
22
+ class ArchiveTask
23
23
include Rake ::DSL
24
24
25
25
def initialize ( release )
@@ -30,14 +30,30 @@ def initialize(release)
30
30
31
31
def define
32
32
namespace :deploy do
33
- desc "Deploy source archive"
34
- task :source_archive do
35
- target_assets . each do |asset |
36
- extension = asset [ "name" ] . delete_prefix ( "#{ @release . base_name } ." )
33
+ desc "Deploy archives"
34
+ task :archives do
35
+ target_assets . each do |type , asset |
36
+ base_name = asset [ "name" ]
37
+ if type == "source"
38
+ # groonga-14.1.1.tar.gz -> tar.gz
39
+ # groonga-14.1.1.zip -> zip
40
+ extension = base_name . delete_prefix ( "#{ @release . base_name } ." )
41
+ state_id = "source-#{ extension } "
42
+ else
43
+ # groonga-14.1.1-x64-vs2019-with-vcruntime.zip ->
44
+ # x64-vs2019-with-vcruntime
45
+ #
46
+ # groonga-14.1.1-x64-vs2022.zip ->
47
+ # x64-vs2022
48
+ binary_type = base_name .
49
+ delete_prefix ( "#{ @release . base_name } -" ) .
50
+ delete_suffix ( ".zip" )
51
+ state_id = "windows-#{ binary_type } "
52
+ end
37
53
state = State . new ( @release . base_dir ,
38
54
@release . package ,
39
55
@release . version ,
40
- "source- #{ extension } " )
56
+ state_id )
41
57
next if state . done?
42
58
43
59
state . lock do
@@ -47,7 +63,7 @@ def define
47
63
upload ( dir )
48
64
end
49
65
50
- update_htaccess ( asset )
66
+ update_htaccess ( type , asset )
51
67
state . done
52
68
end
53
69
end
@@ -57,22 +73,33 @@ def define
57
73
58
74
private
59
75
def target_assets
60
- archive_assets = { }
76
+ source_archive_assets = { }
77
+ windows_binary_assets = { }
61
78
sign_file_names = [ ]
62
79
@github_client . release ( @release . tag ) [ "assets" ] . each do |asset |
63
80
file_name = asset [ "name" ]
64
81
case file_name
65
82
when "#{ @release . base_name } .tar.gz" , "#{ @release . base_name } .zip"
66
- archive_assets [ file_name ] = asset
83
+ source_archive_assets [ file_name ] = asset
84
+ when /\A #{ Regexp . escape ( @release . base_name ) } -.+\. zip\z /
85
+ windows_binary_assets [ file_name ] = asset
67
86
when /\. asc\z /
68
87
sign_file_names << file_name
69
88
end
70
89
end
71
90
sign_file_names . each do |sign_file_name |
72
91
signed_file_name = sign_file_name . gsub ( /\. asc\z / , "" )
73
- archive_assets . delete ( signed_file_name )
92
+ source_archive_assets . delete ( signed_file_name )
93
+ windows_binary_assets . delete ( signed_file_name )
94
+ end
95
+ assets = [ ]
96
+ source_archive_assets . values . each do |asset |
97
+ assets << [ "source" , asset ]
74
98
end
75
- archive_assets . values
99
+ windows_binary_assets . values . each do |asset |
100
+ assets << [ "windows" , asset ]
101
+ end
102
+ assets
76
103
end
77
104
78
105
def download ( dir , asset )
@@ -109,14 +136,14 @@ def upload(dir)
109
136
*paths )
110
137
end
111
138
112
- def update_htaccess ( asset )
113
- htaccess_path =
114
- @release . public_dir + "source" + @release . package + ".htaccess"
139
+ def update_htaccess ( type , asset )
140
+ htaccess_path = @release . public_dir + type + @release . package + ".htaccess"
115
141
return unless htaccess_path . exist?
116
142
117
143
base_name = asset [ "name" ]
118
- extension = base_name . delete_prefix ( "#{ @release . base_name } ." )
119
- latest_base_name = "#{ @release . package } -latest.#{ extension } "
144
+ latest_base_name = base_name . gsub ( /\A #{ Regexp . escape ( @release . base_name ) } / ) do
145
+ "#{ @release . package } -latest"
146
+ end
120
147
htaccess_content = ""
121
148
htaccess_path . open do |htaccess |
122
149
htaccess . each_line do |line |
0 commit comments