lib: Add basic file class
The class resolves the path to the ocarina directory based on the file hint provided. NOTE: compile-debug.good and compile.good resolve paths to my home directory. Other users will need to change the values for the test to pass. Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
307bc88cb6
commit
e0a32c10ac
|
@ -9,6 +9,5 @@
|
||||||
ocarina.bin
|
ocarina.bin
|
||||||
.sconsign.dblite
|
.sconsign.dblite
|
||||||
bin/
|
bin/
|
||||||
lib/
|
|
||||||
PKGBUILD
|
PKGBUILD
|
||||||
!PKGBUILD.tmpl
|
!PKGBUILD.tmpl
|
||||||
|
|
6
config
6
config
|
@ -25,13 +25,19 @@ class Config:
|
||||||
self.DEBUG = CONFIG_DEBUG
|
self.DEBUG = CONFIG_DEBUG
|
||||||
self.ENV = CONFIG_ENV
|
self.ENV = CONFIG_ENV
|
||||||
self.FILE = False
|
self.FILE = False
|
||||||
|
self.TEST = False
|
||||||
|
|
||||||
|
def package(self, name):
|
||||||
|
env.ParseConfig("pkg-config --cflags --libs %s" % name)
|
||||||
|
|
||||||
def reconfigure(self):
|
def reconfigure(self):
|
||||||
env.Replace( CCFLAGS = self.ENV )
|
env.Replace( CCFLAGS = self.ENV )
|
||||||
if self.FILE: env.Append( CCFLAGS = "-DCONFIG_FILE" )
|
if self.FILE: env.Append( CCFLAGS = "-DCONFIG_FILE" )
|
||||||
|
if self.TEST: env.Append( CCFLAGS = "-DCONFIG_TEST" )
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.FILE = False
|
self.FILE = False
|
||||||
|
self.TEST = False
|
||||||
self.reconfigure()
|
self.reconfigure()
|
||||||
|
|
||||||
CONFIG = Config()
|
CONFIG = Config()
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2013 (c) Bryan Schumaker.
|
||||||
|
*/
|
||||||
|
#ifndef OCARINA_FILE_H
|
||||||
|
#define OCARINA_FILE_H
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
enum FileLocHint {
|
||||||
|
FILE_TYPE_CONFIG,
|
||||||
|
FILE_TYPE_DATA,
|
||||||
|
FILE_TYPE_LEGACY,
|
||||||
|
};
|
||||||
|
|
||||||
|
class File {
|
||||||
|
private:
|
||||||
|
FileLocHint hint;
|
||||||
|
std::string filepath;
|
||||||
|
|
||||||
|
public:
|
||||||
|
File(std::string, FileLocHint);
|
||||||
|
const char *get_filepath();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* OCARINA_FILE_H */
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
Import("env", "CONFIG")
|
||||||
|
|
||||||
|
build = []
|
||||||
|
|
||||||
|
if CONFIG.FILE:
|
||||||
|
CONFIG.package("glib-2.0")
|
||||||
|
build += [ env.Object("file.cpp") ]
|
||||||
|
|
||||||
|
Return("build")
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2013 (c) Bryan Schumaker.
|
||||||
|
*/
|
||||||
|
#include <file.h>
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_TEST
|
||||||
|
#define OCARINA_DIR "ocarina-test"
|
||||||
|
#elif CONFIG_DEBUG
|
||||||
|
#define OCARINA_DIR "ocarina-debug"
|
||||||
|
#else
|
||||||
|
#define OCARINA_DIR "ocarina"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
File :: File(std::string path, FileLocHint file_hint)
|
||||||
|
: hint(file_hint)
|
||||||
|
{
|
||||||
|
std::string dir;
|
||||||
|
|
||||||
|
switch (file_hint) {
|
||||||
|
case FILE_TYPE_CONFIG:
|
||||||
|
dir = g_get_user_config_dir();
|
||||||
|
break;
|
||||||
|
case FILE_TYPE_DATA:
|
||||||
|
dir = g_get_user_data_dir();
|
||||||
|
break;
|
||||||
|
case FILE_TYPE_LEGACY:
|
||||||
|
dir = g_get_home_dir();
|
||||||
|
}
|
||||||
|
|
||||||
|
dir += "/";
|
||||||
|
switch (file_hint) {
|
||||||
|
case FILE_TYPE_CONFIG:
|
||||||
|
case FILE_TYPE_DATA:
|
||||||
|
dir += OCARINA_DIR;
|
||||||
|
break;
|
||||||
|
case FILE_TYPE_LEGACY:
|
||||||
|
dir += ".";
|
||||||
|
dir += OCARINA_DIR;
|
||||||
|
}
|
||||||
|
|
||||||
|
filepath = dir + "/" + path;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *File :: get_filepath()
|
||||||
|
{
|
||||||
|
return filepath.c_str();
|
||||||
|
}
|
|
@ -49,6 +49,7 @@ Export("Test")
|
||||||
scripts = [ "basic", "file" ]
|
scripts = [ "basic", "file" ]
|
||||||
for s in scripts:
|
for s in scripts:
|
||||||
CONFIG.reset()
|
CONFIG.reset()
|
||||||
|
CONFIG.TEST = True
|
||||||
SConscript("%s/Sconscript" % s)
|
SConscript("%s/Sconscript" % s)
|
||||||
|
|
||||||
Default("tests")
|
Default("tests")
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
Import("Test", "CONFIG")
|
||||||
|
|
||||||
|
CONFIG.FILE = True
|
||||||
|
|
||||||
|
Test("file", "compile.cpp")
|
|
@ -0,0 +1,3 @@
|
||||||
|
File path is: /home/anna/.config/ocarina-test/test.file
|
||||||
|
File path is: /home/anna/.local/share/ocarina-test/test.file
|
||||||
|
File path is: /home/anna/.ocarina-test/test.file
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Test that a file object can be created.
|
||||||
|
*/
|
||||||
|
#include <file.h>
|
||||||
|
#include <print.h>
|
||||||
|
|
||||||
|
void test_filepath(FileLocHint hint)
|
||||||
|
{
|
||||||
|
File file("test.file", hint);
|
||||||
|
print("File path is: %s\n", file.get_filepath());
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
test_filepath(FILE_TYPE_CONFIG);
|
||||||
|
test_filepath(FILE_TYPE_DATA);
|
||||||
|
test_filepath(FILE_TYPE_LEGACY);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
File path is: /home/anna/.config/ocarina-test/test.file
|
||||||
|
File path is: /home/anna/.local/share/ocarina-test/test.file
|
||||||
|
File path is: /home/anna/.ocarina-test/test.file
|
Loading…
Reference in New Issue