Skip to content

Commit

Permalink
Initial commit: v0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
MinasMazar committed Jun 4, 2016
0 parents commit 65cde43
Show file tree
Hide file tree
Showing 12 changed files with 176 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/.bundle/
/.yardoc
/Gemfile.lock
/_yardoc/
/coverage/
/doc/
/pkg/
/spec/reports/
/tmp/
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
language: ruby
rvm:
- 2.2.3
before_install: gem install bundler -v 1.11.2
4 changes: 4 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
source 'https://rubygems.org'

# Specify your gem's dependencies in ultron.gemspec
gemspec
36 changes: 36 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Ultron

Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/ultron`. To experiment with that code, run `bin/console` for an interactive prompt.

TODO: Delete this and the text above, and describe your gem

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'ultron'
```

And then execute:

$ bundle

Or install it yourself as:

$ gem install ultron

## Usage

TODO: Write usage instructions here

## Development

After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/ultron.

10 changes: 10 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require "bundler/gem_tasks"
require "rake/testtask"

Rake::TestTask.new(:test) do |t|
t.libs << "test"
t.libs << "lib"
t.test_files = FileList['test/**/*_test.rb']
end

task :default => :spec
14 changes: 14 additions & 0 deletions bin/console
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env ruby

require "bundler/setup"
require "ultron"

# You can add fixtures and/or initialization code here to make experimenting
# with your gem easier. You can also use a different console, if you like.

# (If you use this, don't forget to add pry to your Gemfile!)
# require "pry"
# Pry.start

require "irb"
IRB.start
8 changes: 8 additions & 0 deletions bin/setup
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
set -vx

bundle install

# Do any other automated setup that you need to do here
41 changes: 41 additions & 0 deletions lib/ultron.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
require "ultron/version"

module Ultron
@@ultron_instance = nil
def self.init(file)
@@ultron_instance ||= Instance.new(file)
end
def self.update!(data)
@@ultron_instance || init($0) && @@ultron_instance.update!(data)
end
def self.inst
@@ultron_instance || init($0)
end
class Instance
attr_reader :file, :data_pos
attr_accessor :data
def initialize(file)
@file = file
unless defined? DATA
f = File.new @file, "r+"
f.seek 0, File::SEEK_END
f.write "\n__END__\n"
@data_pos = f.pos
@data = []
f.flush
f.close
else
@data_pos = DATA.pos
@data = DATA.readlines.map(&:chomp)
end
end
def update!(data = [])
data = [ data ] unless data.kind_of? Array
@data += data
file = File.new @file, "r+"
file.seek @data_pos
file.write @data.join "\n"
file.close
end
end
end
3 changes: 3 additions & 0 deletions lib/ultron/version.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module Ultron
VERSION = "0.1.0"
end
4 changes: 4 additions & 0 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
require 'ultron'

require 'minitest/autorun'
11 changes: 11 additions & 0 deletions test/ultron_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require 'test_helper'

class UltronTest < Minitest::Test
def test_that_it_has_a_version_number
refute_nil ::Ultron::VERSION
end

def test_it_does_something_useful
assert false
end
end
32 changes: 32 additions & 0 deletions ultron.gemspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'ultron/version'

Gem::Specification.new do |spec|
spec.name = "ultron"
spec.version = Ultron::VERSION
spec.authors = ["MinasMazar"]
spec.email = ["minasmazar@gmail.com"]

spec.summary = %q{Ultron manage DATA stream in __FILE__}
spec.description = ""
spec.homepage = ""

# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
# delete this section to allow pushing this gem to any host.
if spec.respond_to?(:metadata)
spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
else
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
end

spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]

spec.add_development_dependency "bundler", "~> 1.11"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "minitest", "~> 5.0"
end

0 comments on commit 65cde43

Please sign in to comment.