cknife 0.1.3 → 0.1.4

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.
@@ -0,0 +1 @@
1
+ cknifedev
@@ -0,0 +1 @@
1
+ 1.9.3-p448
data/Gemfile CHANGED
@@ -4,6 +4,7 @@ gem "rest-client", '>= 1.6'
4
4
  gem "nokogiri", '>= 1.6'
5
5
  gem "i18n", "~> 0.6.0"
6
6
  gem "activesupport", '>= 3.0'
7
+ gem "mail"
7
8
  gem "thor", '>= 0.14'
8
9
  gem "builder", '>= 3.0'
9
10
  gem "fog", '>= 1.15'
@@ -12,6 +13,9 @@ gem "unf", '>= 0.1'
12
13
  # Add dependencies to develop your gem here.
13
14
  # Include everything needed to run rake, tests, features, etc.
14
15
  group :development do
16
+ # gem "cknife", :path => "." # this arguably makes it easier to test quickly, locally.
15
17
  gem "bundler", "~> 1.0"
16
- gem "jeweler", "~> 2.0"
18
+ gem "jeweler", ">= 2.0"
17
19
  end
20
+
21
+
@@ -1,14 +1,10 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activesupport (4.1.5)
5
- i18n (~> 0.6, >= 0.6.9)
6
- json (~> 1.7, >= 1.7.7)
7
- minitest (~> 5.1)
8
- thread_safe (~> 0.1)
9
- tzinfo (~> 1.1)
4
+ activesupport (3.1.12)
5
+ multi_json (~> 1.0)
10
6
  addressable (2.3.6)
11
- builder (3.0.0)
7
+ builder (3.0.4)
12
8
  descendants_tracker (0.0.4)
13
9
  thread_safe (~> 0.3, >= 0.3.1)
14
10
  excon (0.27.6)
@@ -25,16 +21,16 @@ GEM
25
21
  nokogiri (~> 1.5)
26
22
  ruby-hmac
27
23
  formatador (0.2.4)
28
- git (1.2.6)
29
- github_api (0.11.3)
24
+ git (1.2.8)
25
+ github_api (0.12.1)
30
26
  addressable (~> 2.3)
31
- descendants_tracker (~> 0.0.1)
27
+ descendants_tracker (~> 0.0.4)
32
28
  faraday (~> 0.8, < 0.10)
33
- hashie (>= 1.2)
29
+ hashie (>= 3.2)
34
30
  multi_json (>= 1.7.5, < 2.0)
35
- nokogiri (~> 1.6.0)
31
+ nokogiri (~> 1.6.3)
36
32
  oauth2
37
- hashie (3.0.0)
33
+ hashie (3.3.1)
38
34
  highline (1.6.21)
39
35
  i18n (0.6.11)
40
36
  jeweler (2.0.1)
@@ -48,33 +44,39 @@ GEM
48
44
  rdoc
49
45
  json (1.8.1)
50
46
  jwt (1.0.0)
47
+ mail (2.4.4)
48
+ i18n (>= 0.4.0)
49
+ mime-types (~> 1.16)
50
+ treetop (~> 1.4.8)
51
51
  mime-types (1.16)
52
- mini_portile (0.5.2)
53
- minitest (5.4.1)
54
- multi_json (1.8.2)
52
+ mini_portile (0.6.0)
53
+ multi_json (1.10.1)
55
54
  multi_xml (0.5.5)
56
55
  multipart-post (2.0.0)
57
56
  net-scp (1.1.2)
58
57
  net-ssh (>= 2.6.5)
59
58
  net-ssh (2.7.0)
60
- nokogiri (1.6.0)
61
- mini_portile (~> 0.5.0)
62
- oauth2 (0.9.4)
59
+ nokogiri (1.6.3.1)
60
+ mini_portile (= 0.6.0)
61
+ oauth2 (1.0.0)
63
62
  faraday (>= 0.8, < 0.10)
64
63
  jwt (~> 1.0)
65
64
  multi_json (~> 1.3)
66
65
  multi_xml (~> 0.5)
67
66
  rack (~> 1.2)
68
- rack (1.5.2)
69
- rake (0.9.6)
70
- rdoc (4.0.0)
67
+ polyglot (0.3.5)
68
+ rack (1.3.10)
69
+ rake (10.3.2)
70
+ rdoc (4.1.1)
71
+ json (~> 1.4)
71
72
  rest-client (1.6.3)
