kgem 0.1.0
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.
- data/MIT-LICENSE +19 -0
- data/README +36 -0
- data/Rakefile +79 -0
- data/bin/gemcmdwin-super.rb +0 -0
- data/bin/gemcmdwin.rb +342 -0
- data/bin/kgem.rb +327 -0
- data/ext/Rakefile +65 -0
- data/lib/downloadedwin.rb +251 -0
- data/lib/gemcmddlgs.rb +350 -0
- data/lib/gemhelpdlg.rb +74 -0
- data/lib/gemitem.rb +162 -0
- data/lib/gemviews.rb +554 -0
- data/lib/installedwin.rb +286 -0
- data/lib/mylibs.rb +407 -0
- data/lib/previewwin.rb +80 -0
- data/lib/searchwin.rb +151 -0
- data/lib/settings.rb +205 -0
- data/pkg_resources/gemcmdwin-super.rb.pam +8 -0
- metadata +89 -0
data/lib/previewwin.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
#
|
2
|
+
#
|
3
|
+
#
|
4
|
+
class PreviewWin < Qt::Widget
|
5
|
+
def initialize(parent=nil)
|
6
|
+
super(parent)
|
7
|
+
|
8
|
+
createWidget
|
9
|
+
readSettings
|
10
|
+
end
|
11
|
+
|
12
|
+
def createWidget
|
13
|
+
@titleLabel = Qt::Label.new('')
|
14
|
+
@textEditor = KTextEditor::EditorChooser::editor
|
15
|
+
@closeBtn = KDE::PushButton.new(KDE::Icon.new('dialog-close'), \
|
16
|
+
i18n('Close')) do |w|
|
17
|
+
connect(w, SIGNAL(:clicked), self, SLOT(:hide))
|
18
|
+
end
|
19
|
+
|
20
|
+
@document = @textEditor.createDocument(nil)
|
21
|
+
@textView = @document.createView(self)
|
22
|
+
|
23
|
+
# layout
|
24
|
+
lo = Qt::VBoxLayout.new
|
25
|
+
lo.addWidgets('File Name:', @titleLabel, nil)
|
26
|
+
lo.addWidget(@textView)
|
27
|
+
lo.addWidgets(nil, @closeBtn)
|
28
|
+
setLayout(lo)
|
29
|
+
end
|
30
|
+
|
31
|
+
ModeTbl = { /\.rb$/ => 'Ruby',
|
32
|
+
/Rakefile$/ => 'Ruby',
|
33
|
+
/\.(h|c|cpp)$/ => 'C++',
|
34
|
+
/\.json$/ => 'JSON',
|
35
|
+
/\.html?$/ => 'HTML',
|
36
|
+
/\.xml$/ => 'XML',
|
37
|
+
/\.(yml|yaml)$/ => 'YAML',
|
38
|
+
/\.java$/ => 'Java',
|
39
|
+
/\.js$/ => 'JavaScript',
|
40
|
+
/\.css$/ => 'CSS',
|
41
|
+
/\.py$/ => 'Python',
|
42
|
+
/\.txt$/ => 'Normal',
|
43
|
+
/^(\w+)$/i => 'Normal',
|
44
|
+
}
|
45
|
+
def findMode(text)
|
46
|
+
file = File.basename(text)
|
47
|
+
m = ModeTbl.find do |k,v|
|
48
|
+
k =~ file
|
49
|
+
end
|
50
|
+
m ? m[1] : 'Ruby'
|
51
|
+
end
|
52
|
+
|
53
|
+
def setText(title, text)
|
54
|
+
@titleLabel.text = title
|
55
|
+
@document.setReadWrite(true)
|
56
|
+
@document.setText(text.gsub(/\r\n/, "\n"))
|
57
|
+
puts " Text mode = " + findMode(title)
|
58
|
+
@document.setMode(findMode(title))
|
59
|
+
@document.setReadWrite(false)
|
60
|
+
show
|
61
|
+
end
|
62
|
+
|
63
|
+
def setFile(file)
|
64
|
+
@titleLabel.text = file
|
65
|
+
@document.openUrl(KDE::Url.new(file))
|
66
|
+
@document.setReadWrite(false)
|
67
|
+
show
|
68
|
+
end
|
69
|
+
|
70
|
+
GroupName = 'PreviewWindow'
|
71
|
+
def readSettings
|
72
|
+
config = $config.group(GroupName)
|
73
|
+
restoreGeometry(config.readEntry('windowState', saveGeometry))
|
74
|
+
end
|
75
|
+
|
76
|
+
def writeSettings
|
77
|
+
config = $config.group(GroupName)
|
78
|
+
config.writeEntry('windowState', saveGeometry)
|
79
|
+
end
|
80
|
+
end
|
data/lib/searchwin.rb
ADDED
@@ -0,0 +1,151 @@
|
|
1
|
+
#
|
2
|
+
#
|
3
|
+
#
|
4
|
+
class SearchTable < Qt::TableWidget
|
5
|
+
#
|
6
|
+
class Item < Qt::TableWidgetItem
|
7
|
+
def initialize(text)
|
8
|
+
super(text)
|
9
|
+
self.flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class NumItem < Item
|
14
|
+
def lessThan(i)
|
15
|
+
self.text.to_i < i.text.to_i
|
16
|
+
end
|
17
|
+
alias :'operator<' :lessThan
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
super(0,3)
|
22
|
+
|
23
|
+
self.windowTitle = i18n('Search Result')
|
24
|
+
setHorizontalHeaderLabels(['name', 'version', 'downloads'])
|
25
|
+
self.horizontalHeader.stretchLastSection = true
|
26
|
+
self.selectionBehavior = Qt::AbstractItemView::SelectRows
|
27
|
+
self.selectionMode = Qt::AbstractItemView::SingleSelection
|
28
|
+
self.alternatingRowColors = true
|
29
|
+
self.sortingEnabled = true
|
30
|
+
sortByColumn(0, Qt::AscendingOrder)
|
31
|
+
@gems = {}
|
32
|
+
end
|
33
|
+
|
34
|
+
def addPackage(row, gem)
|
35
|
+
nameItem = Item.new(gem.package)
|
36
|
+
@gems[nameItem] = gem # 0 column item is hash key.
|
37
|
+
setItem( row, 0, nameItem )
|
38
|
+
setItem( row, 1, Item.new(gem.version) )
|
39
|
+
setItem( row, 2, NumItem.new(gem.downloads.to_s) )
|
40
|
+
end
|
41
|
+
|
42
|
+
def updateGemList(gemList)
|
43
|
+
sortFlag = self.sortingEnabled
|
44
|
+
self.sortingEnabled = false
|
45
|
+
|
46
|
+
clearContents
|
47
|
+
self.rowCount = gemList.length
|
48
|
+
gemList.each_with_index do |g,r|
|
49
|
+
addPackage(r, g)
|
50
|
+
end
|
51
|
+
|
52
|
+
self.sortingEnabled = sortFlag
|
53
|
+
end
|
54
|
+
|
55
|
+
def gem(item)
|
56
|
+
gemAtRow(item.row)
|
57
|
+
end
|
58
|
+
|
59
|
+
def gemAtRow(row)
|
60
|
+
@gems[item(row,0)] # use 0 column item as hash key.
|
61
|
+
end
|
62
|
+
|
63
|
+
def currentGem
|
64
|
+
gemAtRow(currentRow)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
#----------------------------------------------------------------------------
|
70
|
+
#
|
71
|
+
#
|
72
|
+
#
|
73
|
+
class SearchWin < Qt::Widget
|
74
|
+
def initialize(parent=nil)
|
75
|
+
super(parent)
|
76
|
+
|
77
|
+
createWidget
|
78
|
+
readSettings
|
79
|
+
end
|
80
|
+
|
81
|
+
def createWidget
|
82
|
+
@gemList = SearchTable.new
|
83
|
+
@searchLine = KDE::HistoryComboBox.new do |w|
|
84
|
+
w.sizePolicy = Qt::SizePolicy.new(Qt::SizePolicy::Expanding, Qt::SizePolicy::Fixed, Qt::SizePolicy::LineEdit)
|
85
|
+
end
|
86
|
+
|
87
|
+
@searchBtn = KDE::PushButton.new(KDE::Icon.new('search'), i18n('Search'))
|
88
|
+
@downloadBtn = KDE::PushButton.new(KDE::Icon.new('download'), i18n('Download'))
|
89
|
+
@installBtn = KDE::PushButton.new(KDE::Icon.new('run-build-install'), i18n('Install'))
|
90
|
+
|
91
|
+
# connect
|
92
|
+
connect(@searchBtn, SIGNAL(:clicked), self, SLOT(:search))
|
93
|
+
connect(@searchLine, SIGNAL(:returnPressed), self, SLOT(:search))
|
94
|
+
connect(@gemList, SIGNAL('itemClicked(QTableWidgetItem *)'), self, SLOT('itemClicked(QTableWidgetItem *)'))
|
95
|
+
connect(@downloadBtn, SIGNAL(:clicked), self, SLOT(:fetch))
|
96
|
+
connect(@installBtn, SIGNAL(:clicked), self, SLOT(:install))
|
97
|
+
|
98
|
+
# layout
|
99
|
+
lo = Qt::VBoxLayout.new
|
100
|
+
lo.addWidgets('Search Gems:', @searchLine, @searchBtn)
|
101
|
+
lo.addWidget(@gemList)
|
102
|
+
lo.addWidgets(nil, @downloadBtn, @installBtn)
|
103
|
+
setLayout(lo)
|
104
|
+
end
|
105
|
+
|
106
|
+
GroupName = "SearchWindow"
|
107
|
+
def writeSettings
|
108
|
+
config = $config.group(GroupName)
|
109
|
+
config.writeEntry('Header', @gemList.horizontalHeader.saveState)
|
110
|
+
end
|
111
|
+
|
112
|
+
def readSettings
|
113
|
+
config = $config.group(GroupName)
|
114
|
+
@gemList.horizontalHeader.restoreState(config.readEntry('Header', @gemList.horizontalHeader.saveState))
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
attr_accessor :gemViewer
|
119
|
+
slots 'itemClicked(QTableWidgetItem *)'
|
120
|
+
def itemClicked(item)
|
121
|
+
gem = @gemList.gem(item)
|
122
|
+
@gemViewer.setDetail(gem) if @gemViewer and gem
|
123
|
+
@gemViewer.setFiles(nil)
|
124
|
+
end
|
125
|
+
|
126
|
+
slots :search
|
127
|
+
def search
|
128
|
+
res = Net::HTTP.get(URI.parse( 'http://rubygems.org/api/v1/search.json?query=' + URI.escape(@searchLine.currentText)))
|
129
|
+
gems = JSON.parse(res)
|
130
|
+
gems.map! do |g| GemItem.parseHashGem(g) end
|
131
|
+
@gemList.updateGemList(gems)
|
132
|
+
@searchLine.insertItems([@searchLine.currentText])
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
slots :fetch
|
137
|
+
def fetch
|
138
|
+
gem = @gemList.currentGem
|
139
|
+
return unless gem
|
140
|
+
|
141
|
+
@gemViewer.download(gem)
|
142
|
+
end
|
143
|
+
|
144
|
+
slots :install
|
145
|
+
def install
|
146
|
+
gem = @gemList.currentGem
|
147
|
+
return gem unless gem
|
148
|
+
|
149
|
+
@gemViewer.install(gem, false) # localFlag = false
|
150
|
+
end
|
151
|
+
end
|
data/lib/settings.rb
ADDED
@@ -0,0 +1,205 @@
|
|
1
|
+
#
|
2
|
+
# settings.
|
3
|
+
#
|
4
|
+
require 'kio'
|
5
|
+
#
|
6
|
+
require "mylibs"
|
7
|
+
|
8
|
+
|
9
|
+
TrustPolicies = %w{ NoSecurity LowSecurity MediumSecurity HighSecurity }
|
10
|
+
|
11
|
+
class Settings < SettingsBase
|
12
|
+
def initialize
|
13
|
+
super()
|
14
|
+
|
15
|
+
setCurrentGroup("Preferences")
|
16
|
+
|
17
|
+
# folder settings.
|
18
|
+
addBoolItem(:autoFetchFlag, false)
|
19
|
+
addUrlItem(:autoFetchDir,
|
20
|
+
File.join(KDE::GlobalSettings.downloadPath, 'gem_cache'))
|
21
|
+
addBoolItem(:autoUnpackFlag, false)
|
22
|
+
addUrlItem(:autoUnpackDir, File.join(KDE::GlobalSettings.downloadPath, 'gem_src'))
|
23
|
+
addBoolItem(:installLatestFlag, false)
|
24
|
+
addBoolItem(:downloadLatestFlag, false)
|
25
|
+
|
26
|
+
# install option settings.
|
27
|
+
addBoolItem(:installInSystemDirFlag, true)
|
28
|
+
addBoolItem(:installRdocFlag, true)
|
29
|
+
addBoolItem(:installRiFlag, true)
|
30
|
+
addBoolItem(:installSheBangFlag, false)
|
31
|
+
addBoolItem(:installUnitTestFlag, false)
|
32
|
+
addBoolItem(:installBinWrapFlag, false)
|
33
|
+
addBoolItem(:installIgnoreDepsFlag, false)
|
34
|
+
addBoolItem(:installIncludeDepsFlag, false)
|
35
|
+
addBoolItem(:installDevelopmentDepsFlag, false)
|
36
|
+
addBoolItem(:installformatExecutableFlag, false)
|
37
|
+
addIntItem(:installTrustPolicy, 0)
|
38
|
+
end
|
39
|
+
|
40
|
+
def installTrustPolicyStr
|
41
|
+
TrustPolicies[installTrustPolicy]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
class GeneralSettingsPage < Qt::Widget
|
47
|
+
def initialize(parent=nil)
|
48
|
+
super(parent)
|
49
|
+
createWidget
|
50
|
+
end
|
51
|
+
|
52
|
+
def createWidget
|
53
|
+
@autoFetchCheckBox = Qt::CheckBox.new(i18n("Always Download gem in same directory."))
|
54
|
+
@downloadUrl = KDE::UrlRequester.new(KDE::Url.new())
|
55
|
+
@downloadUrl.enabled = false
|
56
|
+
@downloadUrl.mode = KDE::File::Directory | KDE::File::LocalOnly
|
57
|
+
connect(@autoFetchCheckBox, SIGNAL('stateChanged(int)'),
|
58
|
+
self, SLOT('autoFetchChanged(int)'))
|
59
|
+
|
60
|
+
@autoUnpackCheckBox = Qt::CheckBox.new(i18n("Always Unpack gem in same directory."))
|
61
|
+
@unpackUrl = KDE::UrlRequester.new(KDE::Url.new())
|
62
|
+
@unpackUrl.enabled = false
|
63
|
+
@unpackUrl.mode = KDE::File::Directory | KDE::File::LocalOnly
|
64
|
+
connect(@autoUnpackCheckBox, SIGNAL('stateChanged(int)'),
|
65
|
+
self, SLOT('autoUnpackChanged(int)'))
|
66
|
+
@installLatestCheckBox = Qt::CheckBox.new(i18n("Always Install latest version to skip version selection."))
|
67
|
+
@downloadLatestCheckBox = Qt::CheckBox.new(i18n("Always Download latest version to skip version selection."))
|
68
|
+
|
69
|
+
@openDownloadDir = KDE::PushButton.new(KDE::Icon.new('folder'), 'Open')
|
70
|
+
@openUnpackDir = KDE::PushButton.new(KDE::Icon.new('folder'), 'Open')
|
71
|
+
connect(@openDownloadDir, SIGNAL(:clicked), self, SLOT(:openDownloadDir))
|
72
|
+
connect(@openUnpackDir, SIGNAL(:clicked), self, SLOT(:openUnpackDir))
|
73
|
+
|
74
|
+
# objectNames
|
75
|
+
# 'kcfg_' + class Settings's instance name.
|
76
|
+
@autoFetchCheckBox.objectName = 'kcfg_autoFetchFlag'
|
77
|
+
@downloadUrl.objectName = 'kcfg_autoFetchDir'
|
78
|
+
@autoUnpackCheckBox.objectName = 'kcfg_autoUnpackFlag'
|
79
|
+
@unpackUrl.objectName = 'kcfg_autoUnpackDir'
|
80
|
+
@installLatestCheckBox.objectName = 'kcfg_installLatestFlag'
|
81
|
+
@downloadLatestCheckBox.objectName = 'kcfg_downloadLatestFlag'
|
82
|
+
|
83
|
+
# layout
|
84
|
+
lo = Qt::VBoxLayout.new do |l|
|
85
|
+
l.addWidget(@installLatestCheckBox)
|
86
|
+
l.addWidget(@downloadLatestCheckBox)
|
87
|
+
l.addWidget(@autoFetchCheckBox)
|
88
|
+
l.addWidgets(' ', @downloadUrl, @openDownloadDir)
|
89
|
+
l.addWidget(@autoUnpackCheckBox)
|
90
|
+
l.addWidgets(' ', @unpackUrl, @openUnpackDir)
|
91
|
+
l.addStretch
|
92
|
+
end
|
93
|
+
setLayout(lo)
|
94
|
+
end
|
95
|
+
|
96
|
+
slots 'autoFetchChanged(int)'
|
97
|
+
def autoFetchChanged(state)
|
98
|
+
@downloadUrl.enabled = state == Qt::Checked
|
99
|
+
@openDownloadDir.enabled = state == Qt::Checked
|
100
|
+
end
|
101
|
+
|
102
|
+
slots 'autoUnpackChanged(int)'
|
103
|
+
def autoUnpackChanged(state)
|
104
|
+
@unpackUrl.enabled = state == Qt::Checked
|
105
|
+
@openUnpackDir.enabled = state == Qt::Checked
|
106
|
+
end
|
107
|
+
|
108
|
+
slots :openDownloadDir
|
109
|
+
def openDownloadDir
|
110
|
+
openDirectory(@downloadUrl.text)
|
111
|
+
end
|
112
|
+
|
113
|
+
slots :openUnpackDir
|
114
|
+
def openUnpackDir
|
115
|
+
openDirectory(@unpackUrl.text)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
class InstallOptionsPage < Qt::Widget
|
121
|
+
def initialize(parent=nil)
|
122
|
+
super(parent)
|
123
|
+
createWidget
|
124
|
+
end
|
125
|
+
|
126
|
+
def createWidget
|
127
|
+
@installInSystemCheckBox = Qt::CheckBox.new(i18n("Install in System Directory. (Root access Required)"))
|
128
|
+
@rdocCheckBox = Qt::CheckBox.new(i18n('Generate RDoc Documentation'))
|
129
|
+
@riCheckBox = Qt::CheckBox.new(i18n('Generate RI Documentation'))
|
130
|
+
@sheBangCheckBox = Qt::CheckBox.new(i18n('Rewrite the shebang line on installed scripts to use /usr/bin/env'))
|
131
|
+
@utestCheckBox = Qt::CheckBox.new(i18n('Run unit tests prior to installation'))
|
132
|
+
@binWrapCheckBox = Qt::CheckBox.new(i18n('Use bin wrappers for executables'))
|
133
|
+
# @policyCheckBox = Qt::ComboBox.new
|
134
|
+
# Qt::Label.new(i18n('Specify gem trust policy'))
|
135
|
+
@ignoreDepsCheckBox = Qt::CheckBox.new(i18n('Do not install any required dependent gems'))
|
136
|
+
@includeDepsCheckBox = Qt::CheckBox.new(i18n('Unconditionally install the required dependent gems'))
|
137
|
+
@developmentDepsCheckBox = Qt::CheckBox.new(i18n('Install any additional development dependencies'))
|
138
|
+
@formatExecutableCheckBox = Qt::CheckBox.new(i18n('Make installed executable names match ruby.'))
|
139
|
+
formatExeLabel = Qt::Label.new(i18n(' If ruby is ruby18, foo_exec will be foo_exec18'))
|
140
|
+
# formatExeLabel.wordWrap = true
|
141
|
+
@trustPolicyComboBox = Qt::ComboBox.new
|
142
|
+
@trustPolicyComboBox.addItems(TrustPolicies)
|
143
|
+
|
144
|
+
# connect signals,slots
|
145
|
+
connect(@utestCheckBox, SIGNAL('stateChanged(int)'), self, \
|
146
|
+
SLOT('utestChanged(int)'))
|
147
|
+
connect(@developmentDepsCheckBox, SIGNAL('stateChanged(int)'), self, \
|
148
|
+
SLOT('devDepsChanged(int)'))
|
149
|
+
|
150
|
+
# objectNames
|
151
|
+
# 'kcfg_' + class Settings's instance name.
|
152
|
+
@installInSystemCheckBox.objectName = 'kcfg_installInSystemDirFlag'
|
153
|
+
@rdocCheckBox.objectName = 'kcfg_installRdocFlag'
|
154
|
+
@riCheckBox.objectName = 'kcfg_installRiFlag'
|
155
|
+
@sheBangCheckBox.objectName = 'kcfg_installSheBangFlag'
|
156
|
+
@utestCheckBox.objectName = 'kcfg_installUnitTestFlag'
|
157
|
+
@binWrapCheckBox.objectName = 'kcfg_installBinWrapFlag'
|
158
|
+
@ignoreDepsCheckBox.objectName = 'kcfg_installIgnoreDepsFlag'
|
159
|
+
@includeDepsCheckBox.objectName = 'kcfg_installIncludeDepsFlag'
|
160
|
+
@developmentDepsCheckBox.objectName = 'kcfg_installDevelopmentDepsFlag'
|
161
|
+
@formatExecutableCheckBox.objectName = 'kcfg_installformatExecutableFlag'
|
162
|
+
@trustPolicyComboBox.objectName = 'kcfg_installTrustPolicy'
|
163
|
+
|
164
|
+
# layout
|
165
|
+
lo = Qt::VBoxLayout.new do |l|
|
166
|
+
l.addWidget(@installInSystemCheckBox)
|
167
|
+
l.addWidget(@rdocCheckBox)
|
168
|
+
l.addWidget(@riCheckBox)
|
169
|
+
l.addWidget(@sheBangCheckBox)
|
170
|
+
l.addWidget(@utestCheckBox)
|
171
|
+
l.addWidget(@binWrapCheckBox)
|
172
|
+
l.addWidget(@ignoreDepsCheckBox)
|
173
|
+
l.addWidget(@includeDepsCheckBox)
|
174
|
+
l.addWidget(@developmentDepsCheckBox)
|
175
|
+
l.addWidget(@formatExecutableCheckBox)
|
176
|
+
l.addWidget(formatExeLabel)
|
177
|
+
l.addWidgets(i18n('Trust Policy :'), @trustPolicyComboBox, nil)
|
178
|
+
l.addStretch
|
179
|
+
end
|
180
|
+
setLayout(lo)
|
181
|
+
end
|
182
|
+
|
183
|
+
slots 'utestChanged(int)'
|
184
|
+
def utestChanged(state)
|
185
|
+
@developmentDepsCheckBox.setCheckState(state)
|
186
|
+
end
|
187
|
+
|
188
|
+
slots 'devDepsChanged(int)'
|
189
|
+
def devDepsChanged(state)
|
190
|
+
@utestCheckBox.setCheckState(state) if state == Qt::Unchecked
|
191
|
+
end
|
192
|
+
|
193
|
+
def installInSystemVisible=(flag)
|
194
|
+
@installInSystemCheckBox.visible = flag
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
class SettingsDlg < KDE::ConfigDialog
|
199
|
+
def initialize(parent)
|
200
|
+
super(parent, "Settings", Settings.instance)
|
201
|
+
|
202
|
+
addPage(GeneralSettingsPage.new, i18n("General"), 'preferences-system')
|
203
|
+
addPage(InstallOptionsPage.new, i18n("Install Options"), 'applications-other')
|
204
|
+
end
|
205
|
+
end
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kgem
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- ruby.twiddler
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-09-13 00:00:00 +09:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: |
|
23
|
+
Kgem is KDE GUI for ruby gem tool.
|
24
|
+
You can install/uninstall/update/download gems just clicking around,
|
25
|
+
search to find gem, browsing source files in gems without installing these gems.
|
26
|
+
You don't need to remember gem's command and options any more.
|
27
|
+
|
28
|
+
email: ruby.twiddler at gmail.com
|
29
|
+
executables:
|
30
|
+
- kgem.rb
|
31
|
+
extensions:
|
32
|
+
- ext/Rakefile
|
33
|
+
extra_rdoc_files:
|
34
|
+
- README
|
35
|
+
files:
|
36
|
+
- bin/kgem.rb
|
37
|
+
- bin/gemcmdwin.rb
|
38
|
+
- bin/gemcmdwin-super.rb
|
39
|
+
- lib/downloadedwin.rb
|
40
|
+
- lib/gemhelpdlg.rb
|
41
|
+
- lib/gemviews.rb
|
42
|
+
- lib/installedwin.rb
|
43
|
+
- lib/mylibs.rb
|
44
|
+
- lib/previewwin.rb
|
45
|
+
- lib/searchwin.rb
|
46
|
+
- lib/settings.rb
|
47
|
+
- lib/gemitem.rb
|
48
|
+
- lib/gemcmddlgs.rb
|
49
|
+
- README
|
50
|
+
- MIT-LICENSE
|
51
|
+
- Rakefile
|
52
|
+
- pkg_resources/gemcmdwin-super.rb.pam
|
53
|
+
- ext/Rakefile
|
54
|
+
has_rdoc: true
|
55
|
+
homepage: http://github.com/rubytwiddler/kgem/wiki
|
56
|
+
licenses: []
|
57
|
+
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
version: "0"
|
81
|
+
requirements:
|
82
|
+
- korundum4
|
83
|
+
rubyforge_project:
|
84
|
+
rubygems_version: 1.3.7
|
85
|
+
signing_key:
|
86
|
+
specification_version: 3
|
87
|
+
summary: KDE GUI for ruby gem.
|
88
|
+
test_files: []
|
89
|
+
|