textools 0.0.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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +29 -0
- data/Rakefile +7 -0
- data/bin/textools +3 -0
- data/lib/textools.rb +6 -0
- data/lib/textools/commands.rb +63 -0
- data/lib/textools/templates/.gitignore +9 -0
- data/lib/textools/templates/clean.bat +9 -0
- data/lib/textools/templates/clean.sh +9 -0
- data/lib/textools/version.rb +3 -0
- data/test/textools/test_commands.rb +43 -0
- data/textools.gemspec +22 -0
- metadata +70 -0
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            # Textools
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ## Installation
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                $> gem install textools
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## Usage
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Creating a new LaTeX project works like this:
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                $> textools create test
         | 
| 12 | 
            +
                     create  test
         | 
| 13 | 
            +
                     create  test/.gitignore
         | 
| 14 | 
            +
                     create  test/clean.bat
         | 
| 15 | 
            +
                     create  test/clean.sh
         | 
| 16 | 
            +
                     create  test/images
         | 
| 17 | 
            +
                     create  test/includes
         | 
| 18 | 
            +
                     inside  test
         | 
| 19 | 
            +
                        run    git init
         | 
| 20 | 
            +
                        run    git add .
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            Inside a LaTeX project, you can remove any temporary files like this:
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                $> textools clean
         | 
| 25 | 
            +
                       remove  test.pdf
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ## URLs
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            * https://github.com/simonharrer/textools
         | 
    
        data/Rakefile
    ADDED
    
    
    
        data/bin/textools
    ADDED
    
    
    
        data/lib/textools.rb
    ADDED
    
    
| @@ -0,0 +1,63 @@ | |
| 1 | 
            +
            require 'thor'
         | 
| 2 | 
            +
            require 'thor/group'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Textools
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              class App < Thor
         | 
| 7 | 
            +
                include Thor::Actions
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                desc 'create PROJECT_NAME', 'create a new LaTeX project'
         | 
| 10 | 
            +
                method_options :working_directory => '.'
         | 
| 11 | 
            +
                def create(name)
         | 
| 12 | 
            +
                  # workaround as default options does not work
         | 
| 13 | 
            +
                  parent_directory = options[:working_directory] || '.'
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  directory = File.join(parent_directory,name)
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  # create project directory
         | 
| 18 | 
            +
                  empty_directory(directory)
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  # copy required files
         | 
| 21 | 
            +
                  ['.gitignore', 'clean.bat', 'clean.sh'].each do |file|
         | 
| 22 | 
            +
                    copy_file file,File.join(directory,file)
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  # directories
         | 
| 26 | 
            +
                  empty_directory(File.join(directory, "images"))
         | 
| 27 | 
            +
                  empty_directory(File.join(directory, "includes"))
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  # create containing directory
         | 
| 30 | 
            +
                  inside(File.join(parent_directory,name), :verbose => true) do |folder|
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    # initialize git repository
         | 
| 33 | 
            +
                    run("git init")
         | 
| 34 | 
            +
                    # add all files to the staging area
         | 
| 35 | 
            +
                    run("git add .")
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                desc 'clean','cleans the current LaTeX project'
         | 
| 41 | 
            +
                method_options :working_directory => "."
         | 
| 42 | 
            +
                def clean
         | 
| 43 | 
            +
                  # workaround as default options does not work
         | 
| 44 | 
            +
                  parent_directory = options[:working_directory] || '.'
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  require "fileutils"
         | 
| 47 | 
            +
                  %w{*.aux *.bbl *.log *.pdf *.pgf *.dvi *.synctex* *.toc *.blg}.each do |pattern|
         | 
| 48 | 
            +
                    Dir.glob(File.join(parent_directory,pattern)).each do |file|
         | 
| 49 | 
            +
                      remove_file file
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                private
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                # set the starting point of the templates search to the lib/textools/templates folder
         | 
| 57 | 
            +
                def self.source_root
         | 
| 58 | 
            +
                  File.join(File.dirname(__FILE__),'templates')
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            end
         | 
| @@ -0,0 +1,43 @@ | |
| 1 | 
            +
            require 'test/unit'
         | 
| 2 | 
            +
            require 'textools/commands'
         | 
| 3 | 
            +
            require 'tmpdir'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Textools
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              class TestApp < Test::Unit::TestCase
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def test_create
         | 
| 10 | 
            +
                  Dir.mktmpdir do |dir|
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    project = 'test'
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    App.new([],{'working_directory' => dir}).create(project)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    assert Dir.exists?(File.join(dir,project))
         | 
| 17 | 
            +
                    assert File.exists?(File.join(dir,project,'.gitignore')), "no .gitignore"
         | 
| 18 | 
            +
                    assert File.exists?(File.join(dir,project,'clean.bat')), "no clean.bat file"
         | 
| 19 | 
            +
                    assert !File.exists?(File.join(dir,project,'clean.rb')), "no clean.rb file"
         | 
| 20 | 
            +
                    assert File.exists?(File.join(dir,project,'clean.sh')), "no clean.sh file"
         | 
