krl 0.1.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2010 Kynetx Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/bin/krl ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ LIB_DIR = File.dirname(__FILE__) + "/../lib/"
5
+
6
+ COMMANDS = {
7
+ "help" => lambda { |args| require LIB_DIR + 'help'; KRL_CMD::Help.go },
8
+ "apps" => lambda { |args| require LIB_DIR + 'apps'; KRL_CMD::Apps.go },
9
+ "checkout" => lambda { |args| require LIB_DIR + 'checkout'; KRL_CMD::Checkout.go(args) },
10
+ "create" => lambda { |args| require LIB_DIR + 'create'; KRL_CMD::Create.go(args) },
11
+ "update" => lambda { |args| require LIB_DIR + 'update'; KRL_CMD::Update.go(args) },
12
+ "versions" => lambda { |args| require LIB_DIR + 'versions'; KRL_CMD::Versions.go(args) },
13
+ "deploy" => lambda { |args| require LIB_DIR + 'deploy'; KRL_CMD::Deploy.go(args) },
14
+ "commit" => lambda { |args| require LIB_DIR + 'commit'; KRL_CMD::Commit.go },
15
+ "show" => lambda { |args| require LIB_DIR + 'show'; KRL_CMD::Show.go(args) },
16
+ "note" => lambda { |args| require LIB_DIR + 'note'; KRL_CMD::Note.go(args) },
17
+ "check" => lambda { |args| require LIB_DIR + 'check'; KRL_CMD::Check.go },
18
+ "generate" => lambda { |args| require LIB_DIR + 'generate'; KRL_CMD::Generate.go(args) },
19
+ "test" => lambda { |args| require LIB_DIR + 'test'; KRL_CMD::Test.go(args) }
20
+ }
21
+
22
+ banner = "Usage: krl <command> <args>\nUse 'krl help' for more information."
23
+
24
+ cmd = ARGV.shift
25
+ if COMMANDS.keys.include? cmd
26
+ begin
27
+ COMMANDS[cmd].call(ARGV)
28
+ rescue Exception => e
29
+ puts "Error: #{e.message}\n#{e.backtrace.join("\n")}"
30
+ end
31
+ else
32
+ puts banner
33
+ end
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "rubygems"
4
+ require "sinatra"
5
+ require "yaml"
6
+ require "kynetx_am_api"
7
+
8
+ set :environment, :production
9
+ set :sessions, :false
10
+ set :logging, :false
11
+ set :port, 3009
12
+
13
+ CONFIG_FILE = ENV["HOME"] + "/.krl/credentials.yml"
14
+
15
+ puts "#{"\n"*10}Go to the following url to authorize. Press ctrl+c when finished.\n http://localhost:3009#{"\n"*10}"
16
+
17
+ get '/authorize' do
18
+ rt = YAML::load_file(CONFIG_FILE)
19
+ api = setup_api(rt.merge({:oauth_verifier => params[:oauth_verifier]}))
20
+ @oauth_user = api.get_user_info
21
+ File.open(CONFIG_FILE, "w") {|f| f.print @oauth_user.to_h.to_yaml}
22
+ erb :success
23
+ end
24
+
25
+ get '/' do
26
+ FileUtils.mkdir_p ENV["HOME"] + "/.krl" unless File.exist?(CONFIG_FILE)
27
+ rt = get_request_token
28
+ config = {}
29
+ config[:request_token] = rt[:request_token]
30
+ config[:request_secret] = rt[:request_secret]
31
+ File.open(CONFIG_FILE, "w") {|f| f.print config.to_yaml}
32
+
33
+ @auth_url = rt[:url]
34
+
35
+ erb :index
36
+ end
37
+
38
+
39
+
40
+ def get_request_token
41
+ api = setup_api
42
+ rt = api.get_request_token
43
+ return {:request_token => rt.token, :request_secret => rt.secret, :url => api.get_authorize_url}
44
+ end
45
+
46
+ def setup_api(opts={})
47
+ KynetxAmApi::Oauth.api_server_url = "http://amapi.kynetx.com"
48
+ KynetxAmApi::Oauth.accounts_server_url = "https://accounts.kynetx.com"
49
+ KynetxAmApi::Oauth.consumer_key = "1j54YDLUcLW9ERBKalNm"
50
+ KynetxAmApi::Oauth.consumer_secret = "QiWCbvTpCAejoceV3f6dD8ycifEkSumFAW1VSmwC"
51
+ return KynetxAmApi::DirectApi.new(opts)
52
+ end
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
+
8
+ <title>KRL Connect</title>
9
+
10
+ </head>
11
+
12
+ <body>
13
+
14
+ Authenticate the Kynetx Command line Tool!
15
+
16
+ <br>
17
+
18
+ <a href="<%= @auth_url %>" >Click here to get started!</a>
19
+
20
+
21
+
22
+
23
+ </body>
24
+ </html>
@@ -0,0 +1,32 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
+
8
+ <title>Success</title>
9
+
10
+ </head>
11
+
12
+ <body>
13
+ Welcome, <%= @oauth_user.name %><br>
14
+
15
+ A file called <code><%= CONFIG_FILE %></code> was created that holds your credentials. You will now be able to do the following:
16
+
17
+ <br><br>
18
+
19
+ <strong>View your apps:</strong><br>
20
+ <code>krl list</code><br>
21
+ <br>
22
+ <strong>Check out an app:</strong><br>
23
+ <code>krl checkout &lt;app id&gt;</code><br>
24
+ <br>
25
+ <strong>View all options</strong><br>
26
+ <code>krl help</code><br>
27
+ <br><br>
28
+ Have Fun!
29
+
30
+
31
+ </body>
32
+ </html>
@@ -0,0 +1,14 @@
1
+ module KRL_CMD
2
+ class Apps
3
+ def self.go
4
+ require LIB_DIR + 'user'
5
+ require LIB_DIR + 'common'
6
+ user = User.new
7
+ KRL_COMMON::pretty_table(user.applications["apps"], [
8
+ {:field => "Ruleset ID", :value => lambda { |r| r["appid"] }},
9
+ {:field => "Name", :value => lambda { |r| r["name"].to_s }},
10
+ {:field => "Role", :value => lambda { |r| r["role"] }}
11
+ ])
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ module KRL_CMD
2
+ class Check
3
+ def self.go
4
+ require LIB_DIR + 'common'
5
+ require 'json'
6
+ app = KRL_COMMON::get_app
7
+ krl_file = File.join(Dir.pwd, app.application_id + ".krl")
8
+ raise "Cannot find .krl file." unless File.exists?(krl_file)
9
+ apiurl = "http://krl.kobj.net/manage/parse/ruleset"
10
+ apiargs = { "krl" => File.open(krl_file, 'r') { |f| f.read } }
11
+ validateresponse = Net::HTTP.post_form(URI.parse(apiurl), apiargs).body.to_s
12
+ jdata = JSON.parse(validateresponse, { :max_nesting => false })
13
+ if jdata["error"]
14
+ puts jdata["error"]
15
+ else
16
+ puts "OK"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ require LIB_DIR + 'user'
2
+ require 'fileutils'
3
+
4
+ module KRL_CMD
5
+ class Checkout
6
+ def self.go(args)
7
+ ruleset_id = args.to_s
8
+ puts "Checking out: #{ruleset_id}"
9
+ raise "Please specify a ruleset id." if ruleset_id.empty?
10
+ root_dir = Dir.pwd + "/#{ruleset_id}"
11
+ raise "Directory already exists." if File.exists?(root_dir)
12
+ user = User.new
13
+ app = user.find_application({:application_id => ruleset_id})
14
+
15
+ puts "Creating directory: #{root_dir}"
16
+ FileUtils.mkdir root_dir
17
+ app_details = {
18
+ :name => app.name,
19
+ :ruleset_id => app.application_id,
20
+ :role => user.owns_current? ? "owner" : "developer"
21
+ }
22
+ File.open(root_dir + "/.app", "w") { |f| f.print(app_details.to_yaml) }
23
+ File.open(root_dir + "/#{ruleset_id}.krl", "w") { |f| f.print(app.krl) }
24
+
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ module KRL_CMD
2
+ class Commit
3
+ def self.go
4
+ require LIB_DIR + 'common'
5
+ app = KRL_COMMON::get_app
6
+ krl_file = File.join(Dir.pwd, app.application_id + ".krl")
7
+ if File.exists?(krl_file)
8
+ app.krl = File.open(krl_file, 'r') { |f| f.read }
9
+ else
10
+ raise "Unable to find file: #{krl_file}"
11
+ end
12
+ puts "Committed version #{app.version}"
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,37 @@
1
+ require 'terminal-table/import'
2
+ module KRL_COMMON
3
+ def self.pretty_table(collection, fields, limit=0)
4
+ ptable = table do |t|
5
+
6
+ t.headings = fields.collect{ |h| h[:field] }
7
+ counter = 0
8
+ collection.each do |c|
9
+ row = []
10
+ fields.each do |f|
11
+ row << f[:value].call(c)
12
+ end
13
+ t << row
14
+ counter += 1
15
+ break if limit > 0 && limit == counter
16
+ end
17
+
18
+ end
19
+ puts ptable
20
+ end
21
+
22
+ def self.get_app(version="development")
23
+ require LIB_DIR + "user"
24
+ begin
25
+ root_dir = Dir.pwd
26
+ raise "Please re-checkout your app or make sure you are in the root directory of an app." unless File.exists?(File.join(root_dir, ".app"))
27
+ config = YAML::load_file(File.join(root_dir, '.app'))
28
+ user = KRL_CMD::User.new
29
+ app = user.find_application(:application_id => config[:ruleset_id], :version => version)
30
+ return app
31
+ rescue Exception => e
32
+ raise "Unable to get app information. #{e.message}"
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,15 @@
1
+ module KRL_CMD
2
+ class Create
3
+ def self.go(args)
4
+ raise "An application name must be specified" if args.to_s.empty?
5
+ name = args.first
6
+ desc = args.last # if description wasn't specified, set it to the name
7
+ require LIB_DIR + 'user'
8
+ require LIB_DIR + 'checkout'
9
+ user = KRL_CMD::User.new
10
+ new_app = user.create_application(name, desc)
11
+ KRL_CMD::Checkout.go(new_app.application_id)
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ module KRL_CMD
2
+ class Deploy
3
+ def self.go(args)
4
+ version = args.to_s.empty? ? "development" : args.to_s.to_i
5
+ require LIB_DIR + 'common'
6
+ app = KRL_COMMON::get_app
7
+ app.production_version = version
8
+ puts "Deployed version: #{app.production_version}"
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,83 @@
1
+ require 'fileutils'
2
+ require 'base64'
3
+ module KRL_CMD
4
+ class Generate
5
+ def self.go(args)
6
+ raise "Please specify an endpoint to generate" if args.to_s.empty?
7
+ type = args.shift
8
+ endpoints = {
9
+ "firefox" => lambda {gen_extension(type, args)},
10
+ "chrome" => lambda {gen_extension(type, args)},
11
+ "ie" => lambda {gen_extension(type, args)},
12
+ "bookmarklet" => lambda {gen_bookmarklet(args)},
13
+ "infocard" => lambda {gen_infocard(args)}
14
+ }
15
+ if endpoints[type]
16
+ endpoints[type].call
17
+ else
18
+ raise "Unknown endpoint specified (#{type})"
19
+ end
20
+
21
+ end
22
+
23
+ def self.gen_extension(type, args)
24
+ puts "Generating Extension (#{type.to_s}) #{args.join(', ')}"
25
+ ext = app.extension(type, args[0] || "", args[1] || "", args[2] || "" )
26
+ write_file(ext, "prod")
27
+ end
28
+
29
+ def self.gen_bookmarklet(args, env="prod")
30
+ puts "Generating Bookmarklet (#{env})"
31
+ bm = ""
32
+ if args.to_s.empty?
33
+ bm = app.bookmarklet(env)
34
+ else
35
+ bm = app.bookmarklet(env, args.to_s)
36
+ end
37
+ bm_file = File.join(get_endpoint_dir(env), env + "_bookmarklet.html")
38
+ File.open(bm_file, 'w') do |f|
39
+ f.print("<textarea rows='5' cols='100'>#{bm}</textarea><br><br>")
40
+ link = env == "prod" ? app.name : env + "_" + app.name
41
+ f.print("<a href='#{bm}'>#{link}</a>")
42
+ end
43
+ puts "BOOKMARKLET:"
44
+ puts bm
45
+ puts
46
+ puts "Saved bookmarklet to #{bm_file}."
47
+ end
48
+
49
+ def self.gen_infocard(args, env="prod")
50
+ raise "You must specify a name for the card" if args.empty?
51
+ puts "Generating Infocard (#{env})"
52
+ icard = app.infocard(args[0] || "", args[1] || "", env)
53
+ write_file(icard, env)
54
+ end
55
+
56
+ def self.app
57
+ return @@app if defined?@@app
58
+ require LIB_DIR + 'common'
59
+ @@app = KRL_COMMON::get_app
60
+ return @@app
61
+ end
62
+
63
+ def self.get_endpoint_dir(env)
64
+ dir_name = env == "prod" ? "/endpoints" : "/test"
65
+ endpoint_dir = Dir.pwd + dir_name
66
+ FileUtils.mkdir(endpoint_dir) unless File.directory?(endpoint_dir)
67
+ return endpoint_dir
68
+ end
69
+
70
+ def self.write_file(ext, env)
71
+ if ext["errors"].empty?
72
+ endpoint_dir = get_endpoint_dir(env)
73
+ ext_file_name = File.join(endpoint_dir, ext["file_name"])
74
+ File.open(ext_file_name, 'wb') do |f|
75
+ f.write Base64.decode64(ext["data"])
76
+ end
77
+ puts "Endpoint was created: #{ext_file_name}"
78
+ else
79
+ raise ext["errors"].join("\n")
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,67 @@
1
+ module KRL_CMD
2
+ class Help
3
+ def self.go
4
+ puts
5
+ puts "Kynetx Rule Language Commandline tool."
6
+ puts "Authenticating / Connecting"
7
+ puts "In order to connect to your Kynetx account you must first"
8
+ puts "go through an OAuth ceremony. This is a process that must "
9
+ puts "be done on the web for now. In order to connect run the "
10
+ puts "following command:"
11
+ puts "krl-connect"
12
+ puts
13
+ puts "Once connected, you will be able to run the following commands:"
14
+ puts "Usage: krl <command> <args>"
15
+ puts
16
+ puts "Commands:"
17
+ puts "apps".ljust(20) + "Lists your apps"
18
+ puts " ".ljust(20) + "Example: krl apps"
19
+ puts "checkout".ljust(20) + "Creates a directory structure with the application."
20
+ puts " ".ljust(20) + "you have checked out. "
21
+ puts " ".ljust(20) + "Example: krl checkout a1x2"
22
+ puts "create".ljust(20) + "Creates a new application. Specify an app name and, optionally, a description."
23
+ puts " ".ljust(20) + "Example: krl create 'Hello World'"
24
+ puts " ".ljust(20) + "or: krl create 'Hello World' 'App that displays Hello World'"
25
+ puts ""
26
+ puts "You must be in the root directory of your app to run the following commands:"
27
+ puts "update".ljust(20) + "Overwrites your current .krl file with the specified version."
28
+ puts " ".ljust(20) + "If no version is specified, then the latest version will be used."
29
+ puts " ".ljust(20) + "Example: krl update"
30
+ puts " ".ljust(20) + "or: krl update 10"
31
+ puts "commit".ljust(20) + "Saves your .krl file as the latest version. "
32
+ puts " ".ljust(20) + "Example: krl commit"
33
+ puts "deploy".ljust(20) + "Deploys a version of your application. If no version is"
34
+ puts " ".ljust(20) + "specified then the latest version is deployed."
35
+ puts " ".ljust(20) + "Example: krl deploy"
36
+ puts " ".ljust(20) + "or: krl deploy 10 -- deploys version 10"
37
+ puts "versions".ljust(20) + "Displays a list of all the versions of your app."
38
+ puts " ".ljust(20) + "Example: krl versions"
39
+ puts " ".ljust(20) + "You can also display just the last (n) versions by specifying a limit."
40
+ puts " ".ljust(20) + "Example: krl versions 10 -- shows only the previous 10 versions"
41
+ puts "note".ljust(20) + "Adds a note to a version."
42
+ puts " ".ljust(20) + "Example: krl note 10 'This is the deployed version'"
43
+ puts " ".ljust(20) + " -- Adds a note to version 10 of 'This is the deployed version'"
44
+ puts "show".ljust(20) + "Shows a specific version of the app."
45
+ puts " ".ljust(20) + "Example: krl show 10"
46
+ puts "generate".ljust(20) + "Generates an endpoint and places it in the endpoints directory."
47
+ puts " ".ljust(20) + "Example: krl generate firefox"
48
+ puts " ".ljust(20) + "Available endpoints: "
49
+ puts " ".ljust(20) + "firefox name author description"
50
+ puts " ".ljust(20) + "chrome name author description"
51
+ puts " ".ljust(20) + "ie name author description"
52
+ puts " ".ljust(20) + "bookmarklet"
53
+ puts " ".ljust(20) + "infocard name datasets(optional)"
54
+ puts "test".ljust(20) + "Generates a test endpoint that always executes the latest version."
55
+ puts " ".ljust(20) + "The endpoint is saved in the test directory. If no endpoint is "
56
+ puts " ".ljust(20) + "specified a bookmarklet will be generated."
57
+ puts " ".ljust(20) + "Example: krl test"
58
+ puts " ".ljust(20) + "or: krl test infocard"
59
+ puts " ".ljust(20) + "Available test endpoints: "
60
+ puts " ".ljust(20) + "bookmarklet runtime(optional)"
61
+ puts " ".ljust(20) + "infocard name datasets(optional)"
62
+ puts "check".ljust(20) + "Performs a syntax check of your .krl file."
63
+ puts
64
+ puts "* not implemented yet."
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,13 @@
1
+ module KRL_CMD
2
+ class Note
3
+ def self.go(args)
4
+ raise "Please supply a version and a note. (note must be enclosed in quotes)" unless args.length == 2
5
+ version = args.first.to_i
6
+ note = args.last.to_s
7
+ require LIB_DIR + 'common'
8
+ app = KRL_COMMON::get_app
9
+ app.set_version_note(version, note)
10
+ puts "Done."
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ module KRL_CMD
2
+ class Show
3
+ def self.go(args)
4
+ version = args.to_s.empty? ? "development" : args.to_s.to_i
5
+ require LIB_DIR + 'common'
6
+ app = KRL_COMMON::get_app
7
+ puts "KRL for version #{version}"
8
+ puts app.krl(version)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,21 @@
1
+ require 'fileutils'
2
+ module KRL_CMD
3
+ class Test
4
+ def self.go(args)
5
+ type = args[0] || "bookmarklet"
6
+ args.shift if args
7
+
8
+ require LIB_DIR + 'generate'
9
+ if type == "bookmarklet"
10
+ KRL_CMD::Generate.gen_bookmarklet(args, "dev")
11
+ elsif type == "infocard"
12
+ KRL_CMD::Generate.gen_infocard(args, "dev")
13
+ else
14
+ puts "Unknown test endpoint (#{type})"
15
+ end
16
+
17
+ end
18
+
19
+
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ module KRL_CMD
2
+ class Update
3
+ def self.go(args)
4
+ version = args.to_s.empty? ? "development" : args.to_s.to_i
5
+ require LIB_DIR + 'common'
6
+ app = KRL_COMMON::get_app
7
+ root_dir = Dir.pwd
8
+ File.open(File.join(Dir.pwd, app.application_id + ".krl"), "w") { |f| f.print(app.krl(version)) }
9
+ puts "Updated to version: #{version}"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ require 'yaml'
2
+ require "kynetx_am_api"
3
+ CONFIG_FILE = ENV["HOME"] + "/.krl/credentials.yml"
4
+
5
+ module KRL_CMD
6
+ class User < KynetxAmApi::User
7
+
8
+ def initialize(opts={})
9
+ KynetxAmApi::Oauth.api_server_url = "http://amapi.kynetx.com"
10
+ KynetxAmApi::Oauth.accounts_server_url = "https://accounts.kynetx.com"
11
+ KynetxAmApi::Oauth.consumer_key = "1j54YDLUcLW9ERBKalNm"
12
+ KynetxAmApi::Oauth.consumer_secret = "QiWCbvTpCAejoceV3f6dD8ycifEkSumFAW1VSmwC"
13
+ config = YAML::load_file(CONFIG_FILE)
14
+ super(opts.merge(config))
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ module KRL_CMD
2
+ class Versions
3
+ def self.go(args)
4
+ require LIB_DIR + 'common'
5
+ limit = args.to_s.to_i
6
+ app = KRL_COMMON::get_app
7
+ p_version = app.production_version.to_i
8
+ KRL_COMMON::pretty_table(app.versions, [
9
+ {:field => "Version", :value => lambda { |r| r["version"] }},
10
+ {:field => "User", :value => lambda { |r| r["name"] }},
11
+ {:field => "Date", :value => lambda { |r| r["created"].to_s }},
12
+ {:field => "Note", :value => lambda { |r| r["note"].to_s }},
13
+ {:field => "Production", :value => lambda { |r| r["version"] == p_version ? "Yes" : "No" }}
14
+ ], limit)
15
+ end
16
+ end
17
+ end
metadata ADDED
@@ -0,0 +1,132 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: krl
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
10
+ platform: ruby
11
+ authors:
12
+ - Michael Farmer, Cid Dennis
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-05-04 00:00:00 -06:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: kynetx_am_api
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 1
30
+ - 2
31
+ version: 0.1.2
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: terminal-table
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :runtime
45
+ version_requirements: *id002
46
+ - !ruby/object:Gem::Dependency
47
+ name: sinatra
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ segments:
54
+ - 1
55
+ - 0
56
+ version: "1.0"
57
+ type: :runtime
58
+ version_requirements: *id003
59
+ - !ruby/object:Gem::Dependency
60
+ name: rspec
61
+ prerelease: false
62
+ requirement: &id004 !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ segments:
67
+ - 0
68
+ version: "0"
69
+ type: :development
70
+ version_requirements: *id004
71
+ description: " Installing this gem will give you command line tools that will allow you\n to develop your Kynetx applications using any IDE you desire. It provides \n a simple interface that is similar to git or svn.\n"
72
+ email: mjf@kynetx.com
73
+ executables:
74
+ - krl
75
+ - krl-connect
76
+ extensions: []
77
+
78
+ extra_rdoc_files:
79
+ - LICENSE
80
+ files:
81
+ - lib/apps.rb
82
+ - lib/check.rb
83
+ - lib/checkout.rb
84
+ - lib/commit.rb
85
+ - lib/common.rb
86
+ - lib/create.rb
87
+ - lib/deploy.rb
88
+ - lib/generate.rb
89
+ - lib/help.rb
90
+ - lib/note.rb
91
+ - lib/show.rb
92
+ - lib/test.rb
93
+ - lib/update.rb
94
+ - lib/user.rb
95
+ - lib/versions.rb
96
+ - bin/krl
97
+ - bin/krl-connect
98
+ - bin/views/index.erb
99
+ - bin/views/success.erb
100
+ - LICENSE
101
+ has_rdoc: true
102
+ homepage: http://www.kynetx.com
103
+ licenses: []
104
+
105
+ post_install_message:
106
+ rdoc_options:
107
+ - --charset=UTF-8
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ segments:
122
+ - 0
123
+ version: "0"
124
+ requirements: []
125
+
126
+ rubyforge_project:
127
+ rubygems_version: 1.3.6
128
+ signing_key:
129
+ specification_version: 3
130
+ summary: Provides terminal access to the Kynetx Applicaiton API
131
+ test_files: []
132
+