72
73
  mime-types (>= 1.16)
73
74
  ruby-hmac (0.4.0)
74
75
  thor (0.14.6)
75
76
  thread_safe (0.3.4)
76
- tzinfo (1.2.2)
77
- thread_safe (~> 0.1)
77
+ treetop (1.4.15)
78
+ polyglot
79
+ polyglot (>= 0.3.1)
78
80
  unf (0.1.3)
79
81
  unf_ext
80
82
  unf_ext (0.0.6)
@@ -88,7 +90,8 @@ DEPENDENCIES
88
90
  bundler (~> 1.0)
89
91
  fog (>= 1.15)
90
92
  i18n (~> 0.6.0)
91
- jeweler (~> 2.0)
93
+ jeweler (>= 2.0)
94
+ mail
92
95
  nokogiri (>= 1.6)
93
96
  rest-client (>= 1.6)
94
97
  thor (>= 0.14)
data/README.md CHANGED
@@ -1,11 +1,20 @@
1
1
 
2
2
  [![Gem Version](https://badge.fury.io/rb/cknife.svg)](http://badge.fury.io/rb/cknife)
3
3
 
4
+ # Overview
5
+
6
+ Cali Army Knife, or cknife, is a collection of command line tools.
7
+ It's written in Ruby with Thor, and packaged as a Ruby gem. It
8
+ depends on the Fog gem for all of it's S3 operations.
9
+
4
10
  # Installation
5
11
 
6
12
  Has been tested successfully on Rubies >= 1.9.2 with activesupport >= 3.
7
13
 
8
14
  > gem install cknife
15
+
16
+ # Amazon Web Services (AWS) Command Line Interface
17
+
9
18
  > cknifeaws help
10
19
  Tasks:
11
20
  cknifeaws afew [BUCKET_NAME] # Show first 5 files in bucket
@@ -22,9 +31,9 @@ Has been tested successfully on Rubies >= 1.9.2 with activesupport >= 3.
22
31
  cknifeaws stop_server [SERVER_ID] # Stop a given EC2 server (does not terminate it)
23
32
  cknifeaws upsync [BUCKET_NAME] [DIRECTORY] # Push local files matching glob PATTERN into bucket. Ignore unchanged files.
24
33
 
25
- ## AWS Key and Secret Configuration
34
+ ### AWS Key and Secret Configuration
26
35
 
27
- In order of priority, Setup your key and secret with:
36
+ Setup your AWS key and secret in any of these methods, in order of priority:
28
37
 
29
38
  - $CWD/cknife.yml
30
39
  - $CWD/tmp/cknife.yml
@@ -37,34 +46,29 @@ The format of your cknife.yml must be like so:
37
46
  key: AKIAblahblahb...
38
47
  secret: 8xILhOsecretsecretsecretsecret...
39
48
 
40
- # Overview
41
-
42
- Cali Army Knife, or cknife, is an Amazon Web Services S3 command line
43
- tool, and a few other command line tools, packaged as a Ruby
44
- gem. Written in Ruby with Thor. It depends on the Fog gem for all of
45
- its S3 operations.
46
-
47
- Uses multipart uploads with a chunksize of 10 megabytes to keep RAM
48
- usage down.
49
-
50
- The premier feature of the tool is the "upsync" command, which can be
51
- used to run a backups schedule with multiple classes of files
52
- (partitioned by a glob pattern). **It is your responsibility to
53
- generate one uniquely-named backup file per day**, as this tool does
54
- not do that part for you.
49
+ ### Upload a local directory into an S3 Bucket
55
50
 
56
- If you *don't* use the `backups-retain` option, then its like a very
57
- weak **rsync** that can upload from a local filesystem into a bucket.
58
- Which is also pretty useful.
51
+ Usage:
52
+ cknifeaws upsync [BUCKET_NAME] [DIRECTORY]
59
53
 
60
- [Github Link](https://github.com/mikedll/cali-army-knife)
54
+ Options:
55
+ [--public]
56
+ [--region=REGION]
57
+ # Default: us-east-1
58
+ [--noprompt=NOPROMPT]
59
+ [--glob=GLOB]
60
+ # Default: **/*
61
+ [--backups-retain]
62
+ [--days-retain=N]
63
+ # Default: 30
64
+ [--months-retain=N]
65
+ # Default: 3
66
+ [--weeks-retain=N]
67
+ # Default: 5
68
+ [--dry-run]
61
69
 
62
70
  Some examples:
63
71
 
64
- Download entire my-photos bucke to CWD
65
-
66
- > cknifeaws download my-photos
67
-
68
72
  Upload and sync `/tmp/*.sql` into `my-frog-app-backups`
69
73
  bucket. Treat the files as backup files, and keep one backup
70
74
  file for each of the last 5 months, 10 weeks, and 30 days.
@@ -88,45 +92,33 @@ let's see what will happen, first.
88
92
 
89
93
  > cknifeaws upsync my-frog-app-backups ./tmp --glob "*.sql" --noprompt --backups-retain true --months-retain 5 --weeks-retain 10 --days-retain 30 --dry-run
90
94
 
91
- ### Synchronizing a local directory's files with an Amazon S3 Bucket
95
+ This is the premier feature of the gem.
92
96
 
93
- Usage:
94
- cknifeaws upsync [BUCKET_NAME] [DIRECTORY]
97
+ Uses multipart uploads with a chunksize of 10 megabytes to keep RAM
98
+ usage down.
95
99
 
96
- Options:
97
- [--public]
98
- [--region=REGION]
99
- # Default: us-east-1
100
- [--noprompt=NOPROMPT]
101
- [--glob=GLOB]
102
- # Default: **/*
103
- [--backups-retain]
104
- [--days-retain=N]
105
- # Default: 30
106
- [--months-retain=N]
107
- # Default: 3
108
- [--weeks-retain=N]
109
- # Default: 5
110
- [--dry-run]
100
+ It can be used to run a backups schedule with multiple classes of
101
+ files (partitioned by a glob pattern). **It is your responsibility to
102
+ generate one uniquely-named backup file per day**, as this tool does
103
+ not do that part for you.
104
+
105
+ If you *don't* use the `backups-retain` option, then its like a very
106
+ weak **rsync** that can upload from a local filesystem into a bucket.
107
+ Which is also pretty useful.
111
108
 
112
109
  The glob allows you to determine whether you want to recursively
113
110
  upload an entire directory, or just a set of *.dat or *.sql files,
114
111
  ignoring whatever else may be in the specified directory. This glob
115
112
  pattern is appended to the directory you specify.
116
113
 
117
- For determining whether to upload a file, first the mod time is used,
118
- and if that match fails, an md5 checksum comparison is used.
119
-
120
- The file's local modification time, from the file system from which it
121
- was uploaded, is used to determined whether it qualifies for retention
122
- in the backup program you specify.
123
-
124
- This info is uploaded with the file to Amazon's S3 servers when the
125
- file is uploaded, in the S3 file metadata. Without this, S3 uses a
126
- modtime that is equal to when the file was last uploaded, which is not
127
- comparable to the file's local mod time.
114
+ For determining whether to upload a file, it uses the file's local
115
+ filesystem modification time, and if there is a mismatch then it does
116
+ an md5 checksum comparison, and if there is a mismatch there, then the
117
+ local file will replace the remote one in S3. The file's local
118
+ filesystem modification time is stored on S3 in the S3 object's
119
+ metadata when the file is uploaded.
128
120
 
129
- ### Dumping an Amazon S3 bucket
121
+ ### Download an S3 bucket to a local directory
130
122
 
131
123
  Sometimes you want to download an entire S3 bucket to your local
132
124
  directory - a set of photos, for example.
@@ -142,6 +134,34 @@ directory - a set of photos, for example.
142
134
 
143
135
  Download all files in a bucket to CWD. Or one file.
144
136
 
137
+ Download entire my-photos bucket to CWD
138
+
139
+ > cknifeaws download my-photos
140
+
141
+ # SMTP Email Command Line Interface
142
+
143
+ > cknifemail help
144
+ Tasks:
145
+ cknifemail help [TASK] # Describe available tasks or one specific task
146
+ cknifemail mail [RECIPIENT] [SUBJECT] [TEXT_FILE] # Send an email to recipient.
147
+
148
+ Has been tested to work with the SMTP interface that Amazon SES
149
+ provides, but it should work with Sendgrid and Postmark,
150
+ or any SMTP service.
151
+
152
+ This **requires** the cknife YAML config, with the following field structure.
153
+
154
+ mail:
155
+ from: "Rick Santana <rick.santana@example.com>"
156
+ authentication: login
157
+ address: smtp-server
158
+ port: smtp-port (defaults to 587)
159
+ username: yoursmtpusername
160
+ password: yoursmtppassword
161
+ domain: domain-if-you-like.com
162
+
163
+
164
+
145
165
  # Zerigo Command Line Interface
146
166
 
147
167
  The These tasks can be used to manage your DNS via Zerigo. They changed
@@ -172,11 +192,9 @@ Options:
172
192
  -c Enable colorized output.
173
193
 
174
194
 
175
- # Development
176
-
177
- Be on master.
195
+ # Contributing
178
196
 
179
- git checkout master
197
+ ### Making a release
180
198
 
181
199
  One of the following, like patch. This will create a git commit.
182
200
 
@@ -188,12 +206,19 @@ Create the gem spec.
188
206
 
189
207
  bundle exec rake gemspec:generate
190
208
  git add -A
191
- git commit -m "Generated gemspec for version 0.1.2..."
209
+ git commit -m "Generated gemspec for version 0.1.4"
192
210
 
193
- Move to master and make a release.
211
+ Make a gem release. This will generate a commit and a tag for v0.1.2.
194
212
 
195
- git flow release start rNN
196
- git flow release finish rNN
197
- git checkout master # I think sometimes release finish moves to develop branch.
198
213
  bundle exec rake release
199
214
 
215
+ ### Invoking commands without clobbering the gemspec
216
+
217
+ You can uncommente the 'gem cknife' line in the Gemfile.
218
+
219
+ This allows you to test your changes without having to run `rake
220
+ install` if you don't want to, after every file edit.
221
+
222
+ Don't generate the gemspec with this on, though, or it'll be a self-dependency
223
+ which isn't really what we want.
224
+
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ Jeweler::Tasks.new do |gem|
18
18
  gem.homepage = "http://github.com/mikedll/cali-army-knife"
19
19
  gem.license = "MIT"
20
20
  gem.summary = "Cali Army Knife"
21
- gem.description = "An Amazon Web Services S3 command line tool, and a few other command line tools."
21
+ gem.description = "Cali Army Knife, a collection of command line tools, especially for popular API services."
22
22
  gem.email = "mikedll@mikedll.com"
23
23
  gem.authors = ["Mike De La Loza"]
24
24
  # dependencies defined in Gemfile
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'thor'
4
+ require 'mail'
5
+ require 'cknife/config'
6
+
7
+ class CKnifeEmail < Thor
8
+
9
+ no_tasks do
10
+ def config
11
+ @config ||= CKnife::Config
12
+ end
13
+ end
14
+
15
+ desc "mail [RECIPIENT] [SUBJECT] [TEXT_FILE]", "Send an email to recipient."
16
+ method_options :from => ""
17
+ def mail(recipient, subject, text_file)
18
+ smtp_settings = {
19
+ :address => config['mail.address'],
20
+ :port => config['mail.port'] || 587,
21
+ :domain => config['mail.domain'],
22
+ :authentication => config['mail.authentication'].to_sym,
23
+ :user_name => config['mail.username'],
24
+ :password => config['mail.password'],
25
+ :enable_starttls_auto => true
26
+ }
27
+
28
+ Mail.defaults do
29
+ delivery_method :smtp, smtp_settings
30
+ end
31
+
32
+ from = !options[:from].blank? ? options[:from] : config['mail.from']
33
+ if from.blank?
34
+ say("No from address found. No action taken.")
35
+ return
36
+ end
37
+
38
+ mail = Mail.new do
39
+ from from
40
+ to recipient
41
+ subject subject
42
+ body File.read(text_file)
43
+ end
44
+
45
+ mail.deliver
46
+
47
+ say("Mail delivered to #{recipient}.")
48
+
49
+ end
50
+ end
51
+
52
+ CKnifeEmail.start
@@ -2,24 +2,24 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: cknife 0.1.3 ruby lib
6
5
 
7
6
  Gem::Specification.new do |s|
8
7
  s.name = "cknife"
9
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
10
9
 
11
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
11
  s.authors = ["Mike De La Loza"]
14
12
  s.date = "2014-09-07"
15
- s.description = "An Amazon Web Services S3 command line tool, and a few other command line tools."
13
+ s.description = "Cali Army Knife, a collection of command line tools, especially for popular API services."
16
14
  s.email = "mikedll@mikedll.com"
17
- s.executables = ["cknifeaws", "cknifedub", "cknifenowtimestamp", "cknifewcdir", "cknifezerigo"]
15
+ s.executables = ["cknifeaws", "cknifedub", "cknifemail", "cknifenowtimestamp", "cknifewcdir", "cknifezerigo"]
18
16
  s.extra_rdoc_files = [
19
17
  "LICENSE",
20
18
  "README.md"
21
19
  ]
22
20
  s.files = [
21
+ ".ruby-gemset",
22
+ ".ruby-version",
23
23
  "Gemfile",
24
24
  "Gemfile.lock",
25
25
  "LICENSE",
@@ -28,53 +28,60 @@ Gem::Specification.new do |s|
28
28
  "VERSION",
29
29
  "bin/cknifeaws",
30
30
  "bin/cknifedub",
31
+ "bin/cknifemail",
31
32
  "bin/cknifenowtimestamp",
32
33
  "bin/cknifewcdir",
33
34
  "bin/cknifezerigo",
34
- "cknife.gemspec"
35
+ "cknife.gemspec",
36
+ "cknife.yml.sample",
37
+ "lib/cknife/config.rb"
35
38
  ]
36
39
  s.homepage = "http://github.com/mikedll/cali-army-knife"
37
40
  s.licenses = ["MIT"]
38
- s.rubygems_version = "2.2.2"
41
+ s.require_paths = ["lib"]
42
+ s.rubygems_version = "1.8.28"
39
43
  s.summary = "Cali Army Knife"
40
44
 
41
45
  if s.respond_to? :specification_version then
42
- s.specification_version = 4
46
+ s.specification_version = 3
43
47
 
44
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
49
  s.add_runtime_dependency(%q<rest-client>, [">= 1.6"])
46
50
  s.add_runtime_dependency(%q<nokogiri>, [">= 1.6"])
47
51
  s.add_runtime_dependency(%q<i18n>, ["~> 0.6.0"])
48
52
  s.add_runtime_dependency(%q<activesupport>, [">= 3.0"])
53
+ s.add_runtime_dependency(%q<mail>, [">= 0"])
49
54
  s.add_runtime_dependency(%q<thor>, [">= 0.14"])
50
55
  s.add_runtime_dependency(%q<builder>, [">= 3.0"])
51
56
  s.add_runtime_dependency(%q<fog>, [">= 1.15"])
52
57
  s.add_runtime_dependency(%q<unf>, [">= 0.1"])
53
58
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
54
- s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
59
+ s.add_development_dependency(%q<jeweler>, [">= 2.0"])
55
60
  else
56
61
  s.add_dependency(%q<rest-client>, [">= 1.6"])
57
62
  s.add_dependency(%q<nokogiri>, [">= 1.6"])
58
63
  s.add_dependency(%q<i18n>, ["~> 0.6.0"])
59
64
  s.add_dependency(%q<activesupport>, [">= 3.0"])
65
+ s.add_dependency(%q<mail>, [">= 0"])
60
66
  s.add_dependency(%q<thor>, [">= 0.14"])
61
67
  s.add_dependency(%q<builder>, [">= 3.0"])
62
68
  s.add_dependency(%q<fog>, [">= 1.15"])
63
69
  s.add_dependency(%q<unf>, [">= 0.1"])
64
70
  s.add_dependency(%q<bundler>, ["~> 1.0"])
65
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
71
+ s.add_dependency(%q<jeweler>, [">= 2.0"])
66
72
  end
67
73
  else
68
74
  s.add_dependency(%q<rest-client>, [">= 1.6"])
69
75
  s.add_dependency(%q<nokogiri>, [">= 1.6"])
70
76
  s.add_dependency(%q<i18n>, ["~> 0.6.0"])
71
77
  s.add_dependency(%q<activesupport>, [">= 3.0"])
78
+ s.add_dependency(%q<mail>, [">= 0"])
72
79
  s.add_dependency(%q<thor>, [">= 0.14"])
73
80
  s.add_dependency(%q<builder>, [">= 3.0"])
74
81
  s.add_dependency(%q<fog>, [">= 1.15"])
75
82
  s.add_dependency(%q<unf>, [">= 0.1"])
76
83
  s.add_dependency(%q<bundler>, ["~> 1.0"])
77
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
84
+ s.add_dependency(%q<jeweler>, [">= 2.0"])
78
85
  end
79
86
  end
80
87
 
@@ -0,0 +1,13 @@
1
+ ---
2
+ key: AKIAblahblahb...
3
+ secret: 8xILhOsecretsecretsecretsecret...
4
+
5
+
6
+ mail:
7
+ from: me@mydomain.com
8
+ authentication: login
9
+ address: email-smtp.us-west-2.amazonaws.com
10
+ username: MYSESusername
11
+ password: MYSESpassword
12
+ domain: mydomain.com
13
+
@@ -0,0 +1,49 @@
1
+ module CKnife
2
+ class Config
3
+ def self.config
4
+ return @config if @config
5
+
6
+ @config = {
7
+ :key => ENV["KEY"] || ENV['AMAZON_ACCESS_KEY_ID'],
8
+ :secret => ENV["SECRET"] || ENV['AMAZON_SECRET_ACCESS_KEY']
9
+ }
10
+
11
+ config_file = nil
12
+ Pathname.new(Dir.getwd).tap do |here|
13
+ config_file = [["cknife.yml"], ["tmp", "cknife.yml"]].map { |args|
14
+ here.join(*args)
15
+ }.select { |path|
16
+ File.exists?(path)
17
+ }.first
18
+ end
19
+
20
+ if config_file
21
+ begin
22
+ @config.merge!(YAML.load(config_file.read))
23
+ rescue
24
+ say ("Found, but could not parse config: #{config_file}")
25
+ end
26
+ end
27
+
28
+ @config
29
+ end
30
+
31
+ def self.[](s)
32
+ get(s)
33
+ end
34
+
35
+ def self.get(path)
36
+ cur = config
37
+ path.to_s.split('.').each do |segment|
38
+ cur = cur[segment.force_encoding('UTF-8').to_s] if cur
39
+ end
40
+
41
+ if cur.nil?
42
+ cur = ENV[path]
43
+ end
44
+
45
+ cur
46
+ end
47
+
48
+ end
49
+ end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cknife
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Mike De La Loza
@@ -13,149 +14,186 @@ dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rest-client
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - ">="
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '1.6'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - ">="
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.6'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: nokogiri
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - ">="
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '1.6'
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - ">="
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '1.6'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: i18n
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - "~>"
51
+ - - ~>
46
52
  - !ruby/object:Gem::Version
47
53
  version: 0.6.0
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - "~>"
59
+ - - ~>
53
60
  - !ruby/object:Gem::Version
54
61
  version: 0.6.0
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: activesupport
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - ">="
67
+ - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
69
  version: '3.0'
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - ">="
75
+ - - ! '>='
67
76
  - !ruby/object:Gem::Version
68
77
  version: '3.0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: mail
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: thor
71
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
72
98
  requirements:
73
- - - ">="
99
+ - - ! '>='
74
100
  - !ruby/object:Gem::Version
75
101
  version: '0.14'
76
102
  type: :runtime
77
103
  prerelease: false
78
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
79
106
  requirements:
80
- - - ">="
107
+ - - ! '>='
81
108
  - !ruby/object:Gem::Version
82
109
  version: '0.14'
83
110
  - !ruby/object:Gem::Dependency
84
111
  name: builder
85
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
86
114
  requirements:
87
- - - ">="
115
+ - - ! '>='
88
116
  - !ruby/object:Gem::Version
89
117
  version: '3.0'
90
118
  type: :runtime
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
93
122
  requirements:
94
- - - ">="
123
+ - - ! '>='
95
124
  - !ruby/object:Gem::Version
96
125
  version: '3.0'
97
126
  - !ruby/object:Gem::Dependency
98
127
  name: fog
99
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
100
130
  requirements:
101
- - - ">="
131
+ - - ! '>='
102
132
  - !ruby/object:Gem::Version
103
133
  version: '1.15'
104
134
  type: :runtime
105
135
  prerelease: false
106
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
107
138
  requirements:
108
- - - ">="
139
+ - - ! '>='
109
140
  - !ruby/object:Gem::Version
110
141
  version: '1.15'
111
142
  - !ruby/object:Gem::Dependency
112
143
  name: unf
113
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
114
146
  requirements:
115
- - - ">="
147
+ - - ! '>='
116
148
  - !ruby/object:Gem::Version
117
149
  version: '0.1'
118
150
  type: :runtime
119
151
  prerelease: false
120
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
121
154
  requirements:
122
- - - ">="
155
+ - - ! '>='
123
156
  - !ruby/object:Gem::Version
124
157
  version: '0.1'
125
158
  - !ruby/object:Gem::Dependency
126
159
  name: bundler
127
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
128
162
  requirements:
129
- - - "~>"
163
+ - - ~>
130
164
  - !ruby/object:Gem::Version
131
165
  version: '1.0'
132
166
  type: :development
133
167
  prerelease: false
134
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
135
170
  requirements:
136
- - - "~>"
171
+ - - ~>
137
172
  - !ruby/object:Gem::Version
138
173
  version: '1.0'
139
174
  - !ruby/object:Gem::Dependency
140
175
  name: jeweler
141
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
142
178
  requirements:
143
- - - "~>"
179
+ - - ! '>='
144
180
  - !ruby/object:Gem::Version
145
181
  version: '2.0'
146
182
  type: :development
147
183
  prerelease: false
148
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
149
186
  requirements:
150
- - - "~>"
187
+ - - ! '>='
151
188
  - !ruby/object:Gem::Version
152
189
  version: '2.0'
153
- description: An Amazon Web Services S3 command line tool, and a few other command
154
- line tools.
190
+ description: Cali Army Knife, a collection of command line tools, especially for popular
191
+ API services.
155
192
  email: mikedll@mikedll.com
156
193
  executables:
157
194
  - cknifeaws
158
195
  - cknifedub
196
+ - cknifemail
159
197
  - cknifenowtimestamp
160
198
  - cknifewcdir
161
199
  - cknifezerigo
@@ -164,6 +202,8 @@ extra_rdoc_files:
164
202
  - LICENSE
165
203
  - README.md
166
204
  files:
205
+ - .ruby-gemset
206
+ - .ruby-version
167
207
  - Gemfile
168
208
  - Gemfile.lock
169
209
  - LICENSE
@@ -172,32 +212,39 @@ files:
172
212
  - VERSION
173
213
  - bin/cknifeaws
174
214
  - bin/cknifedub
215
+ - bin/cknifemail
175
216
  - bin/cknifenowtimestamp
176
217
  - bin/cknifewcdir
177
218
  - bin/cknifezerigo
178
219
  - cknife.gemspec
220
+ - cknife.yml.sample
221
+ - lib/cknife/config.rb
179
222
  homepage: http://github.com/mikedll/cali-army-knife
180
223
  licenses:
181
224
  - MIT
182
- metadata: {}
183
225
  post_install_message:
184
226
  rdoc_options: []
185
227
  require_paths:
186
228
  - lib
187
229
  required_ruby_version: !ruby/object:Gem::Requirement
230
+ none: false
188
231
  requirements:
189
- - - ">="
232
+ - - ! '>='
190
233
  - !ruby/object:Gem::Version
191
234
  version: '0'
235
+ segments:
236
+ - 0
237
+ hash: 1159768603036288882
192
238
  required_rubygems_version: !ruby/object:Gem::Requirement
239
+ none: false
193
240
  requirements:
194
- - - ">="
241
+ - - ! '>='
195
242
  - !ruby/object:Gem::Version
196
243
  version: '0'
197
244
  requirements: []
198
245
  rubyforge_project:
199
- rubygems_version: 2.2.2
246
+ rubygems_version: 1.8.28
200
247
  signing_key:
201
- specification_version: 4
248
+ specification_version: 3
202
249
  summary: Cali Army Knife
203
250
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: c1293d3d86b51ccb19a9cbb29970bffe45aed92b
4
- data.tar.gz: 2e079ea3f28e0ef212a83c92894966bc302d11fe
5
- SHA512:
6
- metadata.gz: d59dcae7d2f5b8febad7586ab10a383a3822d8107355687c1e3c3796395896c1b84be46ea6e286e21e136b59f24319fcb50fb6b9e9574513440d6a5849b2dd1c
7
- data.tar.gz: 405ae32f2af7c2da369be82bf1d285f9a393794c2bac4eb6d7763d499a44ec1ea4e7b692830a462338262415b72276eabeb892c0d32d55470426eac2f667a818