Init commit.

This commit is contained in:
Shota Shimazu 2017-04-03 01:36:11 +09:00
commit aa72b55cb3
16 changed files with 221 additions and 0 deletions

7
.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
.DS_Store
/.build
/Packages
/*.xcodeproj
# Ignore editor settings
.vscode/

10
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,10 @@
image: kylef/swiftenv
before_script:
- swiftenv install https://swift.org/builds/swift-3.1-release/ubuntu1604/swift-3.1-RELEASE/swift-3.1-RELEASE-ubuntu16.04.tar.gz
test:
script:
- swift build
tags:
- vapor

32
FileKit.podspec Normal file
View File

@ -0,0 +1,32 @@
#
# Be sure to run `pod lib lint FileKit.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = 'FileKit'
s.version = '0.1.0'
s.summary = 'A unix-command like file manager written in Swift.'
# This description is used to generate tags and improve search results.
# * Think: What does it do? Why did you write it? What is the focus?
# * Try to keep it short, snappy and to the point.
# * Write the description between the DESC delimiters below.
# * Finally, don't worry about the indent, CocoaPods strips it!
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
s.homepage = 'https://git.happinesslab.xyz/PINNA/FileKit'
s.license = { :type => 'ISC', :file => 'LICENSE' }
s.author = { 'shotastage' => 'hornet.live.mf@gmail.com' }
s.source = { :git => 'https://git.happinesslab.xyz/PINNA/FileKit.git', :tag => s.version.to_s }
s.ios.deployment_target = '9.0'
s.source_files = 'Sources/**/*'
end

7
Package.pins Normal file
View File

@ -0,0 +1,7 @@
{
"autoPin": true,
"pins": [
],
"version": 1
}

5
Package.swift Normal file
View File

@ -0,0 +1,5 @@
import PackageDescription
let package = Package(
name: "FileKit"
)

18
README.md Normal file
View File

@ -0,0 +1,18 @@
# 🗂 FileKit
FileKit is file utilities for Swift.
It enables to mange files or directories efficiently and easily.
# ⌘ APIs
| Function | |
|:--|:--|
| `func pwd() -> String` | Get current directory path as a string.|
| `func home() -> Strings` | Get home directory path.|
| `func isFile(file: String) -> Bool` | Check the file exists or not. |
| `func isDir(path: String) -> Bool ` | Check the directory exists or not.|
| `func cd(path: String) throws`| Change directory like a `cd` command.|
| `func mkdir(path: String) throws` | Make directory. |
| `func rm(target: String) throws`| Remove directory or file. |
| `func mv(from fromPath: String, to toPath: String)`| Move file or directory.|
| `func touch(_ path: String) throws`| Create empty file. |

7
Sources/Errors.swift Normal file
View File

@ -0,0 +1,7 @@
import Foundation
enum FileError: Error {
case NotExists
case PermissionError
case Unkown(String)
}

View File

@ -0,0 +1,24 @@
extension FileKit: BasicFileCommands {
public func cd(_ path: String) throws {
if !FileKit.fm.changeCurrentDirectoryPath(path) {
if !FileKit.fm.fileExists(atPath: path) {
throw FileError.NotExists
} else {
throw FileError.Unkown("Failed to change current direcotry.")
}
}
}
public func mkdir(_ path: String) throws {
try FileKit.fm.createDirectory(atPath: path, withIntermediateDirectories: true, attributes: nil)
}
public func rm(_ target: String) throws {
try FileKit.fm.removeItem(atPath: target)
}
public func mv(from fromPath: String, to toPath: String) throws {
try FileKit.fm.moveItem(atPath: fromPath, toPath: toPath)
}
}

View File

@ -0,0 +1,27 @@
import Foundation
// Show file information
extension FileKit {
public func pwd() -> String {
let path = FileKit.fm.currentDirectoryPath
return path
}
public func home() -> String {
let path = NSHomeDirectory()
return path
}
}
// Check file or directory existence
extension FileKit {
public var isFile: Bool {
return FileKit.fm.fileExists(atPath: self.path)
}
public var isDir: Bool {
return FileKit.fm.fileExists(atPath: self.path)
}
}

View File

@ -0,0 +1,13 @@
import Foundation
// Utils
extension FileKit {
public func touch(_ path: String) throws {
let empty = ""
do {
try empty.write(toFile: path, atomically: true, encoding: String.Encoding.utf8)
} catch let error as NSError {
print("failed to write: \(error)")
}
}
}

31
Sources/FileKit.swift Normal file
View File

@ -0,0 +1,31 @@
import Foundation
public class FileKit {
// Define typealias
public typealias Path = String
// Path
internal var path: String
// Foundational File Manager
internal static var fm = FileManager.default
// Initializers
public init() {
self.path = ""
}
public init(_ path: String) {
self.path = path
}
}
// Internet file management
extension FileKit {
public func curlO(url: String) {
return
}
}

View File

@ -0,0 +1,12 @@
import Foundation
public protocol FileKitProtocol {
//
}
protocol BasicFileCommands {
func cd(_ path: String) throws
func mkdir(_ path: String) throws
func rm(_ target: String) throws
func mv(from fromPath: String, to toPath: String) throws
}

9
Sources/Root.swift Normal file
View File

@ -0,0 +1,9 @@
import Foundation
struct UbuntuFileSystem {
let formatType = "ext4"
let root = "/"
let settings = "/etc"
let optional = "/opt"
}

View File

@ -0,0 +1,7 @@
import Foundation
import XCTest
@testable import FileKit // Test target
public func FileKitTest() {
// NO TEST NOW
}

View File

@ -0,0 +1,7 @@
import XCTest
class FileKitTests: XCTestCase {
func testRunSpec() {
testFileKit()
}
}

5
Tests/LinuxMain.swift Normal file
View File

@ -0,0 +1,5 @@
#if os(Linux)
import XCTest
#endif