| 21 | 
            +
                    assert Dir.exists?(File.join(dir,project,'images')), "no images folder"
         | 
| 22 | 
            +
                    assert Dir.exists?(File.join(dir,project,'includes')), "no includes folder"
         | 
| 23 | 
            +
                    assert Dir.exists?(File.join(dir,project,'.git')), "no git folder"
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def test_clean
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  Dir.mktmpdir do |dir|
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    File.open(File.join(dir,"test.pdf"), "w") do |f|
         | 
| 32 | 
            +
                      f << "asdf"
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    App.new([],{'working_directory' => dir}).clean
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    assert !File.exists?(File.join(dir,"test.pdf")),"test.pdf should be deleted"
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            end
         | 
    
        data/textools.gemspec
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $:.push File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            require "textools/version"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name        = "textools"
         | 
| 7 | 
            +
              s.version     = Textools::VERSION
         | 
| 8 | 
            +
              s.authors     = ["Simon Harrer"]
         | 
| 9 | 
            +
              s.email       = ["simon.harrer@gmail.com"]
         | 
| 10 | 
            +
              s.homepage    = "https://github.com/simonharrer/textools"
         | 
| 11 | 
            +
              s.summary     = %q{Command Line Tools for Generating and Maintaining LaTeX Projects.}
         | 
| 12 | 
            +
              s.description = s.summary
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              s.rubyforge_project = "textools"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              s.files         = `git ls-files`.split("\n")
         | 
| 17 | 
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 18 | 
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 19 | 
            +
              s.require_paths = ["lib"]
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              s.add_runtime_dependency "thor"
         | 
| 22 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,70 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: textools
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
              prerelease: 
         | 
| 6 | 
            +
            platform: ruby
         | 
| 7 | 
            +
            authors:
         | 
| 8 | 
            +
            - Simon Harrer
         | 
| 9 | 
            +
            autorequire: 
         | 
| 10 | 
            +
            bindir: bin
         | 
| 11 | 
            +
            cert_chain: []
         | 
| 12 | 
            +
            date: 2012-03-06 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              name: thor
         | 
| 16 | 
            +
              requirement: &29282088 !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: '0'
         | 
| 22 | 
            +
              type: :runtime
         | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              version_requirements: *29282088
         | 
| 25 | 
            +
            description: Command Line Tools for Generating and Maintaining LaTeX Projects.
         | 
| 26 | 
            +
            email:
         | 
| 27 | 
            +
            - simon.harrer@gmail.com
         | 
| 28 | 
            +
            executables:
         | 
| 29 | 
            +
            - textools
         | 
| 30 | 
            +
            extensions: []
         | 
| 31 | 
            +
            extra_rdoc_files: []
         | 
| 32 | 
            +
            files:
         | 
| 33 | 
            +
            - .gitignore
         | 
| 34 | 
            +
            - Gemfile
         | 
| 35 | 
            +
            - README.md
         | 
| 36 | 
            +
            - Rakefile
         | 
| 37 | 
            +
            - bin/textools
         | 
| 38 | 
            +
            - lib/textools.rb
         | 
| 39 | 
            +
            - lib/textools/commands.rb
         | 
| 40 | 
            +
            - lib/textools/templates/.gitignore
         | 
| 41 | 
            +
            - lib/textools/templates/clean.bat
         | 
| 42 | 
            +
            - lib/textools/templates/clean.sh
         | 
| 43 | 
            +
            - lib/textools/version.rb
         | 
| 44 | 
            +
            - test/textools/test_commands.rb
         | 
| 45 | 
            +
            - textools.gemspec
         | 
| 46 | 
            +
            homepage: https://github.com/simonharrer/textools
         | 
| 47 | 
            +
            licenses: []
         | 
| 48 | 
            +
            post_install_message: 
         | 
| 49 | 
            +
            rdoc_options: []
         | 
| 50 | 
            +
            require_paths:
         | 
| 51 | 
            +
            - lib
         | 
| 52 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 53 | 
            +
              none: false
         | 
| 54 | 
            +
              requirements:
         | 
| 55 | 
            +
              - - ! '>='
         | 
| 56 | 
            +
                - !ruby/object:Gem::Version
         | 
| 57 | 
            +
                  version: '0'
         | 
| 58 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 59 | 
            +
              none: false
         | 
| 60 | 
            +
              requirements:
         | 
| 61 | 
            +
              - - ! '>='
         | 
| 62 | 
            +
                - !ruby/object:Gem::Version
         | 
| 63 | 
            +
                  version: '0'
         | 
| 64 | 
            +
            requirements: []
         | 
| 65 | 
            +
            rubyforge_project: textools
         | 
| 66 | 
            +
            rubygems_version: 1.8.11
         | 
| 67 | 
            +
            signing_key: 
         | 
| 68 | 
            +
            specification_version: 3
         | 
| 69 | 
            +
            summary: Command Line Tools for Generating and Maintaining LaTeX Projects.
         | 
| 70 | 
            +
            test_files: []
         |