krl 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
+